使用 AzCopy 從 Azure Blob 儲存體下載 Blob
您可以使用 AzCopy v10 命令列公用程式,從 Blob 儲存體下載 Blob 和目錄。
若要查看其他工作類型的範例,例如上傳檔案、與 Blob 儲存體同步或複製帳戶之間的 Blob,請參閱本文的後續步驟一節中所提供的連結。
開始使用
請參閱開始使用 AzCopy (部分機器翻譯) 一文來下載 AzCopy,並了解如何提供授權認證給儲存體服務。
注意
本文中的範例假設您已使用 Microsoft Entra ID 提供授權認證。
如果您想改為使用 SAS 權杖來授權存取 Blob 資料,則可將該權杖附加至每個 AzCopy 命令中的資源 URL。 例如: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'
。
下載 Blob
使用 azcopy copy 命令下載 Blob。
提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' '<local-file-path>'
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'C:\myDirectory\myTextFile.txt'
範例 (Data Lake Storage 端點)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'C:\myDirectory\myTextFile.txt'
注意
如果 Blob 的 Content-md5
屬性值包含雜湊,AzCopy 會計算所下載資料的 MD5 雜湊,並驗證儲存在 Blob Content-md5
屬性中的 MD5 雜湊是否與計算出的雜湊相符。 如果這些值不相符,除非將 --check-md5=NoCheck
或 --check-md5=LogOnly
附加至 copy 命令來覆寫此行為,否則下載會失敗。
下載目錄
使用 azcopy copy 命令下載目錄。
提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' '<local-directory-path>' --recursive
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'C:\myDirectory' --recursive
範例 (Data Lake Storage 端點)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'C:\myDirectory' --recursive
此範例會產生名為 C:\myDirectory\myBlobDirectory
的目錄,其中包含所有已下載的 Blob。
下載目錄內容
您可以下載目錄的內容,而不需使用萬用字元符號 (*) 複製包含的目錄本身。
提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
注意
目前僅沒有階層命名空間的帳戶支援此案例。
語法
azcopy copy 'https://<storage-account-name>.blob.core.windows.net/<container-name>/*' '<local-directory-path>/'
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory/*' 'C:\myDirectory'
附加 --recursive
旗標以下載所有子目錄中的檔案。
下載特定 Blob
您可以使用完整檔案名稱、含萬用字元 (*) 的部分名稱,或使用日期和時間來下載特定 Blob。
提示
這些範例使用單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數而非單引號 ('')。
指定多個完整的 Blob 名稱
使用 azcopy copy 命令搭配 --include-path
選項。 使用分號 (;
) 來分隔各個 Blob 名稱。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>' '<local-directory-path>' --include-path <semicolon-separated-file-list>
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory' 'C:\myDirectory' --include-path 'photos;documents\myFile.txt' --recursive
範例 (Data Lake Storage 端點)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory' 'C:\myDirectory' --include-path 'photos;documents\myFile.txt'--recursive
在此範例中,AzCopy 會傳輸 https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory/photos
目錄和 https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory/documents/myFile.txt
檔案。 包含 https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory/photos
選項以傳輸 --recursive
目錄中的所有 Blob。
您也可以使用 --exclude-path
選項來排除 Blob。 若要深入了解,請參閱 azcopy copy 參考文件。
使用萬用字元
使用 azcopy copy 命令搭配 --include-pattern
選項。 指定包含萬用字元的部分名稱。 使用分號 (;
) 分隔名稱。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>' '<local-directory-path>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory' 'C:\myDirectory' --include-pattern 'myFile*.txt;*.pdf*'
範例 (階層命名空間)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory' 'C:\myDirectory' --include-pattern 'myFile*.txt;*.pdf*'
您也可以使用 --exclude-pattern
選項來排除 Blob。 若要深入了解,請參閱 azcopy copy 參考文件。
--include-pattern
和 --exclude-pattern
選項只適用於 Blob 名稱,不適用於路徑。 如果您想要複製存在於目錄樹狀結構中的所有文字檔 (Blob),請使用 -recursive
選項取得整個目錄樹狀結構,然後使用 -include-pattern
並指定 *.txt
來取得所有文字檔。
下載於某日期和時間之前或之後修改過的 Blob
使用 azcopy copy 命令搭配 --include-before
或 --include-after
選項。 以 ISO-8601 格式指定日期和時間 (例如:2020-08-19T15:04:00Z
)。
下列範例會下載於指定日期或該日之後修改過的檔案。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>/*' '<local-directory-path>' --include-after <Date-Time-in-ISO-8601-format>
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory/*' 'C:\myDirectory' --include-after '2020-08-19T15:04:00Z'
範例 (Data Lake Storage 端點)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory/*' 'C:\myDirectory' --include-after '2020-08-19T15:04:00Z'
如需詳細參考資料,請參閱 azcopy copy 參考文件。
下載舊版的 Blob
如果已啟用 Blob 版本設定,即可下載一或多個舊版的 Blob。
首先,建立包含版本識別碼清單的文字檔。 每個版本識別碼都必須顯示在不同行上。 例如:
2020-08-17T05:50:34.2199403Z
2020-08-17T05:50:34.5041365Z
2020-08-17T05:50:36.7607103Z
然後使用 azcopy copy 命令搭配 --list-of-versions
選項。 指定包含版本清單之文字檔的所在位置 (例如:D:\\list-of-versions.txt
)。
下載 Blob 快照集
您可以參考 Blob 快照集的 DateTime 值來下載 Blob 快照集。
語法
azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>?sharesnapshot=<DateTime-of-snapshot>' '<local-file-path>'
範例
azcopy copy 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt?sharesnapshot=2020-09-23T08:21:07.0000000Z' 'C:\myDirectory\myTextFile.txt'
範例 (Data Lake Storage 端點)
azcopy copy 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myTextFile.txt?sharesnapshot=2020-09-23T08:21:07.0000000Z' 'C:\myDirectory\myTextFile.txt'
注意
如果您使用 SAS 權杖來授權存取 Blob 資料,請在 SAS 權杖之後附加快照的 DateTime。 例如: 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D&sharesnapshot=2020-09-23T08:21:07.0000000Z'
。
使用選用的旗標下載
您可以使用選用的旗標來調整下載作業。 以下提供數個範例。
案例 | 旗標 |
---|---|
自動解壓縮檔案。 | --decompress |
指定您希望複製相關記錄項目的詳細程度。 | --log-level=[WARNING|ERROR|INFO|NONE] |
指定是否及如何覆寫位於目的地的衝突檔案和 Blob。 | --overwrite=[true|false|ifSourceNewer|prompt] |
如需完整的清單,請參閱選項。
下載靜態網站內容
AzCopy 不支援透過公用端點從載入於 Azure 儲存體 的靜態網站下載資料,例如 https://mystorageaccount.z12.web.core.windows.net
。 請改用 $web
Blob 端點上的容器,從靜態網站下載檔案。
azcopy copy 'https://mystorageaccount.blob.core.windows.net/$web/*' 'C:\myDirectory' --recursive
下一步
如需更多範例,請參閱以下文章:
- 範例: 上傳
- 範例:在帳戶之間複製
- 範例: 同步處理
- 範例:Amazon S3 貯體
- 範例:Google Cloud Storage
- 範例:Azure 檔案儲存體 (部分機器翻譯)
- 教學課程:使用 AzCopy 將內部部署資料移轉至雲端儲存體
請參閱下列文章,以進行設定、將效能最佳化,以及針對問題進行疑難排解: