sync(在OSS之間同步文件)
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。
您可以使用sync命令將同一個地域下某個存儲空間(Bucket)中某個文件夾下的文件(Object)批量同步到另一個Bucket。
注意事項
要在OSS之間同步文件,您必須具有
oss:GetObject
、oss:ListObjects
、oss:PutObject
和oss:DeleteObject
權(quán)限。具體操作,請參見為RAM用戶授權(quán)自定義的權(quán)限策略。
Binary名稱
從ossutil 1.6.16版本開始,命令行中Binary名稱支持直接使用ossutil,您無需根據(jù)系統(tǒng)刷新Binary名稱。如果您的ossutil版本低于1.6.16,則需要根據(jù)系統(tǒng)刷新Binary名稱。更多信息,請參見命令行工具ossutil命令參考。
文件數(shù)量
通過sync命令執(zhí)行同步任務(wù)時,如果沒有攜帶--delete選項,則單次同步任務(wù)同步的文件個數(shù)無限制。如果攜帶了--delete選項,則單次同步任務(wù)最多可同步100萬個文件。當(dāng)同步的文件個數(shù)超出100萬時,將報錯over max sync numbers 1000000.。
sync命令與cp命令的區(qū)別
sync命令強制以遞歸的方式遍歷指定文件夾內(nèi)所有文件或子文件夾。cp命令需增加-r選項才會進(jìn)行遞歸操作。
通過sync命令將數(shù)據(jù)同步到OSS時,ossutil支持通過--delete選項將目標(biāo)Bucket存在而源Bucket不存在的文件都刪除,僅保留本次同步的文件。cp命令不支持--delete選項。
sync不支持--version-id選項,無法在已開啟版本控制的Bucket內(nèi)同步歷史版本文件。cp命令支持--version-id選項。
除以上區(qū)別外,sync命令與cp命令用法類似。關(guān)于cp命令的用法及示例,請參見cp(拷貝文件)。
使用限制
不支持將源Bucket中冷歸檔存儲或者深度冷歸檔存儲類型Object同步到目標(biāo)Bucket。
命令格式
ossutil sync cloud_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>]
[--include <value>]
[--exclude <value>]
[--meta <value>]
[--acl <value>]
[--maxupspeed <value>]
[--disable-crc64]
[--payer <value>]
[-j, --job <value>]
[--parallel <value>]
[--retry-times <value>]
[--tagging <value>]
參數(shù)及選項說明如下:
配置項 | 說明 |
cloud_url | 分別填寫OSS源文件夾路徑以及目標(biāo)文件夾路徑。格式為 重要 如果輸入的 |
-f --force | 強制操作,不進(jìn)行詢問提示。 |
-u,--update | 只有當(dāng)目標(biāo)文件不存在,或源文件的最后修改時間晚于目標(biāo)文件時,ossutil才會執(zhí)行同步操作。 |
--delete | 將目標(biāo)Bucket指定路徑下的其他文件都刪除,僅保留本次同步的文件。 警告 建議您使用--delete選項前開啟版本控制,防止數(shù)據(jù)被誤刪。 |
--enable-symlink-dir | 同步鏈接子目錄。 |
--disable-all-symlink | 同步目錄時,忽略所有的鏈接子文件以及鏈接子目錄。 |
--disable-ignore-error | 批量操作時不忽略錯誤。 |
--only-current-dir | 僅同步當(dāng)前目錄下的文件,忽略子目錄及子目錄下的文件。 |
--output-dir | 指定輸出文件所在的目錄。輸出文件是指批量同步文件出錯時產(chǎn)生的report文件,默認(rèn)保存在當(dāng)前目錄下的ossutil_output目錄。 |
-bigfile-threshold | 設(shè)置斷點續(xù)傳文件的大小閾值,單位為字節(jié)。 默認(rèn)值:100 MB 取值范圍:0~9223372036854775807 |
--part-size | 設(shè)置分片大小,單位為字節(jié)。默認(rèn)情況下ossutil會根據(jù)文件大小自行計算合適的分片大小值。 取值范圍:1~9223372036854775807 |
--checkpoint-dir | 指定斷點續(xù)傳記錄信息所在的目錄。斷點續(xù)傳操作失敗時,ossutil會自動創(chuàng)建名為 |
--encoding-type | 文件名稱的編碼方式。取值為url。如果不指定該選項,則表示文件名稱未經(jīng)過編碼。 |
--include | 包含符合指定條件的所有文件。 更多信息,請參見include和exclude選項。 |
--exclude | 不包含任何符合指定條件的文件。 更多信息,請參見include和exclude選項。 |
--meta | 設(shè)置文件的元數(shù)據(jù),格式為 |
--acl | 文件的讀寫權(quán)限ACL。取值如下:
|
--maxupspeed | 最大上傳速度,單位為KB/s。默認(rèn)值為0,表示不限制上傳速度。 |
--disable-crc64 | 關(guān)閉CRC64數(shù)據(jù)校驗。 |
--payer | 請求的支付方式。如果希望訪問指定路徑下的資源產(chǎn)生的流量、請求次數(shù)等費用由請求者支付,請將此選項的值設(shè)置為requester。 |
-j,--job | 多文件操作時的并發(fā)任務(wù)數(shù),默認(rèn)值為3,取值范圍為1~10000。 |
--parallel | 單文件操作時的并發(fā)任務(wù)數(shù),取值范圍為1-10000。 如果不設(shè)置此選項,默認(rèn)由ossutil根據(jù)操作類型和文件大小自行決定。 |
--retry-times | 發(fā)生錯誤后的重試次數(shù)。默認(rèn)值為10,取值范圍為1~500。 |
--tagging | 文件的標(biāo)簽信息,格式為 |
使用示例
某阿里云賬號下有examplebucket1和examplebucket2兩個Bucket,examplebucket1下有exampledir和srcdir兩個文件夾。examplebucket2下有destdir文件夾。文件結(jié)構(gòu)如下:
examplebucket1 examplebucket2
├── exampledir/ └── destdir/
│ ├── a.txt ├── c.txt
│ └── b.txt └── e.txt
└── srcdir/
└── d.txt
示例場景及命令如下:
將examplebucket1的exampledir文件夾同步到srcdir文件夾內(nèi)。
ossutil sync oss://examplebucket1/exampledir/ oss://examplebucket1/srcdir/
命令執(zhí)行完畢后,exampledir文件夾內(nèi)的所有文件被同步到srcdir文件夾下。
examplebucket1 examplebucket1 ├── exampledir/ ├── exampledir/ │ ├── a.txt │ ├── a.txt │ └── b.txt │ └── b.txt └── srcdir/ └── srcdir/ └── d.txt ├── a.txt ├── b.txt └── d.txt
將examplebucket1的exampledir文件夾同步到examplebucket2的destdir文件夾。
ossutil sync oss://examplebucket1/exampledir/ oss://examplebucket2/destdir/
命令執(zhí)行后,examplebucket1的exampledir文件夾中所有文件被同步到examplebucket2的destdir文件夾。
examplebucket1 examplebucket2 ├── exampledir/ └── destdir/ │ ├── a.txt ├── a.txt │ └── b.txt ├── b.txt └── srcdir/ ├── c.txt └── d.txt └── e.txt
結(jié)合--delete選項將examplebucket1的所有文件同步到examplebucket2,并刪除examplebucket2存在而examplebucket1不存在的文件。
ossutil sync oss://examplebucket1 oss://examplebucket2 --delete
命令執(zhí)行后,examplebucket1中的文件將同步到examplebucket2,examplebucket2內(nèi)已有的文件c.txt和e.txt將被刪除。
examplebucket1 examplebucket2 ├── exampledir/ ├── exampledir/ │ ├── a.txt │ ├── a.txt │ └── b.txt │ └── b.txt └── srcdir/ └── srcdir/ └── d.txt └── d.txt
以上示例同步成功后,返回結(jié)果中將包含同步的文件數(shù)量、文件大小以及完成同步操作所用時長,示例如下:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files). average speed 1641000(byte/s)
通用選項
當(dāng)您需要通過命令行工具ossutil切換至另一個地域的Bucket時,可以通過-e選項指定該Bucket所屬的Endpoint。當(dāng)您需要通過命令行工具ossutil切換至另一個阿里云賬號下的Bucket時,可以通過-i選項指定該賬號的AccessKey ID,并通過-k選項指定該賬號的AccessKey Secret。
例如,您需要將另一個阿里云賬號下,華東2(上海)地域下源存儲空間examplebucket的文件夾srcfolder同步至目標(biāo)存儲空間testbucket的文件夾examplefolder,命令如下:
ossutil sync oss://examplebucket/srcfolder/ oss://testbucket/examplefolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
關(guān)于此命令的其他通用選項的更多信息,請參見通用選項。