Object Storage Service支援通過多種方式上傳檔案。對於大檔案(超過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參數控制。