azcopy 同步

將來源位置複製到目的地位置。 本文提供 azcopy sync 命令的詳細參考。 若要深入瞭解在來源和目的地位置之間同步處理 Blob,請參閱 使用 AzCopy v10 與 Azure Blob 記憶體同步處理。 如需 Azure 檔案儲存體,請參閱同步處理檔案

概要

上次修改的時間用於比較。 如果目的地中上次修改的時間較新,則會略過檔案。 或者,您可以使用 --compare-hash 旗標只傳輸其 MD5 哈希中不同檔案。 支援的配對如下:

  • 本機 <-> Azure Blob/Azure 檔案(可使用 SAS 或 OAuth 驗證)
  • Azure Blob -> Azure Blob<(可以使用 SAS 或 OAuth 驗證)
  • Azure 檔案 -> Azure 檔案 <(來源必須包含 SAS 或可公開存取;SAS 驗證應該用於目的地)
  • Azure Blob <-> Azure 檔案

同步處理命令與複製命令有幾種不同:

  1. 根據預設,遞歸旗標為 true,且同步會複製所有子目錄。 如果遞歸旗標為 false,則同步只會複製目錄內的最上層檔案。
  2. 在虛擬目錄之間同步處理時,如果有與其中一個虛擬目錄同名的 Blob,請將尾端斜線新增至路徑(請參閱範例)。
  3. 如果 'delete-destination' 旗標設定為 true 或提示,則同步會在來源不存在的目的地刪除檔案和 Blob。

指導方針

根據預設,Sync 命令會比較檔案名稱和上次修改的時間戳記。 您可以使用 --compare-hash 旗標覆寫該行為,以使用 MD5 雜湊,而不是上次修改的時間戳記。 將 --delete-destination 選擇性旗標設定為 trueprompt 的值,以在檔案不再存在來源目錄中時,在目的地目錄中刪除那些檔案。

  • 如果將 --delete-destination 旗標設定為 true,AzCopy 就會在不提供提示的情況下刪除檔案。 如果想要在 AzCopy 刪除檔案之前顯示提示,可將 --delete-destination 旗標設定為 prompt

  • 如果您打算將 --delete-destination 旗標設定為 promptfalse,請考慮使用 copy 命令,而不是 sync 命令,並將 --overwrite 參數設定為 ifSourceNewerCopy 命令所耗用的記憶體比較少,因而產生的帳單成本比較少,因為複製作業不需要在移動檔案之前,先為來源或目的地編製索引。

  • 如果您不打算使用 --compare-hash 旗標,則執行 sync 命令所在的機器應該具有正確的系統時鐘,因為上次修改時間對於判斷是否應傳送檔案而言很重要。 如果您的系統有顯著的時鐘誤差,請避免在太接近您打算執行 sync 命令的時間修改目的地檔案。

  • AzCopy 使用伺服器對伺服器 API 來同步處理儲存體帳戶之間的資料。 這表示資料會直接在儲存體伺服器之間複製。 不過,AzCopy 會設定和監視每個傳輸,以及針對較大的儲存體帳戶 (例如,包含數百萬個 Blob 的帳戶),AzCopy 可能需要大量的計算資源來完成這些工作。 因此,如果您是從虛擬機器 (VM) 執行 AzCopy,請確定 VM 有足夠的核心/儲存體來處理負載。

  • 針對 Blob 儲存體,您可以先確定啟用虛刪除功能,再使用 --delete-destination=prompt|true 旗標,以防止意外刪除。

進階

請注意,如果您未指定擴展名,AzCopy 會根據擴展名或內容,從本機磁碟上傳時,自動偵測檔案的內容類型。

內建查閱表格很小,但在 Unix 上,如果可在下列一或多個名稱下提供,則會透過本機系統的 mime.types 檔案來增強:

  • /etc/mime.types
  • /etc/apache2/mime.types
  • /etc/apache/mime.types

在 Windows 上,MIME 類型會從登錄擷取。

根據預設,除非您使用 --compare-hash 旗標覆寫該預設行為,否則同步處理會關閉上次修改時間。 因此,在 Azure 檔案 -> Azure 檔案<的情況下,會使用 [上次修改] 標頭欄位,而不是 x-ms-file-change-time,這表示來源的元數據變更也可以觸發完整複本。

azcopy sync [flags]

範例

同步處理單一檔案:

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

與上述相同,但也計算檔案內容的 MD5 哈希,然後將該 MD5 哈希儲存為 Blob 的 Content-MD5 屬性。

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --put-md5

同步處理整個目錄,包括其子目錄(請注意遞歸預設為開啟):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]"azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --put-md5

只同步目錄內的檔案,但不同步處理子目錄內的檔案,或子目錄內的檔案:

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=false

同步目錄中的檔案子集(例如:只有 jpg 和 pdf 檔案,或檔名為 “exactName”):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --include-pattern="*.jpg;*.pdf;exactName"

同步處理整個目錄,但從範圍中排除特定檔案 (例如:以 foo 開頭或以列結尾的每個檔案):

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --exclude-pattern="foo*;*bar"

同步處理單一 Blob:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

同步虛擬目錄:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=true

同步處理與 Blob 同名的虛擬目錄(將尾端斜線新增至路徑以釐清):

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/" --recursive=true

同步處理 Azure 檔案目錄(與 Blob 相同的語法):

azcopy sync "https://[account].file.core.windows.net/[share]/[path/to/dir]?[SAS]" "https://[account].file.core.windows.net/[share]/[path/to/dir]" --recursive=true

注意:如果 include 和 exclude 旗標一起使用,則只會使用符合 include 模式的檔案,但會忽略符合排除模式的檔案。

選項。

--block-size-mb(float)上傳至 Azure 儲存體 或從 Azure 儲存體 下載時,請使用此區塊大小(在 MiB 中指定)。 預設值會根據檔案大小自動計算。 允許小數點 (例如:0.25)。 上傳或下載時,允許的區塊大小上限為0.75 * AZCOPY_BUFFER_GB。 若要深入瞭解,請參閱 優化記憶體使用量

--check-md5 (字串)指定下載時應驗證 MD5 哈希的頻率。 只有在下載時,才能使用此選項。 可用的值包括:NoCheck、LogOnly、FailIfDifferent、FailIfDifferentOrMissing。 (預設為 'FailIfDifferent')。 (預設值 “FailIfDifferent”)

--cpk-by-name (字串)用戶端依名稱提供金鑰,可讓對 Azure Blob 記憶體提出要求的用戶端選擇,以根據每個要求提供加密密鑰。 提供的金鑰名稱將會從 Azure 金鑰保存庫 擷取,並用來加密數據

--cpk-by-value 用戶端依名稱提供金鑰,可讓對 Azure Blob 記憶體提出要求的用戶端選擇,以根據每個要求提供加密密鑰。 提供的密鑰及其哈希將會從環境變數擷取

--delete-destination (字串)定義是否要從來源不存在的目的地刪除額外的檔案。 可以設定為 true、false 或提示。 如果設定為提示,則會在排程檔案和 Blob 進行刪除之前,先詢問用戶的問題。 (預設為 'false')。 (預設值 “false”)

--dry-run 列印同步命令所複製或移除的檔案路徑。 此旗標不會複製或移除實際檔案。

--exclude-attributes (字串)(僅限 Windows)排除屬性符合屬性清單的檔案。 例如:A;S;R

--exclude-path (字串)比較來源與目的地時,請排除這些路徑。 此選項不支援通配符 \。 檢查相對路徑前置詞(例如:myFolder;myFolder/subDirName/file.pdf)。

--exclude-pattern (字串)排除名稱符合模式清單的檔案。 例如: .jpg;。Pdf;exactName

--exclude-regex (字串)排除與正則表達式相符之檔案的相對路徑。 使用 『;' 分隔正則表示式。

--force-if-read-only在 Windows 或 Azure 檔案儲存體 上覆寫現有的檔案時,即使現有檔案已設定只讀屬性,仍強制覆寫運作。

