幾個(gè)月前,我寫了一篇關(guān)于如何使用AzCopy同步文件到Azure Blob存儲(chǔ)的博客。今天針對(duì)我在GitHub上使用AzCopy的一個(gè)問題,有了一個(gè)激動(dòng)人心的更新。
Azure Blob<->Azure Blob(源必須包括共享訪問令牌SAS或者可公共訪問,對(duì)于目標(biāo)可以支持共享訪問令牌SAS或者OAuth認(rèn)證)
如何在Azure Blob存儲(chǔ)之間同步
作為準(zhǔn)備工作,您將需要安裝并設(shè)置AzCopy,或者在Azure Cloud Shell中使用AzCopy.
您可以使用下述命令將Azure blob存儲(chǔ)同步到另外一個(gè)Azure Blob中。該命令將僅僅同步發(fā)生變化和新建的文件。其比較文件的名稱和最后修改時(shí)間戳。
azcopy sync"https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]""https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"
對(duì)于目標(biāo),你既可以使用SAS或者OAuth。為了同步一個(gè)存儲(chǔ)賬號(hào)中的整個(gè)容器或者文件夾到另外一個(gè)賬號(hào),你可以使用下述命令:
azcopy sync"https://[account].blob.core.windows.net/[container]?[SAS]""https://[account].blob.core.windows.net/[container]"
作為示例,這里我將從在北歐區(qū)的Azure存儲(chǔ)賬號(hào)的一個(gè)容器中的文件,復(fù)制到西歐區(qū)的另一個(gè)存儲(chǔ)賬號(hào)中。
我使用如下命令來實(shí)現(xiàn):
azcopy sync"https://tomnortheurope.blob.core.windows.net/myfiles?[SAS]""https://tomwesteurope.blob.core.windows.net/destinationfiles?[SAS]"--recursive=true
您可以看到,在第一次運(yùn)行時(shí),它確實(shí)將所有文件從源存儲(chǔ)帳戶復(fù)制到了目標(biāo)位置。在第二次運(yùn)行中,它沒有復(fù)制任何文件,因?yàn)槲募呀?jīng)存在了。
下面是一系列可以使用的參數(shù)。您可以在微軟Docs上發(fā)現(xiàn)更多的關(guān)于AzCopy sync的命令。
-block-size-mb在上傳到Azure存儲(chǔ)或者從Azure存儲(chǔ)下載時(shí),使用的塊尺寸(以MiB為單位)。默認(rèn)基于文件尺寸自動(dòng)計(jì)算。支持使用十進(jìn)制小數(shù)(例如:0.25)。
-check-md5字符串,指定在下載時(shí),如何強(qiáng)制MD5散列值用于驗(yàn)證。該選項(xiàng)僅在下載時(shí)可用??捎弥蛋ǎ篘oCheck,LogOnly,FailIfDifferent,FailIfDifferentOrMissing.(默認(rèn)值:‘FailIfDifferent’)。
-delete-destination字符串。定義是否刪除源中沒有提供的目標(biāo)中的其它文件??梢栽O(shè)置為:true,false,或者prompt。如果設(shè)置為prompt,在刪除文件或者blob之前,用戶將被要求確認(rèn)(默認(rèn)false)。
-exclude-attributes字符串(僅Windows),排除匹配文件屬性的文件。例如:A;S;R
-exclude-pattern字符串,排除匹配模板列表的文件,例如:.jpg;*.pdf;exactName
-h,–help使用幫助
-include-attributes字符串(僅Windows),僅包含匹配文件屬性列表的文件。例如:A;S;R
-include-pattern字符串,僅包含匹配模板列表的文件。例如:.jpg;.pdf;exactName
–log-level字符串,定義日志文件的日志級(jí)別??捎玫募?jí)別:INFO(所有的請(qǐng)求和響應(yīng)),WARNING(慢速響應(yīng)),ERROR(僅僅失敗的請(qǐng)求),以及NONE(沒有輸出日志).(默認(rèn)INFO).(default“INFO”)
–put-md5對(duì)每個(gè)文件創(chuàng)建MD5散列,并保存將散列值作為目標(biāo)blob或文件的Content-MD5屬性。(默認(rèn)情況下,不創(chuàng)建散列)。僅在上傳時(shí)可用。
–recursive默認(rèn)為True,當(dāng)在目錄之間同步的時(shí)候,遞歸進(jìn)入子目錄(默認(rèn)為true)。