針對 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) 令牌,請確定下列語句成立:
SAS 權杖的到期和開始時間正確。
您已為權杖選取所有必要權限。
您使用官方 SDK 或工具產生權杖。 嘗試使用儲存體總管 (如果您尚未這麼做)。
Azure RBAC
如果您透過 azcopy login
命令使用 Azure RBAC 角色,請確認您已將適當的 Azure 角色指派給身分識別(例如記憶體 Blob 數據參與者角色)。
若要深入瞭解 Azure 角色,請參閱<指派 Azure 角色以存取 Blob 資料>(機器翻譯)。
ACL
如果您使用存取控制清單 (ACL),請確認您的身分識別出現在您想要存取的每個檔案或目錄的 ACL 專案中。 此外,請確定每個 ACL 項目都反映適當的權限等級。
若要深入了解 ACL,請參閱<Azure Data Lake Storage Gen2 中的存取控制清單 (ACL)>(機器翻譯)。
若要深入瞭解如何將 Azure 角色併入 ACL,以及系統如何評估它們以做出授權決策,請參閱<Azure Data Lake Storage Gen2 中的存取控制模型>(機器翻譯)。
防火牆與私人端點問題
如果記憶體防火牆設定不允許從 AzCopy 執行所在的裝載元件進行存取,AzCopy 作業會傳回 HTTP “403” 錯誤碼。
注意
在本文中,裝載元件一詞是指實體計算機、虛擬機(VM)或容器。
允許的複製作業範圍
AllowedCopyScope
記憶體帳戶的 屬性可用來指定將數據複製到目的地帳戶的環境。 此屬性會顯示在 Azure 入口網站 中,做為複製作業 (預覽) 組態設定的允許範圍。 根據預設,屬性不會指定值。 在您明確設定值之前,屬性不會傳回值。 屬性 AllowedCopyScope
有三個可能的值,如下表所示。
值 | Description |
---|---|
(null ) |
(預設值)允許從任何記憶體帳戶複製到目的地帳戶。 |
Microsoft Entra ID |
只允許從與目的地帳戶位於相同Microsoft Entra 租使用者內的帳戶複製。 |
PrivateLink |
只允許從具有與目的地帳戶相同虛擬網路之私人連結的記憶體帳戶複製。 |
如需此屬性及其相關聯組態設定的詳細資訊,請參閱 將複製作業的來源限製為記憶體帳戶。
將數據從本機裝載元件傳送或傳送至本機裝載元件
如果您要上傳或下載記憶體帳戶與內部部署裝載元件之間的數據,請確定執行 AzCopy 的裝載元件可以存取來源或目的地記憶體帳戶。 您可能需要在來源或目的地帳戶的防火牆設定中使用IP網路規則,以允許從裝載元件的公用IP位址存取。
在記憶體帳戶之間傳輸數據
「403」授權錯誤可防止您使用 AzCopy 執行所在的用戶端裝載元件,在帳戶之間傳輸數據。
如果您要在記憶體帳戶之間複製數據,請確定執行 AzCopy 的裝載元件可以同時存取來源和目的地帳戶。 您可能需要在來源和目的地帳戶的防火牆設定中使用IP網路規則,以允許從裝載元件的公用IP位址存取。 服務會使用 AzCopy 用戶端裝載元件的 IP 位址來授權來源到目的地流量。 若要了解如何將公用 IP 位址新增至儲存體帳戶的防火牆設定,請參閱從網際網路 IP 範圍授與存取權。
如果您的 VM 沒有或不能有公用 IP 位址,請考慮使用私人端點。 請參閱針對 Azure 儲存體使用私人端點。
使用私人連結
Private Link 位於虛擬網路/子網層級。 如果您想要 AzCopy 要求通過 Private Link,則 AzCopy 必須從該虛擬網路/子網中執行的 VM 提出這些要求。 例如,假設您在 VNet1/Subnet1 中設定 Private Link,但 AzCopy 執行所在的 VM 位於 VNet1/Subnet2。 在此案例中,AzCopy 要求不會使用 Private Link,而且要求應該會失敗。
Proxy 相關錯誤
如果您遇到 TCP 錯誤,例如「撥號 tcp:查閱 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 中國) |
(blob | file | dfs).core.chinacloudapi.cn (Azure 中國) |
login.microsoftonline.de (Azure 德國) |
(blob | file | dfs).core.cloudapi.de (Azure 德國) |
login.microsoftonline.us (Azure US Government) |
(blob | file | dfs).core.usgovcloudapi.net (Azure US Government) |
x509:由未知授權單位簽署的憑證
此錯誤通常與使用操作系統不信任的安全套接字層 (SSL) 憑證之 Proxy 的使用有關。 檢查您的設定,並確定憑證在作業系統層級上受到信任。
建議您將憑證新增至主控元件的跟證書存儲,因為這是信任授權單位的保留位置。
無法辨識的參數
如果您收到錯誤訊息,指出無法辨識您的參數,請確定您使用的是正確的 AzCopy 版本。 AzCopy v8 和舊版已被取代。 AzCopy v10 是目前的版本,而且是完全重寫,不會與舊版共用任何語法。 請參閱適用於 v8 至 v10 的 AzCopy 移轉指南。
此外,請務必使用 -h
參數搭配任何命令使用內建說明訊息(例如 , azcopy copy -h
。 請參閱取得命令說明。 若要在線上檢視相同資訊,請參閱 azcopy copy。
為了協助您瞭解命令,我們提供位於 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 意見反應社群提交產品意見反應。