針對 AzCopy v10 中的問題進行疑難解答
本文討論使用 AzCopy 時可能會遇到的常見問題。 本文也可協助您找出問題的原因,並建議如何解決這些問題。
識別問題
您可以查看結束代碼來判斷作業是否成功。
如果結束代碼為 0-success
,則作業會順利完成。
如果結束代碼為 1-error
,請檢查記錄檔。 瞭解確切的錯誤訊息之後,您可以更輕鬆地搜尋正確的關鍵詞並判斷解決方案。 若要深入瞭解,請 參閱在 AzCopy 中使用記錄檔和計劃檔案來尋找錯誤並繼續作業。
如果結束代碼為 2-panic
,請檢查記錄檔是否存在。 如果檔案不存在,請提出 Bug 或連絡以提供支援。
系統可能會產生任何其他非零結束代碼 (,例如 OOMKilled
) 。 如需特殊結束代碼,請參閱您的操作系統檔。
“403” 錯誤
「403」錯誤很常見。 有時候它們是良性的,而且不會導致傳輸失敗。 例如,在 AzCopy 記錄中,您可能會看到 HEAD
要求收到「403」錯誤。 當 AzCopy 檢查資源是否為公用時,就會出現這些錯誤。 在大部分情況下,您可以忽略這些實例。
在某些情況下,「403」錯誤可能會導致傳輸失敗。 如果發生此問題,在您解決問題之前,其他傳輸檔案的嘗試可能會失敗。 「403」錯誤可能是由驗證和授權問題所造成。 如果記憶體帳戶防火牆組態封鎖要求,也可能會發生這些錯誤。
驗證和授權問題
發生防止數據傳輸的「403」錯誤,是因為涉及 SAS 令牌、角色型存取控制 (Azure RBAC) 角色,以及 ACL) 組態 (存取控制清單的問題。
SAS 令牌
如果您使用共用存取簽章 (SAS) 令牌,請確定下列語句為 true:
SAS 令牌的到期和開始時間是適當的。
您已選取權杖的所有必要許可權。
您已使用官方 SDK 或工具來產生令牌。 如果您還沒有,請嘗試 儲存體總管。
Azure RBAC
如果您透過 命令使用 Azure RBAC 角色 azcopy login
,請確認您已將適當的 Azure 角色指派給身分識別 (例如,記憶體 Blob 資料參與者角色) 。
若要深入瞭解 Azure 角色,請 參閱指派 Azure 角色以存取 Blob 數據。
Acl
如果您使用存取控制清單 (ACL) ,請確認您的身分識別出現在您想要存取之每個檔案或目錄的 ACL 專案中。 此外,請確定每個 ACL 項目都會反映適當的許可權等級。
若要深入瞭解 ACL 和 ACL 專案,請參閱訪問控制清單 (ACL) 中 Azure Data Lake Storage Gen2。
若要深入瞭解如何將 Azure 角色與 ACL 併入,以及系統如何評估這些角色以做出授權決策,請參閱 Azure Data Lake Storage Gen2 中的訪問控制模型。
防火牆和私人端點問題
如果記憶體防火牆組態不允許從 AzCopy 執行所在的裝載元件存取,AzCopy 作業會傳回 HTTP “403” 錯誤碼。
注意事項
在本文中,裝載 元件 一詞是指實體計算機、虛擬機 (VM) 或容器。
允許的複製作業範圍
儲存 AllowedCopyScope
體帳戶的 屬性是用來指定您可以從中將數據複製到目的地帳戶的環境。 此屬性會在 Azure 入口網站 中顯示為複製作業的允許範圍, (預覽) 組態設定。 根據預設,屬性不會被指定值。 屬性在您明確設定之前不會傳回值。 屬性 AllowedCopyScope
有三個可能的值,如下表所示。
值 | 描述 |
---|---|
(null ) |
(預設值) 允許從任何記憶體帳戶複製到目的地帳戶。 |
Microsoft Entra ID |
只允許從與目的地帳戶位於相同 Microsoft Entra 租使用者內的帳戶複製。 |
PrivateLink |
只允許從具有私人連結的記憶體帳戶複製到與目的地帳戶相同的虛擬網路。 |
如需此屬性及其相關組態設定的詳細資訊,請參閱 將複製作業的來源限制為記憶體帳戶。
將數據從本機裝載元件傳輸或傳輸至本機裝載元件
如果您要在記憶體帳戶與內部部署裝載元件之間上傳或下載數據,請確定執行 AzCopy 的裝載元件可以存取來源或目的地記憶體帳戶。 您可能必須在來源或目的地帳戶的防火牆設定中使用IP網路規則,以允許從主控元件的公用IP位址存取。
在記憶體帳戶之間傳輸數據
「403」授權錯誤可防止您使用 AzCopy 執行所在的用戶端裝載元件,在帳戶之間傳輸數據。
如果您要在記憶體帳戶之間複製數據,請確定執行 AzCopy 的裝載元件可以存取來源和目的地帳戶。 您可能必須在來源和目的地帳戶的防火牆設定中使用IP網路規則,以允許從主控元件的公用IP位址存取。 服務會使用 AzCopy 用戶端裝載元件的 IP 位址來授權來源到目的地流量。 若要瞭解如何將公用IP位址新增至記憶體帳戶的防火牆設定,請參閱 授與來自因特網IP範圍的存取權。
如果您的 VM 沒有或不能有公用 IP 位址,請考慮使用私人端點。 請參閱 使用 Azure 記憶體的私人端點。
使用 Private Link
Private Link 位於虛擬網路/子網層級。 如果您想要讓 AzCopy 要求通過 Private Link,則 AzCopy 必須從該虛擬網路/子網中執行的 VM 提出這些要求。 例如,假設您在 VNet1/Subnet1 中設定 Private Link,但 AzCopy 執行所在的 VM 位於 VNet1/Subnet2 中。 在此案例中,AzCopy 要求不會使用 Private Link,且要求預期會失敗。
Proxy 相關錯誤
如果您遇到 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:由未知授權單位簽署的憑證
此錯誤通常與使用安全套接字層 (SSL) 憑證不受操作系統信任的 Proxy 有關。 確認您的設定,並確定憑證在操作系統層級受到信任。
建議您將憑證新增至主控元件的跟證書存放區,因為這是信任授權單位的保留位置。
無法辨識的參數
如果您收到錯誤訊息指出無法辨識您的參數,請確定您使用的是正確的 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 尚不支援 MSI 驗證。
另請參閱
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。