cp命令用於在本地與OSS之間,或在OSS內部傳輸檔案或目錄。該命令統一處理上傳、下載和拷貝操作,並支援並發傳輸與斷點續傳。
使用cp命令前,請確保已完成 ossutil的安裝和配置。
注意事項
在執行任何上傳、下載或拷貝操作之前,請確保您使用的訪問憑證所關聯的 RAM 使用者或 RAM 角色擁有對目標 Bucket 和檔案的相應操作許可權,具體授權操作請參見為RAM使用者授予自訂的權限原則。
工作機制
ossutil cp 命令根據源路徑(source)和目標路徑(destination)的類型,自動判斷執行上傳、下載或拷貝操作。
使用cp命令檔案時,ossutil會根據檔案大小自動選擇不同的傳輸方式:
當檔案大小小於斷點續傳檔案的大小閾值(可通過
--bigfile-threshold選項指定,預設值為 100 MB)時,直接一次性完成檔案傳輸。當檔案大小大於或等於該閾值時使用斷點續傳。若上傳意外中斷,已傳輸的部分將作為片段(Part)臨時儲存在Bucket中。為避免產生儲存費用,需定期清理這些片段。可手動刪除片段,或配置生命週期規則自動刪除。
斷點續傳操作失敗時,ossutil會自動建立名為.ossutil_checkpoint的目錄,並在該目錄下記錄checkpoint資訊,斷點續傳成功後會刪除該目錄。還可以配置--checkpoint-dir參數指定斷點續傳記錄資訊所在的目錄。
上傳檔案
通過 cp(上傳檔案)命令,可以將本地的檔案、圖片、視頻等各類資源上傳到指定的 OSS 儲存空間中。
單個檔案上傳:將指定路徑的檔案上傳到 Bucket。
批量上傳:上傳整個目錄及其所有子目錄和檔案。
條件式篩選:結合
--include和--exclude選項,可以實現精細化的批量上傳。例如,僅上傳所有.log檔案,或排除所有臨時檔案(.tmp)。
下載檔案
通過 cp(下載檔案)命令,可以將已上傳至OSS的檔案、圖片、視頻等資源下載到本地時,支援下載多個檔案、下載時限速,或者在已開啟版本控制的Bucket內下載指定版本檔案。
單個檔案下載:下載指定檔案。
批量下載:下載 Bucket 中的整個目錄結構到本地。
下載指定版本:如果您的 Bucket 開啟了版本控制,可以下載檔案的特定歷史版本。
拷貝檔案
通過cp(拷貝檔案)命令,在不改變檔案內容的情況下,將同地區下的Bucket內的檔案複製到目標Bucket,或者複製到當前Bucket的其他目錄。
跨 Bucket 拷貝:將同一地區(Region)下的一個 Bucket 內的檔案,複製到另一個 Bucket。
Bucket 內拷貝(移動/重新命名):將檔案從 Bucket 內的一個目錄複寫到另一個目錄。這常被用作實現檔案的“移動”或“重新命名”操作(本質是拷貝+刪除原檔案)。
ossutil cp 命令不直接支援跨地區拷貝。如果需要在不同地區的Bucket間拷貝檔案,建議使用跨地區複製功能。
應用於生產環境
並發效能調優
當預設並發數達不到使用者的效能要求時,可以調整-j,--jobs和--parallel選項來升降效能。預設情況下,ossutil根據檔案大小來計算parallel。當批量傳輸大檔案時,實際的並發數為jobs數乘以parallel數。
若執行命令的ECS或伺服器的資源(網路、記憶體、CPU)有限,建議將並發數調低(如100以下)。如果資源未佔滿,可適當增加並發數。
並發數過高可能因線程切換開銷和資源競爭導致效能下降,甚至引發EOF錯誤。請根據機器的實際資源狀況調整-j,--jobs和--parallel。進行效能壓測時,建議從較低的並發數開始,逐步增加以找到最佳值。
流量控制
使用 --maxupspeed 或 --maxdownspeed 參數可限制上傳或下載的速率,以避免佔用過多頻寬。