azcopy 同步
將來源位置複製到目的地位置。 本文提供 azcopy sync 命令的詳細參考。 若要深入瞭解在來源和目的地位置之間同步處理 Blob,請參閱 使用 AzCopy v10 與 Azure Blob 記憶體同步處理。 如需 Azure 檔案儲存體,請參閱同步處理檔案。
注意
AzCopy 不支援會在傳輸期間主動變更來源或目的地的案例。
概要
上次修改的時間用於比較。 如果目的地中上次修改的時間較新,則會略過檔案。 或者,您可以使用 --compare-hash
旗標只傳輸其 MD5 哈希中不同檔案。 支援的配對如下:
- 本機 <-> Azure Blob/Azure 檔案(可使用 SAS 或 OAuth 驗證)
- Azure Blob -> Azure Blob<(可以使用 SAS 或 OAuth 驗證)
- Azure 檔案 -> Azure 檔案 <(來源必須包含 SAS 或可公開存取;SAS 驗證應該用於目的地)
- Azure Blob <-> Azure 檔案
同步處理命令與複製命令有幾種不同:
- 根據預設,遞歸旗標為 true,且同步會複製所有子目錄。 如果遞歸旗標為 false,則同步只會複製目錄內的最上層檔案。
- 在虛擬目錄之間同步處理時,如果有與其中一個虛擬目錄同名的 Blob,請將尾端斜線新增至路徑(請參閱範例)。
- 如果 'delete-destination' 旗標設定為 true 或提示,則同步會在來源不存在的目的地刪除檔案和 Blob。
指導方針
根據預設,Sync 命令會比較檔案名稱和上次修改的時間戳記。 您可以使用 --compare-hash
旗標覆寫該行為,以使用 MD5 雜湊,而不是上次修改的時間戳記。 將 --delete-destination
選擇性旗標設定為 true
或 prompt
的值,以在檔案不再存在來源目錄中時,在目的地目錄中刪除那些檔案。
如果將
--delete-destination
旗標設定為true
,AzCopy 就會在不提供提示的情況下刪除檔案。 如果想要在 AzCopy 刪除檔案之前顯示提示,可將--delete-destination
旗標設定為prompt
。如果您打算將
--delete-destination
旗標設定為prompt
或false
,請考慮使用 copy 命令,而不是 sync 命令,並將--overwrite
參數設定為ifSourceNewer
。 Copy 命令所耗用的記憶體比較少,因而產生的帳單成本比較少,因為複製作業不需要在移動檔案之前,先為來源或目的地編製索引。如果您不打算使用
--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”)
--compare-hash
(字串)通知同步處理依賴哈希作為上次修改時間 (LMT) 的替代方案。 遠端來源的遺漏哈希將會擲回錯誤。 (無,MD5)預設值:無(預設為 “None”)
--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
(字串)包含與正則表示式相符之檔案的相對路徑。 使用 『;' 分隔正則表示式。
--hash-meta-dir
使用 --local-hash-storage-mode=HiddenFiles
時,您可以指定要將哈希元數據檔案儲存在 中的替代目錄(而不是來源中相關檔案旁)。
--local-hash-storage-mode
指定快取檔案哈希的替代方式。 有效的選項包括: HiddenFiles (OS Agnostic)
、 XAttr (Linux/macOS only
(需要 user_xattr
周遊來源的所有文件系統上), AlternateDataStreams
(Windows 只需要目標磁碟區上的具名數據流)。
--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-posix-properties-
False 預設為 False。 Preserves
從 stat 或 statx 擷取到對象元數據的屬性資訊。
--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 記憶體
--trailing-dot
默認啟用以安全的方式處理檔案共享相關作業。 可用選項: Enable
、 Disable
。 選擇 Disable
回到舊版 (可能不安全) 處理尾端點檔案,其中檔案服務會修剪路徑中的任何尾端點。 如果傳輸只包含尾端點不同的兩個路徑,這可能會導致數據損毀(例如 mypath
和 mypath.
)。 如果此旗標設定為 Disable
,且 AzCopy 遇到尾端的點檔案,則會警告掃描記錄中的客戶,但不會嘗試中止作業。 如果目的地不支援尾端點檔案 (Windows 或 Blob 記憶體),如果尾端點檔案是傳輸的根目錄,且略過列舉期間遇到的任何尾端點路徑,AzCopy 將會失敗。
繼承自父命令的選項
--log-level
(字串)定義記錄檔的記錄詳細資訊、可用的層級:INFO(所有要求和回應)、WARNING(慢速回應)、ERROR(僅失敗的要求),以及 NONE(沒有輸出記錄)。 (預設 INFO)。 (預設“INFO”)
--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 網域。 使用分號分隔多個專案。