共用方式為


使用 AzCopy 在具有網路限制的 Azure 儲存體帳戶之間複製 Blob

本文介紹如何使用 AzCopy 命令行公用程式,在記憶體帳戶之間複製 Blob。 它也說明如何在為記憶體帳戶設定網路限制時實作複製作業。

Background

在兩個記憶體帳戶之間複製 Blob 檔案是許多 Azure 使用者的常見需求。 Azure 儲存體 支援使用 AzCopy 命令行公用程式,將 Blob 從某個記憶體帳戶直接複製到另一個記憶體帳戶。 使用者不需要將檔案下載到本機磁碟或緩衝區,然後再上傳一次。

使用 AzCopy 在兩個記憶體帳戶之間複製 Blob 並不依賴本機電腦的網路頻寬。 此方法可以利用記憶體帳戶和 Azure 虛擬網絡 的效能,以達到比下載和上傳檔案更好的輸送量。 如果兩個記憶體帳戶都位於相同區域,則不會收取任何頻寬費用。

AzCopy 命令,用於在記憶體帳戶之間複製 Blob

  • 如果您使用 Microsoft Entra ID 提供授權認證,請使用下列命令:

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

    在此案例中,您必須確定您的Microsoft Entra 身分識別同時具有來源和目的地帳戶的適當角色指派。

  • 如果您使用共享存取簽章 (SAS) 令牌,請使用下列命令:

    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>'
    

    在此案例中,您必須將 SAS 令牌附加至 AzCopy 命令中使用的來源和目的地 URL。

如需詳細資訊,請參閱 使用 AzCopy v10 在 Azure 記憶體帳戶之間複製 Blob。

在具存取限制的儲存體帳戶之間複製 Blob

如果您需要透過記憶體防火牆限制對來源和目的地記憶體帳戶的存取,您可能需要使用 AzCopy 在記憶體帳戶之間複製 Blob 的更多設定。 這是因為兩個記憶體帳戶之間的複製要求使用私人IP位址,而IP位址是動態的。

以下是兩個支援的案例:

案例 1:用戶端會使用公用端點來存取記憶體帳戶

在此案例中,您必須將用戶端的公用IP位址或虛擬網路 (VNet) 新增至來源和目的地記憶體帳戶中的防火牆允許清單。

下圖顯示在此案例中,在記憶體帳戶之間複製 Blob 的程式:

此圖顯示案例 1 中記憶體帳戶之間處理 Blob 的程式。

在此案例中,不需要防火牆允許清單。

下圖顯示在此案例中,在記憶體帳戶之間複製 Blob 的程式:

此圖顯示案例 2 中記憶體帳戶之間處理 Blob 的程式。

以下是這兩種案例中此機制的完整程式:

  1. 用戶端會將 PutBlockfromURL 要求傳送至目的地記憶體。
  2. 目的地記憶體會接收要求,並嘗試從指定的來源URL取得區塊。 不過,由於來源防火牆不允許目的地記憶體,因此會收到「403 禁止」錯誤。
  3. 目的地記憶體收到「403 禁止」錯誤之後,它會代表用戶端傳送另一個 GetBlob 要求。 如果用戶端可以存取來源記憶體,目的地將能夠從來源取得區塊,並將成功回應碼傳回給用戶端。
  4. 用戶端會將 PutBlockList 傳送至目的地記憶體,以認可區塊,並在收到要求成功響應碼之後完成程式。

使用私人端點在中樞輪輻架構中的記憶體帳戶之間複製 Blob

使用 AzCopy 從中樞 VNet 中 VM 連線到不同輪輻 VNet 中私人端點的記憶體帳戶之間複製 Blob 時,會發生 403 錯誤。 您可以在 AzCopy 記錄或 Azure 儲存體 記錄中找到「403 此要求未獲授權執行這項作業 - CannotVerfiyCopySource」錯誤。 下列架構圖顯示發生錯誤的案例。

此圖顯示使用私人端點在中樞和輪輻架構中的記憶體帳戶之間複製 Blob 的 403 錯誤。

因應措施 1:為來源 VNet 中的目的地記憶體帳戶建立私人端點

可能的因應措施是為來源 VNet 中的目的地記憶體帳戶建立私人端點。 此設定可讓 VM 使用 AzCopy 成功複製記憶體帳戶之間的 Blob。 下列架構圖表顯示在因應措施 1 中的記憶體帳戶之間複製 Blob 的程式。

此圖顯示因應措施 1 中記憶體帳戶之間複製 Blob 的程式。

因應措施 2:將 VM 放在與來源記憶體帳戶相同的 VNet 中,並將 VNet 與目的地 VNet 對等互連

另一個選項是將 VM 放在與來源記憶體帳戶相同的 VNet 內。 然後,在此 VNet 與目的地 VNet 之間建立對等互連。 下列架構圖表顯示在因應措施 2 中的記憶體帳戶之間複製 Blob 的程式。

此圖顯示因應措施 2 中記憶體帳戶之間複製 Blob 的程式。

因應措施 3:使用暫存暫存帳戶來複製數據

如果您無法實作先前提及的因應措施,或受限於變更記憶體帳戶或 VNet 的現有網路設定,您可以使用暫存帳戶來複製數據:

  1. 在與來源記憶體帳戶和目的地記憶體帳戶相同的區域中建立暫存記憶體帳戶。
  2. 使用 AzCopy 將資料從來源記憶體帳戶複製到暫存記憶體帳戶。
  3. 將數據從暫存記憶體帳戶複製到目的地記憶體帳戶。 在執行數據傳輸之前,請確定暫存記憶體帳戶在與目的地記憶體帳戶相同的 VNet 中具有私人端點。

因應措施 4:使用 VM 並將數據下載至 VM,然後將數據上傳至目的地記憶體帳戶

只有在其他方法不可行時,才使用此因應措施。 使用 VM 從來源記憶體帳戶下載數據,然後將它上傳至目的地記憶體帳戶。 這可以使用 AzCopy 來完成。 請確定 VM 的大小和磁碟容量適用於資料傳輸程式。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。