如何上傳超過5 GB的大文件到OSS
對象存儲OSS支持通過多種方式上傳文件。對于大文件(超過5 GB的文件),可能存在上傳失敗或者上傳慢的情況。此時您可以通過分片上傳、斷點續(xù)傳、ossbrowser工具、ossutil工具等多種方式上傳大文件。
上傳方式
單個文件的大小限制為0~48.8 TB。當(dāng)您需要上傳大文件或一次性上傳較多文件時,若遇到以下兩種情況,可以采用多種方式上傳大文件到OSS。
單個文件超過5GB,且無法通過OSS控制臺上傳、簡單上傳、表單上傳、追加上傳的方式上傳單個文件。
文件雖然小于5GB,但網(wǎng)絡(luò)環(huán)境較差,經(jīng)常因網(wǎng)絡(luò)原因?qū)е逻B接超時或連接斷開等情況,上傳容易失敗。
方式一:分片上傳或斷點續(xù)傳
適用場景如下:
單個文件大小超過5 GB。
流式上傳:當(dāng)對文件大小還不確定的情況下,就開始上傳。比如視頻監(jiān)控等行業(yè)的云錄像應(yīng)用。
惡劣的網(wǎng)絡(luò)環(huán)境:需要斷點續(xù)傳大文件。如手機端,當(dāng)出現(xiàn)上傳失敗的時候,可以對失敗的分片進行獨立的重試,而不需要重新上傳其他的分片。
加速上傳:要上傳到OSS的本地文件很大的時候,可以并行上傳多個分片以加快上傳速度。
更多信息,請參見:分片上傳和斷點續(xù)傳上傳。
方式二:使用ossbrowser工具上傳
ossbrowser工具的使用說明如下:
ossbrowser支持臨時授權(quán)碼登錄。
當(dāng)前登錄ossbrowser的AK擁有RAM的配置操作權(quán)限時,可以使用簡化Policy授權(quán)。
上傳文件較多時,可通過增加上傳任務(wù)數(shù),提高上傳速度。
ossbrowser默認使用分片上傳和斷點續(xù)傳上傳文件,上傳文件最大不能超過48.8 TB。
更多信息,請參見ossbrowser 2.0。
方式三:使用ossutil工具上傳
ossutil工具的使用說明如下:
可以使用ossutil命令行工具的
cp
命令上傳大文件。可通過
--bigfile-threshold
參數(shù)控制分片并發(fā)上傳的文件大小閾值。ossutil上傳單個或多個大文件時,可以通過
-jobs
項和-parallel
項,控制并發(fā),優(yōu)化上傳性能。如果需要上傳大批量的文件(包括大文件)到OSS,也可以使用ossimport工具。
當(dāng)文件數(shù)目不是特別多,建議優(yōu)先使用ossutil。
更多信息,請參見上傳文件。
常見問題
上傳大文件的常見問題如下:
使用簡單上傳(PutObject)上傳大文件無法成功,原因可能如下。
文件大小超過5 GB。 您可以使用ossutil,通過分塊上傳的接口將大文件分成多個小的分塊進行上傳。
文件小于5 GB,可能由于網(wǎng)絡(luò)環(huán)境原因,出現(xiàn)上傳小文件正常,但上傳較大文件時,請求發(fā)出去就收不到任何響應(yīng),直至超時的情況。這有可能是服務(wù)器的MTU設(shè)置較大導(dǎo)致的。您可在ECS上執(zhí)行
netstat -i
獲取當(dāng)前的MTU設(shè)置值。如下圖獲得默認的內(nèi)外網(wǎng)網(wǎng)卡的MTU都是1500。將本機的MTU改小一些。Linux下通過
ip link set dev eth0 mtu 1470
命令修改MTU(此處以ECS通過eth0內(nèi)網(wǎng)訪問OSS調(diào)整MTU值為1470)。使用分片上傳接口或ossutil工具。
上傳單個大文件時能不能并發(fā)上傳。
使用ossutil上傳時,可以通過
--bigfile-threshold
、-job
s和-parallel
選項進行上傳。使用OSS API、SDK的分片上傳接口時,可以根據(jù)需要編寫并發(fā)調(diào)用上傳接口的代碼。同時,部分SDK也已實現(xiàn)分片上傳的并發(fā)控制,如Java SDK通過taskNum,Python SDK通過num_threads參數(shù)控制。