在網路不穩定的情況下,串連中斷可能導致檔案傳輸失敗,使用 ossutil 2.0 的斷點續傳功能從中斷的地方繼續上傳或下載,從而提升傳輸效率。在 ossutil 2.0 中,預設情況下不啟用斷點續傳。如果需要使用此功能,請在執行cp命令時指定 --checkpoint-dir 參數來啟用斷點續傳。
前提條件
斷點續傳機制
斷點續傳是將檔案劃分為多個較小的片段進行傳輸,支援在傳輸中斷時從上次中止的位置繼續傳輸,從而確保資料的完整性和傳輸的高效性。
啟動傳輸:在傳輸檔案時指定
--checkpoint-dir參數,啟用斷點續傳功能。資訊儲存:啟用斷點續傳功能後, ossutil 會將傳輸進度的關鍵資訊(包括檔案名稱、大小、
upload id以及已上傳分區等)儲存到checkpoint-dir下的.ucp檔案中中斷恢複:如果傳輸過程因網路問題或其他原因中斷,可以重新啟動傳輸。ossutil 會讀取
checkpoint-dir中儲存的.ucp檔案,通過之前儲存的進度資訊來確定哪些分區已經成功傳輸,哪些分區需要繼續傳輸。繼續傳輸:ossutil 根據已傳輸分區的資訊,將未傳輸的分區繼續傳輸。
參數說明
參數 | 說明 |
--checkpoint-dir | 用於指定斷點續傳資訊的儲存目錄。 |
樣本
上傳單個檔案
下面的樣本展示了如何使用 ossutil 的 cp 命令將本地檔案 upload.rar 上傳到指定的 bucket 儲存空間。上傳操作開始後,將在 your-checkpoint-dir 目錄下產生一個 .ucp 檔案,用於儲存上傳進度資訊。
ossutil cp upload.rar oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\如果由於網路中斷、磁碟讀寫異常等原因導致檔案上傳被中斷,您可能會看到如下錯誤資訊:
Error: upload failed, upload id: 1F71C936CF7B423493BC7A664DB3FD82, cause: operation error UploadPart: Put "https://bucket.oss-cn-hangzhou.aliyuncs.com/upload.rar?partNumber=15&uploadId=1F71C936CF7B423493BC7A664DB3FD82": dial tcp: lookup bucket.oss-cn-hangzhou.aliyuncs.com: no such host在這種情況下,您可以通過執行相同的上傳命令,利用 .ucp 檔案中儲存的資訊,繼續上傳檔案:
ossutil cp upload.rar oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\繼續傳輸開始後,ossutil 會讀取儲存在 checkpoint-dir 目錄下的上傳進度資訊,從未上傳的分區開始上傳:
Total 1 objects,6.833 GiB, Upload... done:(0 objects), 3.000%, avg 4.740 MiB/s 批量上傳檔案
下面的樣本展示了如何使用 ossutil 的 cp 命令將本地 local_directory 目錄下的檔案批量上傳至指定的儲存空間(bucket)。在此過程中:
-u參數用於僅上傳那些比目標檔案更新的源檔案。-r參數則允許遞迴複製整個目錄及其所有子目錄中的檔案。
上傳過程中,進度資訊會被儲存在 your-checkpoint-dir 目錄中產生的一個 .ucp 檔案裡。
ossutil cp -u -r local_directory oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\如果由於網路中斷、磁碟讀寫異常等原因導致檔案上傳被中斷,您可能會看到如下錯誤資訊:
Error occurs. See more information in file: /ossutil-2.0.6-beta.01091200-mac-arm64/ossutil_output/ossutil_report_20250122_115545_96481.report
FinishWithError: Total 2 files, 7836503730 B, Upload done:(0 objects) failed:(2 objects, 7836503730 B)遇到這種情況,您可以再次執行相同的命令,從 .ucp 檔案中讀取資訊,繼續上傳。
ossutil cp -u -r local_directory oss://bucket --checkpoint-dir D:\\your-checkpoint-dir\繼續傳輸開始後,ossutil 會讀取儲存在 checkpoint-dir 目錄下的上傳進度資訊,從未上傳的分區開始上傳:
Total 2 files,7.298 GiB, Upload... done:(0 objects), 1.645%, avg 17.521 MiB/s下載單個檔案
下面的樣本展示了如何使用ossutil的 cp 命令將遠程Bucket中的download.rar檔案下載到本地目前的目錄下,並命名為download.rar。檔案下載操作開始後,將在your-checkpoint-dir/.ossutil_checkpoint目錄下產生.dcp 檔案,用於儲存下載進度資訊。
ossutil cp oss://bucket/download.rar ./download.rar --checkpoint-dir D:\\your-checkpoint-dir\批量下載檔案
下面的樣本展示了如何使用ossutil的cp命令將遠程Bucket中的folder目錄下所有檔案下載到本地當前local_directory 目錄下。檔案下載操作開始後,將在your-checkpoint-dir/.ossutil_checkpoint目錄下產生.dcp 檔案,用於儲存下載進度資訊。
-u參數用於僅下載那些比目標檔案更新的源檔案。-r參數則允許遞迴複製整個目錄及其所有子目錄中的檔案。
ossutil cp -u -r oss://bucket/folder ./local_director --checkpoint-dir D:\\your-checkpoint-dir\