全部產品
Search
文件中心

:sync(同步OSS檔案到本地)

更新時間:Jul 31, 2024

sync命令用於將OSS中的檔案同步到本地。

注意事項

  • 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支援通過--backup-dir選項指定目標檔案夾,用於儲存目的端存在而源端不存在的檔案。cp命令不支援--backup-dir選項。

    • sync不支援--version-id選項,無法在已開啟版本控制的Bucket內同步歷史版本檔案。cp命令支援--version-id選項。

    除以上區別外,sync命令與cp命令用法類似。有關cp命令的用法及樣本,請參見cp(下載檔案)

命令格式

ossutil sync cloud_url  file_url
[-f --force]
[-u --update]
[--maxdownspeed <value>]
[--delete]
[--backup-dir <value>]
[--enable-symlink-dir]
[--disable-all-symlink]
[--disable-ignore-error]
[--only-current-dir]
[--output-dir <value>]
[--bigfile-threshold <value>]
[--part-size <value>]
[--checkpoint-dir <value>]
[--range <value>]
[--encoding-type <value>]
[--snapshot-path <value>]
[--include <value>]
[--exclude <value>]
[--disable-crc64]
[--payer <value>]
[-j, --job <value>]
[--parallel <value>]
[--retry-times <value>]

參數及選項說明如下:

配置項

說明

cloud_url

OSS檔案夾(目錄)路徑。格式為oss://bucketname/path/。例如oss://examplebucket/exampledir/。如果輸入的cloud_url沒有以正斜線(/)結尾,ossutil會自動在結尾處添加一個正斜線(/)。

file_url

待同步的本地檔案夾路徑。例如Linux系統檔案夾路徑/localfolder/,Windows系統檔案夾路徑D:\localfolder\

-f --force

強制操作,不進行詢問提示。

-u,--update

只有當目標檔案不存在,或源檔案的最後修改時間晚於目標檔案時,ossutil才會執行同步操作。

--maxdownspeed

最大下載速度,單位為KB/s,預設值為0,表示不限制下載速度。

--delete

將目的端指定路徑下的其他檔案都刪除,僅保留本次同步的檔案。

警告

建議您使用--delete選項前開啟版本控制,防止資料被誤刪。

--backup-dir

指定目標檔案夾,用於儲存目的端存在而源端不存在的檔案。

--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會自動建立名為.ossutil_checkpoint的目錄,並在該目錄下記錄checkpoint資訊,斷點續傳成功後會刪除該目錄。如果指定了該選項,請確保指定的目錄可以被刪除。

--range

下載目標檔案的指定欄位,並儲存為一個新的檔案,欄位從0開始編號。

  • 指定區間

    例如指定為3-9,表示下載檔案的第3個位元組到第9個位元組(包含第3和第9位元組)。

  • 指定開始位置

    例如指定為3-,表示從第3個位元組開始到檔案結尾(包含第3個位元組)。

  • 指定結束位置

    例如指定為-9,表示從0位元組到第9個位元組(包含第9個位元組)。

--encoding-type

檔案名稱的編碼方式。取值為url。如果不指定該選項,則表示檔案名稱未經過編碼。

--snapshot-path

指定儲存同步檔案時的快照資訊所在的目錄。在下一次同步檔案時,ossutil會讀取指定目錄下的快照資訊進行增量同步處理。

--include

包含符合指定條件的所有檔案。

更多資訊,請參見include和exclude選項

--exclude

不包含任何符合指定條件的檔案。

更多資訊,請參見include和exclude選項

--disable-crc64

關閉CRC64資料校正。

--payer

請求的支付方式。如果希望訪問指定路徑下的資源產生的流量、請求次數等費用由要求者支付,請將此選項的值設定為requester

-j,--job

多檔案操作時的並發任務數,預設值為3,取值範圍為1~10000。

--parallel

單檔案操作時的並發任務數,取值範圍為1-10000。 如果不設定此選項,預設由ossutil根據操作類型和檔案大小自行決定。

--retry-times

發生錯誤後的重試次數。預設值為10,取值範圍為1~500。

使用樣本

OSS儲存空間examplebucket下localdir檔案夾內有檔案a.txtb.txt以及子檔案夾C,本地根目錄下destdir檔案夾內有d.txt檔案。檔案結構如下:

examplebucket           本地根目錄
└── localdir/             └── destdir/
       ├── a.txt                └── d.txt
       ├── b.txt
       └── C/
  • 將OSS的localdir檔案夾同步到本地

    ossutil sync  oss://examplebucket/localdir/  destdir/ 

    命令執行完畢後,本地destdir檔案夾內新增a.txtb.txt以及子檔案夾C

    examplebucket           本地根目錄
    └── localdir/             └── destdir/
           ├── a.txt                ├── a.txt 
           ├── b.txt                ├── b.txt
           └── C/                   ├── d.txt
                                       └── C/ 
  • 將OSS儲存空間examplebucket下的檔案夾localdir同步到本地檔案夾destdir,並通過--backup-dir選項指定backup檔案夾,用於儲存本地指定目錄下已存在而OSS不存在的檔案,同時在原有檔案夾下的這些檔案會被刪除。

    ossutil sync oss://examplebucket/localdir/  destdir/  --delete  --backup-dir backup/

    命令執行完畢後,OSS的localdir檔案夾將同步到本地,同時本地destdir檔案夾記憶體在的而OSS不存在的檔案被轉移到backup檔案夾內。即本地destdir檔案夾僅儲存a.txtb.txt及子檔案夾C,原有的d.txt檔案將儲存至backup檔案夾,且d.txt檔案在原有的destdir檔案夾下被刪除。

    examplebucket              本地根目錄
    └── localdir/               ├── destdir/
           ├── a.txt            │     ├── a.txt 
           ├── b.txt            │     ├── b.txt
           └── C/               │     └── C/                             
                                   └── backup/
                                          └──d.txt
  • 以上樣本同步成功後,返回結果中將包含同步的檔案數量、檔案大小以及完成同步操作所用時間長度,樣本如下:

    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。

例如,您需要將另一個阿里雲帳號下,華東2(上海)地區下儲存空間examplebucket的檔案夾srcfolder同步至本地檔案夾examplefolder,命令如下:

ossutil sync oss://examplebucket/srcfolder/  examplefolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

關於此命令的其他通用選項的更多資訊,請參見通用選項