使用 AzCopy 在 Azure 儲存體帳戶之間複製 Blob

您可以使用 AzCopy v10 命令列公用程式在儲存體帳戶之間複製 Blob、目錄和容器。

若要查看其他工作類型的範例,例如上傳檔案、下載 Blob,以及與 Blob 儲存體同步,請參閱本文的後續步驟一節中所提供的連結。

AzCopy 會使用伺服器對伺服器 API,因此資料會直接在儲存體伺服器之間複製。

開始使用

請參閱開始使用 AzCopy (部分機器翻譯) 一文來下載 AzCopy,並了解如何提供授權認證給儲存體服務。

注意

本文中的範例假設您已使用 Microsoft Entra ID 來提供授權認證,而且您的 Microsoft Entra 身分識別具有來源和目的地帳戶的適當角色指派。

或者,您可以將 SAS 權杖附加至每個 AzCopy 命令中的來源或目的地 URL。 例如: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'

指導方針

將下列指導方針套用至您的 AzCopy 命令。

  • 如果您使用來源和目的地的 Microsoft Entra 授權,則這兩個帳戶都必須屬於相同的 Microsoft Entra 租用戶。

  • 您的用戶端必須具有來源和目的地儲存體帳戶的網路存取權。 若要了解如何為每個儲存體帳戶設定網路設定,請參閱設定 Azure 儲存體防火牆和虛擬網路

  • 如果您將複製到進階區塊 Blob 儲存體帳戶,請將 s2s-preserve-access-tier 設定為 false (例如:--s2s-preserve-access-tier=false),以省略複製作業中的 Blob 存取層。 進階版區塊 Blob 儲存體帳戶不支援存取層。

  • 您可以藉由設定 AZCOPY_CONCURRENCY_VALUE 環境變數的值,來增加複製作業的輸送量。 若要深入了解,請參閱增加並行

  • 如果來源 Blob 有索引標記,而您想要保留這些標記,您必須將其重新套用到目的地 Blob。 如需有關如何設定索引標記的詳細資訊,請參閱本文的將 Blob 複製到具有索引標記的另一個儲存體帳戶一節。

複製 Blob

使用 azcopy copy 命令,將 Blob 複製到另一個儲存體帳戶。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

範例 (Data Lake Storage 端點)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

複製作業是同步的,因此當命令傳回時,表示已複製所有檔案。

複製目錄

使用 azcopy copy 命令,將目錄複製到另一個儲存體帳戶。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

範例 (Data Lake Storage 端點)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

複製作業是同步的。 當命令傳回時,已複製所有檔案。

複製容器

使用 azcopy copy 命令,將容器複製到另一個儲存體帳戶。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

範例 (Data Lake Storage 端點)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

複製作業是同步的。 當命令傳回時,已複製所有檔案。

複製容器、目錄和 Blob

使用 azcopy copy 命令,將所有容器、目錄和 Blob 複製到另一個儲存體帳戶。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

範例 (Data Lake Storage 端點)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

複製作業是同步的,因此當命令傳回時,表示已複製所有檔案。

複製 Blob 和新增索引標記

將 Blob 複製到另一個儲存體帳戶,並將 Blob 索引標記新增至目標 Blob。

如果您使用 Microsoft Entra 授權,必須將儲存體 Blob 資料擁有者角色指派給您的安全性主體,或必須透過自訂 Azure 角色獲得 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeAzure 資源提供者作業的權限。 如果您使用共用存取簽章 (SAS) 權杖,該權杖必須透過 t SAS 權限提供 Blob 標記的存取權。

若要新增標記,請使用 --blob-tags 選項以及 URL 編碼的索引鍵/值組。

例如,若要新增索引鍵 my tag 和值 my tag value,您可以將 --blob-tags='my%20tag=my%20tag%20value' 新增至目的地參數。

使用 & 符號 (&) 來分隔多個索引標記。 例如,如果您要新增索引鍵 my second tag 和值 my second tag value,則完整的選項字串會是 --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

下列範例顯示如何使用 --blob-tags 選項。

提示

這些範例使用單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

Blob 範例


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

目錄範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

容器範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

帳戶範例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

複製作業是同步的。 當命令傳回時,已複製所有檔案。

注意

如果您指定來源的目錄、容器或帳戶,則複製到目的地的所有 Blob 都會有您在命令中指定的相同標記。

使用選擇性旗標複製

您可以使用選擇性旗標來調整複製作業。 以下提供數個範例。

案例 旗標
將 Blob 複製為區塊、分頁或附加 Blob。 --blob-type=[BlockBlob|PageBlob|AppendBlob]
複製到特定的存取層 (例如封存層)。 --block-blob-tier=[None|Hot|Cool|Archive]
自動解壓縮檔案。 --decompress=[gzip|deflate]

如需完整的清單,請參閱選項

下一步

如需更多範例,請參閱以下文章:

請參閱下列文章,以進行設定、將效能最佳化,以及針對問題進行疑難排解: