對象存儲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參數控制。