使用 AzCopy 將檔案上傳到 Azure 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>'

建立容器

您可以使用 azcopy make 命令來建立容器。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy make 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>'

範例

azcopy make 'https://mystorageaccount.blob.core.windows.net/mycontainer'

範例 (Data Lake Storage 端點)

azcopy make 'https://mystorageaccount.dfs.core.windows.net/mycontainer'

如需詳細的參考文件,請參閱 azcopy make

上傳檔案

使用 azcopy copy 命令上傳檔案。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy '<local-file-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-name>'

範例

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

您也可以在檔案路徑或檔案名中的任何位置使用萬用字元符號 (*) 來上傳檔案。 例如,'C:\myDirectory\*.txt'C:\my*\*.txt

上傳目錄

使用 azcopy copy 命令上傳目錄。

此範例會將目錄 (以及該目錄中的所有檔案) 複製到 Blob 容器。 結果是會在 Blob 容器中建立具有相同名稱的目錄。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

範例

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --recursive

若要複製到容器內的目錄,只需在命令字串中指定該目錄的名稱即可。

範例

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --recursive

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' --recursive

如果您指定容器中不存在的目錄名稱,AzCopy 會依該名稱建立新目錄。

上傳目錄內容

使用 azcopy copy 命令上傳目錄內容。 使用萬用字元符號 (*) 上傳內容,而不復制包含的目錄本身。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

語法

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>'

範例

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory'

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory'

附加 --recursive 旗標以上傳所有子目錄中的檔案。

上傳特定檔案

您可以使用完整檔案名稱、含萬用字元 (*) 的部分名稱,或使用日期和時間來上傳特定檔案。

提示

這些範例使用單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數而非單引號 ('')。

指定多個完整檔案名稱

使用 azcopy copy 命令搭配 --include-path 選項。 使用分號 (;) 來分隔各個檔案名稱。

語法

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-path <semicolon-separated-file-list>

範例

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

在此範例中,AzCopy 會傳輸 C:\myDirectory\photos 目錄和 C:\myDirectory\documents\myFile.txt 檔案。 包含 C:\myDirectory\photos 選項以傳輸 --recursive 目錄中的所有檔案。

您也可以使用 --exclude-path 選項來排除檔案。 若要深入了解,請參閱 azcopy copy 參考文件。

使用萬用字元

使用 azcopy copy 命令搭配 --include-pattern 選項。 指定包含萬用字元的部分名稱。 使用分號 (;) 分隔名稱。

語法

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>

範例

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

您也可以使用 --exclude-pattern 選項來排除檔案。 若要深入了解,請參閱 azcopy copy 參考文件。

--include-pattern--exclude-pattern 選項只適用於檔案名稱,不適用於路徑。 如果您想要複製存在於目錄樹狀結構中的所有文字檔案,請使用 -recursive 選項取得整個目錄樹狀結構,然後使用 -include-pattern 並指定 *.txt 來取得所有文字檔。

上傳於某日期和時間之前或之後修改過的檔案

使用 azcopy copy 命令搭配 --include-before--include-after 選項。 以 ISO-8601 格式指定日期和時間 (例如:2020-08-19T15:04:00Z)。

下列範例會上傳於指定日期或該日之後修改過的檔案。

語法

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>' --include-after <Date-Time-in-ISO-8601-format>

範例

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory'  --include-after '2020-08-19T15:04:00Z'

範例 (Data Lake Storage 端點)

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory'   --include-after '2020-08-19T15:04:00Z'

如需詳細參考資料,請參閱 azcopy copy 參考文件。

使用索引標記上傳

您可以上傳檔案,並將 Blob 索引標記 新增至目標 Blob。

如果您使用 Microsoft Entra 授權,必須將儲存體 Blob 資料擁有者角色指派給您的安全性主體,或必須透過自訂 Azure 角色獲得 Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeAzure 資源提供者作業的權限。 如果您使用共用存取簽章 (SAS) 權杖,該權杖必須透過 t SAS 權限提供 Blob 標記的存取權。

若要新增標記,請使用 --blob-tags 選項以及 URL 編碼的索引鍵/值組。 例如,若要新增索引鍵 my tag 和值 my tag value,您可以將 --blob-tags='my%20tag=my%20tag%20value' 新增至目的地參數。

使用 & 符號 (&) 來分隔多個索引標記。 例如,如果您要新增索引鍵 my second tag 和值 my second tag value,則完整的選項字串會是 --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

下列範例顯示如何使用 --blob-tags 選項。

提示

此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。

上傳檔案

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

上傳目錄

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

上傳目錄內容

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

注意

如果您指定來源的目錄,則複製到目的地的所有 Blob 都會有您在命令中指定的相同標記。

使用選用的旗標上傳

您可以使用選用的旗標來調整上傳作業。 以下提供數個範例。

案例 旗標
以附加 Blob 或分頁 Blob 的形式上傳檔案。 --blob-type=[BlockBlob|PageBlob|AppendBlob]
上傳至特定存取層 (例如封存層)。 --block-blob-tier=[None|Hot|Cool|Archive]

如需完整的清單,請參閱選項

下一步

如需更多範例,請參閱以下文章:

請參閱下列文章,以進行設定、將效能最佳化,以及針對問題進行疑難排解: