对象存储OSS支持通过多种方式上传文件。对于大文件(超过5 GB的文件),可能存在上传失败或者上传慢的情况。此时您可以通过分片上传、断点续传、ossbrowser工具、ossutil工具等多种方式上传大文件。
上传方式
单个文件的大小限制为0~48.8 TB。当您需要上传大文件或一次性上传较多文件时,若遇到以下两种情况,可以采用多种方式上传大文件到OSS。
单个文件超过5GB,且无法通过OSS控制台上传、简单上传、表单上传、追加上传的方式上传单个文件。
文件虽然小于5GB,但网络环境较差,经常因网络原因导致连接超时或连接断开等情况,上传容易失败。
方式一:分片上传或断点续传
适用场景如下:
单个文件大小超过5 GB。
流式上传:当对文件大小还不确定的情况下,就开始上传。比如视频监控等行业的云录像应用。
恶劣的网络环境:需要断点续传大文件。如手机端,当出现上传失败的时候,可以对失败的分片进行独立的重试,而不需要重新上传其他的分片。
加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个分片以加快上传速度。
方式二:使用ossbrowser工具上传
ossbrowser工具的使用说明如下:
ossbrowser支持临时授权码登录。
当前登录ossbrowser的AK拥有RAM的配置操作权限时,可以使用简化Policy授权。
上传文件较多时,可通过增加上传任务数,提高上传速度。
ossbrowser默认使用分片上传和断点续传上传文件,上传文件最大不能超过48.8 TB。
更多信息,请参见ossbrowser 2.0。
方式三:使用ossutil工具上传
ossutil工具的使用说明如下:
可以使用ossutil命令行工具的
cp
命令上传大文件。可通过
--bigfile-threshold
参数控制分片并发上传的文件大小阈值。ossutil上传单个或多个大文件时,可以通过
-jobs
项和-parallel
项,控制并发,优化上传性能。如果需要上传大批量的文件(包括大文件)到OSS,也可以使用ossimport工具。
当文件数目不是特别多,建议优先使用ossutil。
更多信息,请参见上传文件。
常见问题
上传大文件的常见问题如下:
使用简单上传(PutObject)上传大文件无法成功,原因可能如下。
文件大小超过5 GB。 您可以使用ossutil,通过分块上传的接口将大文件分成多个小的分块进行上传。
文件小于5 GB,可能由于网络环境原因,出现上传小文件正常,但上传较大文件时,请求发出去就收不到任何响应,直至超时的情况。这有可能是服务器的MTU设置较大导致的。您可在ECS上执行
netstat -i
获取当前的MTU设置值。如下图获得默认的内外网网卡的MTU都是1500。将本机的MTU改小一些。Linux下通过
ip link set dev eth0 mtu 1470
命令修改MTU(此处以ECS通过eth0内网访问OSS调整MTU值为1470)。使用分片上传接口或ossutil工具。
上传单个大文件时能不能并发上传。
使用ossutil上传时,可以通过
--bigfile-threshold
、-job
s和-parallel
选项进行上传。使用OSS API、SDK的分片上传接口时,可以根据需要编写并发调用上传接口的代码。同时,部分SDK也已实现分片上传的并发控制,如Java SDK通过taskNum,Python SDK通过num_threads参数控制。