--from-to (字串)選擇性地指定來源目的地組合。 例如:LocalBlob、BlobLocal、LocalFile、FileLocal、BlobFile、FileBlob 等。

-h--help 同步處理的說明

--include-attributes (字串)(僅限 Windows)只包含屬性符合屬性清單的檔案。 例如:A;S;R

--include-pattern (字串)只包含名稱符合模式清單的檔案。 例如: .jpg;。Pdf;exactName

--include-regex (字串)包含與正則表示式相符之檔案的相對路徑。 使用 『;' 分隔正則表示式。

--log-level (字串)定義記錄檔的記錄詳細資訊、可用的層級:INFO(所有要求和回應)、WARNING(慢速回應)、ERROR(僅失敗的要求),以及 NONE(沒有輸出記錄)。 (預設 INFO)。 (預設“INFO”)

--mirror-mode 停用以上次修改時間為基礎的比較,如果此旗標設定為 true,則會覆寫目的地衝突的檔案和 Blob。 預設值為 false。

--put-blob-size-mb使用此大小 (在MiB中指定) 作為臨界值,以判斷上傳至 Azure 儲存體 時,是否要將 Blob 上傳為單一 PUT 要求。 預設值會根據檔案大小自動計算。 允許小數點 (例如:0.25)。

--preserve-permissions False 預設為 False。 保留感知資源之間的 ACL(Windows 和 Azure 檔案儲存體,或 ADLS Gen 2 到 ADLS Gen 2)。 針對階層命名空間帳戶,您需要具有修改擁有權和修改許可權許可權的容器 SAS 或 OAuth 令牌。 針對下載,您也需要 --backup 旗標來還原許可權,其中新的擁有者不會是執行 AzCopy 的使用者。 除非指定僅限檔案的篩選條件,否則此旗標會同時套用至檔案和資料夾(例如 include-pattern)。

--preserve-smb-info 針對SMB感知位置,旗標預設會設定為 true。 在SMB感知資源之間保留SMB屬性資訊(上次寫入時間、建立時間、屬性位)(Azure 檔案儲存體)。 除非指定僅限檔案的篩選條件,否則此旗標會同時套用至檔案和資料夾(例如 include-pattern)。 針對資料夾傳輸的資訊與檔案的資訊相同,但不會保留資料夾的上次寫入時間除外。 (預設值 true)

--put-md5 建立每個檔案的 MD5 哈希,並將哈希儲存為目的地 Blob 或檔案的 Content-MD5 屬性。 (根據預設,不會建立哈希。)只有在上傳時才能使用。

--recursive 根據預設,在目錄之間同步處理時,會以遞歸方式查看子目錄。 (預設值為 true)。 (預設值 true)

--s2s-preserve-access-tier 在服務對服務複製期間保留存取層。 請參閱 Azure Blob 記憶體:經常性存取層、非經常性存取層和封存存取層,以確保目的地記憶體帳戶支援設定存取層。 在不支援設定存取層的情況下,請使用 s2sPreserveAccessTier=false 略過複製存取層。 (預設值為 true)。 (預設值 true)

--s2s-preserve-blob-tags 在服務期間保留索引標籤,以服務同步處理從一個 Blob 記憶體到另一個 Blob 記憶體

繼承自父命令的選項

--cap-mbps (float)以每秒 MB 為單位來限制傳輸速率。 暫時輸送量可能會與上限稍有不同。 如果此選項設定為零,或省略此選項,則不會限制輸送量。

--output-type (字串)命令輸出的格式。 選項包括:text、json。 預設值為 『text』。 (預設 “text”)

--trusted-microsoft-suffixes (字串)指定其他網域後綴,其中可能會傳送 Microsoft Entra 登入令牌。 預設值為 『.core.windows.net;。core.chinacloudapi.cn;。core.cloudapi.de;。core.usgovcloudapi.net;*.storage.azure.net'。 此處所列的任何專案會新增至預設值。 基於安全性,您應該只在這裡放置 Microsoft Azure 網域。 使用分號分隔多個專案。

另請參閱