針對 AzCopy v10 的問題進行疑難解答

本文說明您在使用 AzCopy 時可能會遇到的常見問題、協助您找出這些問題的原因,然後建議解決這些問題的方法。

識別問題

您可以查看結束代碼來判斷作業是否成功。

如果結束代碼為 0-success,則作業已順利完成。

如果結束代碼為 1-error,請檢查記錄檔。 一旦您瞭解確切的錯誤訊息,搜尋正確的關鍵詞並找出解決方案會變得更容易。 若要深入瞭解,請 參閱在 AzCopy 中使用記錄檔和計劃檔案來尋找錯誤並繼續作業

如果結束代碼為 2-panic,請檢查記錄檔是否存在。 如果檔案不存在,請提出 Bug 或連絡以提供支援。

如果結束代碼是任何其他非零結束代碼,則可能是來自系統的結束代碼。 例如,OOMKilled。 如需特殊結束代碼,請參閱您的操作系統檔。

403 錯誤

通常會遇到 403 錯誤。 有時候它們是良性的,而且不會導致傳輸失敗。 例如,在 AzCopy 記錄中,您可能會看到 HEAD 要求收到 403 錯誤。 當 AzCopy 檢查資源是否為公用時,就會出現這些錯誤。 在大部分情況下,您可以忽略這些實例。

在某些情況下,403 錯誤可能會導致傳輸失敗。 如果發生這種情況,在您解決問題之前,其他傳輸檔案的嘗試可能會失敗。 由於驗證和授權問題,可能會發生 403 錯誤。 當要求因記憶體帳戶防火牆設定而遭封鎖時,也可能會發生這些錯誤。

驗證/授權問題

