sync命令用於將本地檔案同步到OSS。
注意事項
要將本地檔案同步到OSS,您必須具有oss:PutObject、oss:ListObjects和oss:DeleteObject許可權。具體操作,請參見為RAM使用者授權自訂的權限原則。
Binary名稱
從ossutil 1.6.16版本開始,命令列中Binary名稱支援直接使用ossutil,您無需根據系統重新整理Binary名稱。如果您的ossutil版本低於1.6.16,則需要根據系統重新整理Binary名稱。更多資訊,請參見命令列工具ossutil命令參考。
檔案數量
通過sync命令執行同步任務時,如果沒有攜帶--delete選項,則單次同步任務同步的檔案個數無限制。如果攜帶了--delete選項,則單次同步任務最多可同步100萬個檔案。當同步的檔案個數超出100萬時,將報錯over max sync numbers 1000000.。
sync命令與cp命令的區別
sync命令強制以遞迴的方式遍曆指定檔案夾內所有檔案或子檔案夾。cp命令需增加-r選項才會進行遞迴操作。
通過sync命令將資料同步到OSS時,ossutil支援通過--delete選項將目的端存在而源端不存在的檔案都刪除,僅保留本次同步的檔案。cp命令不支援--delete選項。
sync不支援--version-id選項,無法在已開啟版本控制的Bucket內同步歷史版本檔案。cp命令支援--version-id選項。
除以上區別外,sync命令與cp命令用法類似。有關cp命令的用法及樣本,請參見cp(上傳檔案)。
命令格式
ossutil sync file_url cloud_url
[-f --force]
[-u --update]
[--delete]
[--enable-symlink-dir]
[--disable-all-symlink]
[--disable-ignore-error]
[--only-current-dir]
[--output-dir <value>]
[--bigfile-threshold <value>]
[--part-size <value>]
[--checkpoint-dir <value>]
[--encoding-type <value>]
[--snapshot-path <value>]
[--include <value>]
[--exclude <value>]
[--meta <value>]
[--acl <value>]
[--maxupspeed <value>]
[--disable-crc64]
[--payer <value>]
[-j, --job <value>]
[--parallel <value>]
[--retry-times <value>]
[--tagging <value>]
參數及選項說明如下:
配置項 | 說明 |
file_url | 待同步的本地檔案夾路徑。例如Linux系統檔案路徑 |
cloud_url | OSS檔案夾路徑。格式為 |
-f --force | 強制操作,不進行詢問提示。 |
-u,--update | 只有當目標檔案不存在,或源檔案的最後修改時間晚於目標檔案時,ossutil才會執行同步操作。 |
--delete | 刪除目的端指定路徑下的其他檔案,僅保留本次同步的檔案。 警告 建議您使用--delete選項前開啟版本控制,防止資料誤刪除。 |
--enable-symlink-dir | 同步連結子目錄。 |
--disable-all-symlink | 同步目錄時,忽略所有的連結子檔案以及連結子目錄。 |
--disable-ignore-error | 大量操作時不忽略錯誤。 |
--only-current-dir | 僅同步目前的目錄下的檔案,忽略子目錄及子目錄下的檔案。 |
--output-dir | 指定輸出檔案所在的目錄。輸出檔案是指批量同步檔案出錯時產生的report檔案,預設儲存在目前的目錄下的ossutil_output目錄。 |
-bigfile-threshold | 設定斷點續傳檔案的大小閾值,單位為位元組。 預設值:100 MB 取值範圍:0~9223372036854775807 |
--part-size | 設定分區大小,單位為位元組。預設情況下ossutil會根據檔案大小自行計算合適的分區大小值。 取值範圍:1~9223372036854775807 |
--checkpoint-dir | 指定斷點續傳記錄資訊所在的目錄。斷點續傳操作失敗時,ossutil會自動建立名為 |
--encoding-type | 檔案名稱的編碼方式。取值為url。如果不指定該選項,則表示檔案名稱未經過編碼。 |
--snapshot-path | 指定儲存同步檔案時的快照資訊所在的目錄。在下一次同步檔案時,ossutil會讀取指定目錄下的快照資訊進行增量同步處理。 |
--include | 包含符合指定條件的所有檔案。 更多資訊,請參見include和exclude選項。 |
--exclude | 不包含任何符合指定條件的檔案。 更多資訊,請參見include和exclude選項。 |
--meta | 設定檔案的中繼資料,格式為 |
--acl | 檔案的讀寫權限ACL。取值如下:
|
--maxupspeed | 最大上傳速度,單位為KB/s。預設值為0,表示不限制上傳速度。 |
--disable-crc64 | 關閉CRC64資料校正。 |
--payer | 請求的支付方式。如果希望訪問指定路徑下的資源產生的流量、請求次數等費用由要求者支付,請將此選項的值設定為requester。 |
-j,--job | 多檔案操作時的並發任務數,預設值為3,取值範圍為1~10000。 |
--parallel | 單檔案操作時的並發任務數,取值範圍為1~10000。 如果不設定此選項,預設由ossutil根據操作類型和檔案大小自行決定。 |
--retry-times | 發生錯誤後的重試次數。預設值為10,取值範圍為1~500。 |
--tagging | 檔案的標籤資訊,格式為 |
使用樣本
本地根目錄下localfolder檔案夾內有d.txt和e.png檔案。OSS中名為examplebucket的Bucket下檔案夾destfolder內有檔案a.txt、b.txt和子檔案夾C,檔案結構如下:
本地根目錄 examplebucket
└── localfolder └── destfolder/
├── d.txt ├── a.txt
├── e.png ├── b.txt
└── C/
樣本情境及命令如下:
將本地localfolder檔案夾同步到OSS
ossutil sync localfolder/ oss://examplebucket/destfolder/
命令執行後,examplebucket的 destfolder檔案夾內新增d.txt和e.png檔案。
本地根目錄 examplebucket └── localfolder └── destfolder/ ├── d.txt ├── a.txt ├── e.png ├── b.txt ├── d.txt ├── e.png └── C/
將本地localfolder檔案夾的.txt檔案同步到OSS
ossutil sync localfolder/ oss://examplebucket/destfolder/ --include "*.txt"
命令執行後,examplebucket的 destfolder檔案夾內新增d.txt檔案。
本地根目錄 examplebucket └── localfolder └── destfolder/ ├── d.txt ├── a.txt ├── e.png ├── b.txt ├── d.txt └── C/
將本地localfolder檔案夾的非.txt檔案同步到OSS
ossutil sync localfolder/ oss://examplebucket/destfolder/ --exclude "*.txt"
命令執行後,examplebucket的destfolder檔案夾內新增e.png檔案。
本地根目錄 examplebucket └── localfolder └── destfolder/ ├── d.txt ├── a.txt ├── e.png ├── b.txt ├── e.png └── C/
同步本地檔案夾到OSS,並刪除OSS指定路徑下已存在而本地端不存在的檔案
通過增加--delete選項,刪除目的端存在而源端不存在的檔案,僅保留本次同步的檔案。
ossutil sync localfolder/ oss://examplebucket/destfolder/ --delete
命令執行後,本地localfolder檔案夾被同步到OSS,同時會刪除OSS的檔案a.txt、b.txt以及子檔案夾C,即OSS的destfolder檔案夾內僅保留d.txt和e.png檔案。
本地根目錄 examplebucket └── localfolder └── destfolder/ ├── d.txt ├── d.txt ├── e.png ├── e.png
同步本地檔案夾到OSS,並省略問詢操作
預設情況下,同步本地檔案夾到OSS時,如果目的端存在同名檔案,ossutil會進行覆寫操作的問詢。命令如下:
ossutil sync localfolder/ oss://examplebucket/destfolder/ cp: overwrite "oss://examplebucket/destfolder/d.txt"(y or N)?
如果您確認目的端檔案均可被覆寫,可增加-f,--force選項強制執行覆寫操作。命令如下:
ossutil sync localfolder/ oss://examplebucket/destfolder/ -f
命令執行後,examplebucket的destfolder檔案夾內新增d.txt和e.png檔案。
本地根目錄 examplebucket └── localfolder └── destfolder/ ├── d.txt ├── a.txt ├── e.png ├── b.txt ├── d.txt ├── e.png └── C/
以上樣本同步成功後,返回結果中將包含同步的檔案數量、檔案大小以及完成同步操作所用時間長度,樣本如下:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files). average speed 1641000(byte/s)
通用選項
當您需要通過命令列工具ossutil切換至另一個地區的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當您需要通過命令列工具ossutil切換至另一個阿里雲帳號下的Bucket時,可以通過-i選項指定該帳號的AccessKey ID,並通過-k選項指定該帳號的AccessKey Secret。
例如,您需要將本地檔案夾srcfolder的檔案同步至另一個阿里雲帳號下,華東2(上海)地區下儲存空間examplebucket的檔案夾testfolder,命令如下:
ossutil sync srcfolder/ oss://examplebucket/testfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
關於此命令的其他通用選項的更多資訊,請參見通用選項。