共用方式為


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

您可以使用 AzCopy v10 命令列工具,在存儲帳戶之間複製 Blob、目錄和容器。

如需其他類型工作的範例,例如上傳檔案、下載 Blob 和與 Blob 儲存體同步處理,請參閱本文後 續步驟 一節中的連結。

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

開始

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

附註

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

或者,您可以在每個 AzCopy 命令中將 SAS 權杖附加至來源或目的地 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

  • 如果您將複製到進階區塊 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]

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

指定來源和目的地類型

AzCopy 會使用參數 --from-to 來明確定義自動偵測可能失敗時的來源和目的地資源類型,例如在管道案例或模擬器中。 此參數可協助 AzCopy 瞭解傳輸的內容,並據以最佳化。

FromTo 值 Description
BlobBlob 在兩個 Azure Blob 儲存體位置之間複製
BlobBlobFS 從 Azure Blob 儲存體複製到 Azure Data Lake Gen2 (BlobFS)
BlobFSBlob 從 Azure Data Lake Gen2 (BlobFS) 複製到 Azure Blob 儲存體
BlobFSBlobFS 在兩個 Azure Data Lake Gen2 (BlobFS) 位置之間複製
BlobFSFile 從 Azure Data Lake Gen2 (BlobFS) 複製到 Azure 檔案儲存體
BlobFile 從 Azure Blob 儲存體複製到 Azure 檔案儲存體
FileBlob 從 Azure 檔案儲存體複製到 Azure Blob 儲存體
FileBlobFS 從 Azure 檔案儲存體複製到 Azure Data Lake Gen2 (BlobFS)

後續步驟

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

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