因為 SAS 令牌、角色型訪問控制 (Azure RBAC) 角色的問題,以及 ACL) 組態 (訪問控制清單,導致發生防止數據傳輸的 403 錯誤。

SAS 令牌

如果您使用共用存取簽章 (SAS) 令牌,請確認下列事項:

  • SAS 令牌的到期和開始時間是適當的。

  • 您已選取權杖的所有必要許可權。

  • 您已使用官方 SDK 或工具來產生令牌。 如果您還沒有,請嘗試 儲存體總管。

Azure RBAC

如果您透過 命令使用 Azure RBAC 角色 azcopy login ,請確認您已將適當的 Azure 角色指派給身分識別 (例如,記憶體 Blob 資料參與者角色) 。

若要深入瞭解 Azure 角色,請 參閱指派 Azure 角色以存取 Blob 數據

Acl

如果您使用存取控制清單 (ACL) ,請確認您的身分識別出現在您想要存取之每個檔案或目錄的 ACL 專案中。 此外,請確定每個 ACL 項目都會反映適當的許可權等級。

若要深入瞭解 ACL 和 ACL 專案,請參閱訪問控制清單 (Azure Data Lake Storage Gen2 中的 ACL)

若要深入瞭解如何將 Azure 角色與 ACL 併入,以及系統如何評估這些角色以做出授權決策,請參閱 Azure Data Lake Storage Gen2 中的訪問控制模型

防火牆和私人端點問題

如果記憶體防火牆設定未設定為允許從執行 AzCopy 的電腦存取,AzCopy 作業會傳回 HTTP 403 錯誤。

將數據從本機電腦傳輸或傳輸至本機計算機

如果您要在記憶體帳戶與內部部署電腦之間上傳或下載數據,請確定執行 AzCopy 的電腦能夠存取來源或目的地記憶體帳戶。 您可能必須在來源或目的地帳戶的防火牆設定中使用IP網路規則,以允許從計算機的公用IP位址存取。

在記憶體帳戶之間傳輸數據

403 授權錯誤可防止您使用 AzCopy 執行所在的用戶端電腦在帳戶之間傳輸數據。

如果您要在記憶體帳戶之間複製數據,請確定執行 AzCopy 的電腦能夠存取來源和目的地帳戶。 您可能必須在來源和目的地帳戶的防火牆設定中使用IP網路規則,以允許從計算機的公用IP位址存取。 服務會使用 AzCopy 用戶端電腦的 IP 位址來授權來源到目的地流量。 若要瞭解如何將公用IP位址新增至記憶體帳戶的防火牆設定,請參閱 授與來自因特網IP範圍的存取權

如果您的 VM 沒有或不能有公用 IP 位址,請考慮使用私人端點。 請參閱 使用 Azure 記憶體的私人端點

Private Link 位於虛擬網路 (VNet) /subnet 層級。 如果您想要讓 AzCopy 要求通過 Private Link,則 AzCopy 必須從該 VNet/子網中執行的 VM 提出這些要求。 例如,如果您在 VNet1/Subnet1 中設定 Private Link,但 AzCopy 執行所在的 VM 位於 VNet1/Subnet2 中,則 AzCopy 要求不會使用 Private Link,且預期會失敗。

如果您遇到 TCP 錯誤,例如「撥號 tcp:lookup proxy.x.x:沒有這類主機」,這表示您的環境未設定為使用正確的 Proxy,或您使用的是 AzCopy 無法辨識的進階 Proxy。

您必須更新 Proxy 設定,以反映正確的設定。 請 參閱設定 Proxy 設定

您也可以藉由設定環境變數 NO_PROXY="*"來略過 Proxy。

以下是 AzCopy 需要使用的端點:

登入端點 Azure 記憶體端點
login.microsoftonline.com (全域 Azure) (blob | file | dfs).core.windows.net (全域 Azure)
login.chinacloudapi.cn (Azure China) (blob | file | dfs).core.chinacloudapi.cn (Azure China)
login.microsoftonline.de (Azure 德國) (blob | file | dfs).core.cloudapi.de (Azure 德國)
login.microsoftonline.us (Azure US Gov) (blob | file | dfs).core.usgovcloudapi.net (Azure US Gov)

x509:由未知授權單位簽署的憑證

此錯誤通常與使用 Proxy 有關,該 Proxy 使用安全套接字層 (SSL) 不受作業系統信任的憑證。 確認您的設定,並確定憑證在操作系統層級受到信任。

建議您將憑證新增至您計算機的跟證書存儲,因為這是受信任的授權單位的保存位置。

無法辨識的參數

如果您收到錯誤訊息指出無法辨識您的參數,請確定您使用的是正確的 AzCopy 版本。 AzCopy V8 和舊版已被取代。 AzCopy V10 是目前的版本,而它是不會與舊版共用任何語法的完整重寫。 請參閱 v8 至 v10 的 AzCopy 移轉指南

此外,請務必使用 參數搭配任何命令來使用 -h 內建的說明訊息 (例如: azcopy copy -h) 。 請參閱 取得命令說明。 若要在線檢視相同的資訊,請參閱 azcopy 複本

為了協助您瞭解命令,我們提供位於 AZCOPY 命令指南中的教育工具。 此工具示範最受歡迎的 AzCopy 命令以及最受歡迎的命令旗標。 我們的範例 在這裡。 如果您有問題,請先嘗試搜尋現有的 GitHub 問題 ,以查看是否已回答。

條件式存取原則錯誤

當您叫用 azcopy login 命令時,可能會收到下列錯誤:

無法執行登入命令:無法使用 tenantID “common”,Azure 目錄端點 “https://login.microsoftonline.com", autorest/adal/devicetoken: -REDACTED- AADSTS50005:使用者嘗試從平臺登入裝置 (目前不支援透過條件式存取原則的未知) 。 支援的裝置平臺包括:iOS、Android、Mac 和 Windows 類別。 追蹤標識碼:-REDACTED- 相互關聯標識碼:-REDACTED- 時間戳:2021-01-05 01:58:28Z

此錯誤表示您的系統管理員已設定條件式存取原則,以指定您可以登入的裝置類型。 AzCopy 會使用裝置程式代碼流程,這無法保證您使用 AzCopy 工具的電腦也是您登入的位置。

如果您的裝置是支援的平臺清單,則您可能可以使用 儲存體總管,這會整合 AzCopy 進行所有資料傳輸, (它透過秘密存放區) 將令牌傳遞至 AzCopy,但提供支援傳遞裝置資訊的登入工作流程。 AzCopy 本身也支援受控識別和服務主體,可做為替代方案。

如果您的裝置不在支援的平台清單中,請連絡您的系統管理員以取得協助。

伺服器忙碌、網路錯誤或逾時

如果您看到大量的失敗要求具有「503 伺服器忙碌」狀態,則記憶體服務會對您的要求進行節流。 如果您看到網路錯誤或逾時,您可能會嘗試在基礎結構中推送太多數據,而該基礎結構難以處理。 在所有情況下,因應措施都很類似。

如果您看到大型檔案因為每次特定區塊失敗而重複失敗,請嘗試根據您的特定案例限制並行網路連線或輸送量限制。 我們建議您一開始大幅降低效能、觀察其是否已解決初始問題,然後再次提升效能,直到達到整體平衡為止。

如需詳細資訊,請參閱 使用 Azure 記憶體優化 AzCopy 的效能

如果您使用 AzCopy 在帳戶之間複製數據,則執行 AzCopy 的網路品質和可靠性可能會影響整體效能。 即使數據從伺服器傳輸到伺服器,AzCopy 仍會起始每個檔案的呼叫,以便在服務端點之間複製。

使用 AzCopy 的已知條件約束

  • 不支援將數據從政府雲端複製到商業雲端。 不過,支援將數據從商業雲端複製到政府雲端。

  • 不支援異步服務端複製。 AzCopy 只會執行同步複製。 換句話說,作業完成時,數據已移動。

  • 複製到 Azure 檔案共享時,如果您忘記指定旗標 --preserve-smb-permissions ,而不想再次傳輸數據,請考慮使用 Robocopy 來轉移許可權。

  • Azure Functions 有不同的 MSI 驗證端點,AzCopy 尚不支援此端點。

另請參閱

與我們連絡,以取得說明

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