共用方式為


在 Windows 上使用 AzCopy 8.1 傳輸資料

AzCopy 是一種命令行公用程式,其設計目的是使用專為最佳效能而設計的簡單命令,將數據複製到 Azure Blob、檔案和數據表記憶體Microsoft。 您可以在檔案系統和儲存體帳戶之間,或者儲存體帳戶之間複製資料。

重要

本文主要介紹舊版 AzCopy。 若要安裝最新版本的 AzCopy,請參閱 AzCopy v10

如果您選擇安裝舊版 AzCopy (AzCopy v8.1),則可以下載多個版本。 Windows 上的 AzCopy 提供 Windows 樣式命令行選項。 Linux 上的 AzCopy 是以 LINUX 平台為目標,提供 POSIX 樣式命令行選項。 本文涵蓋 Windows 上的 AzCopy。

在 Windows 下載並安裝 AzCopy (v8.1)

在 Windows 上下載 AzCopy (v8.1)。

AzCopy on Windows 8.1 版本資訊

  • 最新版本不再支持數據表服務。 如果您使用數據表匯出功能,請下載 AzCopy 7.3 版本。
  • 使用 .NET Core 2.1 建置,而所有 .NET Core 相依性現在都會封裝在安裝中。
  • 已新增 OAuth 驗證支援。 使用 azcopy login 以使用 Azure Active Directory 登入。

Azcopy 與數據表支援 (v7.3)

下載 AzCopy 7.3 與數據表支援

安裝後步驟

使用安裝程式在 Windows 上安裝 AzCopy 之後,請開啟命令視窗並瀏覽至您電腦上的 AzCopy 安裝目錄 - 可執行檔所在的位置 AzCopy.exe 。 如有需要,您可以將 AzCopy 安裝位置新增至系統路徑。 根據預設,AzCopy 會安裝至 %ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy%ProgramFiles%\Microsoft SDKs\Azure\AzCopy

撰寫您的第一個 AzCopy 命令

AzCopy 命令的基本語法為:

AzCopy /Source:<source> /Dest:<destination> [Options]

下列範例示範從 azure Blob、檔案和數據表Microsoft複製數據的各種案例。 如需 每個範例中所使用參數的詳細說明,請參閱 AzCopy Parameters 一節。

從 Blob 記憶體下載 Blob

讓我們看看使用 AzCopy 下載 Blob 的幾種方式。

下載單一 Blob

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /Pattern:"abc.txt"

請注意,如果資料夾 C:\myfolder 不存在,AzCopy 會建立資料夾並下載 abc.txt 到新的資料夾。

從次要區域下載單一 Blob

AzCopy /Source:https://myaccount-secondary.blob.core.windows.net/mynewcontainer /Dest:C:\myfolder /SourceKey:key /Pattern:"abc.txt"

請注意,您必須啟用讀取許可權異地備援記憶體,才能存取次要區域。

下載容器中的所有 Blob

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /S

假設下列 Blob 位於指定的容器中:

abc.txt
abc1.txt
abc2.txt
vd1\a.txt
vd1\abcd.txt

下載作業之後,目錄 C:\myfolder 會包含下列檔案:

C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt
C:\myfolder\vd1\a.txt
C:\myfolder\vd1\abcd.txt

如果您未指定 選項 /S,則不會下載任何 Blob。

下載具有特定前置詞的 Blob

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /Pattern:a /S

假設下列 Blob 位於指定的容器中。 所有開頭為前置詞 a 的 Blob 都會下載:

abc.txt
abc1.txt
abc2.txt
xyz.txt
vd1\a.txt
vd1\abcd.txt

下載作業之後,資料夾 C:\myfolder 會包含下列檔案:

C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt

前置詞會套用至虛擬目錄,此目錄會形成 Blob 名稱的第一個部分。 在上述範例中,虛擬目錄不符合指定的前置詞,因此不會下載。 此外,如果未指定 選項 /S ,AzCopy 不會下載任何 Blob。

將匯出檔案的上次修改時間設定為與來源 Blob 相同

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /MT

您也可以根據 Blob 上次修改的時間,從下載作業中排除 Blob。 例如,如果您想要排除上次修改時間與目的地檔案相同或更新的 Blob,請新增 /XN 選項:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /MT /XN

如果您想要排除上次修改時間與目的地檔案相同或更早的 Blob,請新增 /XO 選項:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:key /MT /XO

將 Blob 上傳至 Blob 記憶體

讓我們看看使用 AzCopy 上傳 Blob 的數種方式。

上傳單一 Blob

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Pattern:"abc.txt"

如果指定的目的地容器不存在,則 AzCopy 會建立此容器並將檔案上傳至該容器中。

將單一 Blob 上傳至虛擬目錄

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer/vd /DestKey:key /Pattern:abc.txt

如果指定的虛擬目錄不存在,AzCopy 會上傳檔案,以在其名稱中包含虛擬目錄(例如vd/abc.txt 在上述範例中)。

上傳資料夾中的所有 Blob

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /S

指定選項 /S 會以遞歸方式將指定目錄的內容上傳至 Blob 記憶體,這表示也會上傳所有子資料夾及其檔案。 例如,假設下列檔案位於 資料夾中 C:\myfolder

C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt
C:\myfolder\subfolder\a.txt
C:\myfolder\subfolder\abcd.txt

上傳作業之後,容器會包含下列檔案:

abc.txt
abc1.txt
abc2.txt
subfolder\a.txt
subfolder\abcd.txt

如果您未指定 選項 /S,AzCopy 不會以遞歸方式上傳。 上傳作業之後,容器會包含下列檔案:

abc.txt
abc1.txt
abc2.txt

上傳符合特定模式的 Blob

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Pattern:a* /S

假設下列檔案位於資料夾中 C:\myfolder

C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt
C:\myfolder\xyz.txt
C:\myfolder\subfolder\a.txt
C:\myfolder\subfolder\abcd.txt

上傳作業之後,容器會包含下列檔案:

abc.txt
abc1.txt
abc2.txt
subfolder\a.txt
subfolder\abcd.txt

如果您未指定 選項 /S,AzCopy 只會上傳不在虛擬目錄中的 Blob:

C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt

指定目的地 Blob 的 MIME 內容類型

根據預設,AzCopy 會將目的地 Blob 的內容類型設定為 application/octet-stream。 從 3.1.0 版開始,您可以透過 選項 /SetContentType:[content-type]明確指定內容類型。 此語法會設定上傳作業中所有 Blob 的內容類型。

AzCopy /Source:C:\myfolder\ /Dest:https://myaccount.blob.core.windows.net/myContainer/ /DestKey:key /Pattern:ab /SetContentType:video/mp4

如果您指定 /SetContentType 不含值,AzCopy 會根據其擴展名來設定每個 Blob 或檔案的內容類型。

AzCopy /Source:C:\myfolder\ /Dest:https://myaccount.blob.core.windows.net/myContainer/ /DestKey:key /Pattern:ab /SetContentType

複製 Blob 記憶體中的 Blob

讓我們看看使用 AzCopy 將 Blob 從一個位置複製到另一個位置的數種方式。

將單一 Blob 從一個容器複製到相同記憶體帳戶內的另一個 Blob

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer1 /Dest:https://myaccount.blob.core.windows.net/mycontainer2 /SourceKey:key /DestKey:key /Pattern:abc.txt

當您複製記憶體帳戶內的 Blob 時, 會執行伺服器端複製 作業。

將單一 Blob 從一個記憶體帳戶複製到另一個記憶體帳戶

AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 /Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt

當您跨記憶體帳戶複製 Blob 時, 會執行伺服器端複製 作業。

將單一 Blob 從次要區域複製到主要區域

AzCopy /Source:https://myaccount1-secondary.blob.core.windows.net/mynewcontainer1 /Dest:https://myaccount2.blob.core.windows.net/mynewcontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt

請注意,您必須啟用讀取許可權異地備援記憶體,才能存取次要記憶體。

將單一 Blob 及其快照集從一個記憶體帳戶複製到另一個記憶體帳戶

AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 /Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt /Snapshot

複製作業之後,目標容器會包含 Blob 及其快照集。 假設上述範例中的 Blob 有兩個快照集,容器會包含下列 Blob 和快照集:

abc.txt
abc (2013-02-25 080757).txt
abc (2014-02-21 150331).txt

將容器中的所有 Blob 複製到另一個記憶體帳戶

AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 
/Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /S

指定選項 /S 會以遞歸方式上傳指定容器的內容。 如需詳細資訊和範例,請參閱 上傳資料夾中 的所有 Blob。

將 Blob 從一個記憶體帳戶同步複製到另一個記憶體帳戶

AzCopy 預設會以異步方式在兩個記憶體端點之間複製數據。 因此,複製作業會使用沒有 SLA 的備用頻寬容量,在複製 Blob 的速度方面執行,AzCopy 會定期檢查複製狀態,直到複製完成或失敗為止。

選項 /SyncCopy 可確保複製作業的速度一致。 AzCopy 會下載 Blob 以從指定的來源複製到本機記憶體,然後將其上傳至 Blob 記憶體目的地,以執行同步複製。

AzCopy /Source:https://myaccount1.blob.core.windows.net/myContainer/ /Dest:https://myaccount2.blob.core.windows.net/myContainer/ /SourceKey:key1 /DestKey:key2 /Pattern:ab /SyncCopy

/SyncCopy 相較於異步複製,可能會產生額外的輸出成本,建議的方法是在與來源記憶體帳戶位於相同區域的 Azure VM 中使用此選項,以避免輸出成本。

從檔案記憶體下載檔

讓我們看看使用 AzCopy 下載檔案的幾種方式。

下載單一檔案

AzCopy /Source:https://myaccount.file.core.windows.net/myfileshare/myfolder1/ /Dest:C:\myfolder /SourceKey:key /Pattern:abc.txt

如果指定的來源是 Azure 檔案共用,則您必須指定確切的檔名,例如 abc.txt,以下載單一檔案,或指定選項/S以遞歸方式下載共用中的所有檔案。 嘗試同時指定檔案模式和選項 /S 會導致錯誤。

下載目錄中的所有檔案

AzCopy /Source:https://myaccount.file.core.windows.net/myfileshare/ /Dest:C:\myfolder /SourceKey:key /S

請注意,不會下載空的資料夾。

將檔案上傳至 Azure 檔案共用

讓我們看看使用 AzCopy 上傳檔案的幾種方式。

上傳單一檔案

AzCopy /Source:C:\myfolder /Dest:https://myaccount.file.core.windows.net/myfileshare/ /DestKey:key /Pattern:abc.txt

上傳資料夾中的所有檔案

AzCopy /Source:C:\myfolder /Dest:https://myaccount.file.core.windows.net/myfileshare/ /DestKey:key /S

請注意,不會上傳空的資料夾。

上傳符合特定模式的檔案

AzCopy /Source:C:\myfolder /Dest:https://myaccount.file.core.windows.net/myfileshare/ /DestKey:key /Pattern:ab* /S

在檔案記憶體中複製檔案

讓我們看看使用 AzCopy 在 Azure 檔案共用中複製檔案的數種方式。

從一個檔案共享複製到另一個檔案共用

AzCopy /Source:https://myaccount1.file.core.windows.net/myfileshare1/ /Dest:https://myaccount2.file.core.windows.net/myfileshare2/ /SourceKey:key1 /DestKey:key2 /S

當您跨檔案共享複製檔案時, 會執行伺服器端複製 作業。

從 Azure 檔案共享複製到 Blob 記憶體

AzCopy /Source:https://myaccount1.file.core.windows.net/myfileshare/ /Dest:https://myaccount2.blob.core.windows.net/mycontainer/ /SourceKey:key1 /DestKey:key2 /S

當您將檔案從檔案共享複製到 Blob 時, 會執行伺服器端複製 作業。

將 Blob 從 Blob 記憶體複製到 Azure 檔案共用

AzCopy /Source:https://myaccount1.blob.core.windows.net/mycontainer/ /Dest:https://myaccount2.file.core.windows.net/myfileshare/ /SourceKey:key1 /DestKey:key2 /S

當您將檔案從 Blob 複製到檔案共享時, 會執行伺服器端複製 作業。

同步複製檔案

您可以指定 /SyncCopy 選項,將資料從檔案記憶體複製到檔案記憶體、從檔案記憶體複製到 Blob 記憶體,以及從 Blob 記憶體同步複製到檔案記憶體,AzCopy 會藉由將源數據下載至本機記憶體,並將其再次上傳至目的地來執行此作業。 適用標準輸出成本。

AzCopy /Source:https://myaccount1.file.core.windows.net/myfileshare1/ /Dest:https://myaccount2.file.core.windows.net/myfileshare2/ /SourceKey:key1 /DestKey:key2 /S /SyncCopy

從檔案記憶體複製到 Blob 記憶體時,預設 Blob 類型為區塊 Blob;用戶可以指定選項 /BlobType:page 來變更目的地 Blob 類型。

請注意, /SyncCopy 相較於異步複製,可能會產生額外的輸出成本。 建議的方法是在與來源記憶體帳戶位於相同區域的 Azure VM 中使用此選項,以避免輸出成本。

從數據表記憶體匯出數據

讓我們看看如何使用 AzCopy 從 Azure 資料表記憶體匯出數據。

匯出數據表

AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:C:\myfolder\ /SourceKey:key

AzCopy 會將指令清單檔案寫入指定的目的地資料夾。 指令清單檔用於匯入程式,以找出必要的數據檔並執行數據驗證。 指令清單檔預設會使用下列命名慣例:

<account name>_<table name>_<timestamp>.manifest

使用者也可以指定選項 /Manifest:<manifest file name> 來設定指令清單檔名。

AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:C:\myfolder\ /SourceKey:key /Manifest:abc.manifest

將匯出從數據表記憶體分割成多個檔案

AzCopy /Source:https://myaccount.table.core.windows.net/mytable/ /Dest:C:\myfolder /SourceKey:key /S /SplitSize:100

AzCopy 會使用 分割數據檔名稱中的磁碟區索引 來區分多個檔案。 磁碟區索引包含兩個部分:分割 區索引鍵範圍索引分割檔案索引。 這兩個索引都是以零起始的。

如果使用者未指定 選項 /PKRS,則分割區索引鍵範圍索引為 0。

例如,假設 AzCopy 會在使用者指定 選項 /SplitSize之後產生兩個數據檔。 產生的資料檔案名稱可能是:

myaccount_mytable_20140903T051850.8128447Z_0_0_C3040FE8.json
myaccount_mytable_20140903T051850.8128447Z_0_1_0AB9AC20.json

請注意,選項 /SplitSize 的最小可能值為 32MB。 如果指定的目的地是 Blob 記憶體,則 AzCopy 會在資料檔的大小達到 Blob 大小限制 (200GB)時分割數據檔,而不論使用者是否已指定選項 /SplitSize

將數據表匯出至 JSON 或 CSV 資料檔案格式

根據預設,AzCopy 會將數據表導出至 JSON 數據檔。 您可以指定選項 /PayloadFormat:JSON|CSV ,將資料表匯出為 JSON 或 CSV。

AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:C:\myfolder\ /SourceKey:key /PayloadFormat:CSV

指定 CSV 承載格式時,AzCopy 也會為每個資料檔產生擴展名為 .schema.csv 的架構檔案。

同時匯出數據表實體

AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:C:\myfolder\ /SourceKey:key /PKRS:"aa#bb"

當使用者指定 選項 /PKRS時,AzCopy 會啟動並行作業以匯出實體。 每個作業都會匯出一個分割區索引鍵範圍。

請注意,並行作業的數目也會由 選項 /NC控制。 AzCopy 會使用核心處理器數目做為複製數據表實體時的預設值 /NC ,即使未指定也一樣 /NC 。 當使用者指定 選項 /PKRS時,AzCopy 會使用兩個值中的較小值 -- 分割索引鍵範圍與隱含或明確指定的並行作業 - 來判斷要啟動的並行作業數目。 如需詳細資訊,請在命令列輸入 AzCopy /?:NC

將數據表導出至 Blob 記憶體

AzCopy /Source:https://myaccount.table.core.windows.net/myTable/ /Dest:https://myaccount.blob.core.windows.net/mycontainer/ /SourceKey:key1 /Destkey:key2

AzCopy 會使用下列命名慣例,在 Blob 容器中產生 JSON 數據檔:

<account name>_<table name>_<timestamp>_<volume index>_<CRC>.json

產生的 JSON 資料檔會遵循最小元數據的承載格式。 如需此承載格式的詳細資訊,請參閱 數據表服務作業的承載格式。

請注意,將數據表匯出至 Blob 時,AzCopy 會將數據表實體下載到本機暫存數據檔,然後將這些實體上傳至 Blob。 這些暫存資料檔會放入具有預設路徑 “%LocalAppData%\Microsoft\Azure\AzCopy” 的日誌檔案資料夾中,您可以指定 /Z:[journal-file-folder] 選項來變更日誌檔案資料夾位置,進而變更暫存資料檔位置。 暫存數據檔的大小取決於數據表實體的大小,以及您使用 /SplitSize 選項指定的大小,雖然本機磁盤中的暫存數據檔在上傳至 Blob 之後會立即刪除,但請確定您有足夠的本機磁碟空間來儲存這些暫存數據檔,再刪除它們。

將數據匯入數據表記憶體

讓我們看看如何使用 AzCopy 將數據匯入 Azure 數據表記憶體。

匯入數據表

AzCopy /Source:C:\myfolder\ /Dest:https://myaccount.table.core.windows.net/mytable1/ /DestKey:key /Manifest:"myaccount_mytable_20140103T112020.manifest" /EntityOperation:InsertOrReplace

選項 /EntityOperation 會指出如何將實體插入數據表中。 可能的值包括:

  • InsertOrSkip:如果現有實體不存在於數據表中,則會略過新的實體或插入新的實體。
  • InsertOrMerge:如果現有實體不存在於數據表中,請合併現有的實體或插入新的實體。
  • InsertOrReplace:如果現有實體不存在於數據表中,則取代或插入新的實體。

請注意,您無法在匯入案例中指定選項 /PKRS 。 不同於匯出案例,您必須指定啟動並行作業的選項 /PKRS ,AzCopy 預設會在匯入數據表時啟動並行作業。 啟動的並行作業預設數目等於核心處理器數目;不過,您可以指定不同數目的並行選項 /NC。 如需詳細資訊,請在命令列輸入 AzCopy /?:NC

請注意,AzCopy 僅支持匯入 JSON,而不是 CSV。 AzCopy 不支援從使用者建立的 JSON 和指令清單檔案匯入數據表。 這兩個檔案都必須來自 AzCopy 數據表匯出。 若要避免錯誤,請勿修改導出的 JSON 或指令清單檔案。

從 Blob 記憶體將實體匯入數據表

假設 Blob 容器包含下列專案:代表 Azure 數據表及其隨附指令清單檔的 JSON 檔案。

myaccount_mytable_20140103T112020.manifest
myaccount_mytable_20140103T112020_0_0_0AF395F1DC42E952.json

您可以使用 Blob 容器中的指令清單檔案,執行下列命令,將實體匯入資料表:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:https://myaccount.table.core.windows.net/mytable /SourceKey:key1 /DestKey:key2 /Manifest:"myaccount_mytable_20140103T112020.manifest" /EntityOperation:"InsertOrReplace"

其他 AzCopy 功能

讓我們看看其他一些 AzCopy 功能。

只複製目的地中不存在的數據

/XO/XN 參數可讓您分別排除較舊的或較新的來源資源,使其無法複製。 如果您只想複製目的地中不存在的來源資源,您可以在 AzCopy 命令中指定這兩個參數:

/Source:http://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:<sourcekey> /S /XO /XN

/Source:C:\myfolder /Dest:http://myaccount.file.core.windows.net/myfileshare /DestKey:<destkey> /S /XO /XN

/Source:http://myaccount.blob.core.windows.net/mycontainer /Dest:http://myaccount.blob.core.windows.net/mycontainer1 /SourceKey:<sourcekey> /DestKey:<destkey> /S /XO /XN

請注意,當來源或目的地是數據表時,不支援此功能。

使用回應檔來指定命令行參數

AzCopy /@:"C:\responsefiles\copyoperation.txt"

您可以在回應檔中包含任何 AzCopy 命令行參數。 AzCopy 會處理檔案中的參數,就像已在命令行上指定一樣,使用檔案的內容執行直接替代。

假設名為 copyoperation.txt的回應檔,其中包含下列幾行。 每個 AzCopy 參數都可以在單行上指定

/Source:http://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:<sourcekey> /S /Y

或在個別行上:

/Source:http://myaccount.blob.core.windows.net/mycontainer
/Dest:C:\myfolder
/SourceKey:<sourcekey>
/S
/Y

如果您將參數分割成兩行,則 AzCopy 會失敗,如參數所示 /sourcekey

http://myaccount.blob.core.windows.net/mycontainer
 C:\myfolder
/sourcekey:
<sourcekey>
/S
/Y

使用多個回應檔來指定命令行參數

假設名為 source.txt 的回應檔,指定來源容器:

/Source:http://myaccount.blob.core.windows.net/mycontainer

以及名為 dest.txt 的回應檔,指定檔案系統中的目的地資料夾:

/Dest:C:\myfolder

以及名為 options.txt 的回應檔,指定 AzCopy 的選項:

/S /Y

若要使用這些回應檔呼叫 AzCopy,所有回應檔都位於 目錄中 C:\responsefiles,請使用下列命令:

AzCopy /@:"C:\responsefiles\source.txt" /@:"C:\responsefiles\dest.txt" /SourceKey:<sourcekey> /@:"C:\responsefiles\options.txt"   

AzCopy 處理此命令,就像您在命令行中包含所有個別參數一樣:

AzCopy /Source:http://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:<sourcekey> /S /Y

指定共享存取簽章 (SAS)

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer1 /Dest:https://myaccount.blob.core.windows.net/mycontainer2 /SourceSAS:SAS1 /DestSAS:SAS2 /Pattern:abc.txt

您也可以在容器 URI 上指定 SAS:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer1/?SourceSASToken /Dest:C:\myfolder /S

日誌檔案資料夾

每次向 AzCopy 發出命令時,它會檢查日誌檔案是否存在於預設資料夾中,或它是否存在於您透過此選項指定的資料夾中。 如果任一位置都沒有日誌檔案,AzCopy 會將作業視為新的,併產生新的日誌檔案。

如果日誌檔案確實存在,AzCopy 會檢查您輸入的命令行是否符合日誌檔案中的命令行。 如果這兩個命令行相符,AzCopy 會繼續不完整的作業。 如果它們不相符,系統會提示您覆寫日誌檔案以啟動新的作業,或取消目前的作業。

如果您要使用紀錄檔案的預設位置:

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Z

如果您省略選項 /Z,或指定不含資料夾路徑的選項 /Z ,如上所示,AzCopy 會在預設位置建立日誌檔案,也就是 %SystemDrive%\Users\%username%\AppData\Local\Microsoft\Azure\AzCopy。 如果日誌檔案已經存在,則 AzCopy 會根據日誌檔案繼續作業。

如果您要指定紀錄檔案的自訂位置:

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Z:C:\journalfolder\

如果日誌檔案不存在,則此範例會建立日誌檔案。 如果確實存在,則 AzCopy 會根據日誌檔案繼續作業。

如果您想要繼續 AzCopy 作業:

AzCopy /Z:C:\journalfolder\

此範例會繼續最後一個作業,但可能尚未完成。

產生記錄檔

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /V

如果您指定選項 /V 而不提供詳細資訊記錄檔的檔案路徑,則 AzCopy 會在預設位置建立記錄檔,也就是 %SystemDrive%\Users\%username%\AppData\Local\Microsoft\Azure\AzCopy

否則,您可以在自訂位置建立記錄檔:

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /V:C:\myfolder\azcopy1.log

請注意,如果您指定下列選項 /V的相對路徑,例如 /V:test/azcopy1.log,則會在名為 test的子資料夾中,在目前的工作目錄中建立詳細資訊記錄檔。

指定要啟動的並行作業數目

選項 /NC 會指定並行複製作業的數目。 根據預設,AzCopy 會啟動特定數目的並行作業,以增加數據傳輸輸送量。 針對數據表作業,並行作業的數目等於您擁有的處理器數目。 針對 Blob 和檔案作業,並行作業的數目等於您擁有的處理器數目 8 倍。 如果您要跨低頻寬網路執行 AzCopy,您可以為 /NC 指定較低的數目,以避免資源競爭所造成的失敗。

對 Azure 儲存體 模擬器執行 AzCopy

您可以針對 blob 的 Azure 儲存體 模擬器執行 AzCopy:

AzCopy /Source:https://127.0.0.1:10000/myaccount/mycontainer/ /Dest:C:\myfolder /SourceKey:key /SourceType:Blob /S

您也可以針對資料表執行它:

AzCopy /Source:https://127.0.0.1:10002/myaccount/mytable/ /Dest:C:\myfolder /SourceKey:key /SourceType:Table

自動判斷 Blob 的內容類型

AzCopy 會根據儲存內容類型至擴展名對應的 JSON 檔案,決定 Blob 的內容類型。 此 JSON 檔案名為 AzCopyConfig.json,且位於 AzCopy 目錄中。 如果您有不在清單中的檔案類型,您可以將對應附加至 JSON 檔案:

{
  "MIMETypeMapping": {
    ".myext": "text/mycustomtype",
    .
    .
  }
}

AzCopy 參數

AzCopy 的參數如下所述。 您也可以從命令列輸入下列其中一個命令,以取得使用 AzCopy 的說明:

  • 如需 AzCopy 的詳細命令列說明: AzCopy /?
  • 如需任何 AzCopy 參數的詳細說明: AzCopy /?:SourceKey
  • 如需命令列範例: AzCopy /?:Sample

/Source:“source”

指定要從中複製的來源數據。 來源可以是文件系統目錄、Blob 容器、Blob 虛擬目錄、記憶體檔案共享、記憶體檔案目錄或 Azure 資料表。

適用於: Blob、檔案、數據表

/Dest:“destination”

指定要複製到其中的目的地。 目的地可以是文件系統目錄、Blob 容器、Blob 虛擬目錄、記憶體檔案共享、記憶體檔案目錄或 Azure 資料表。

適用於: Blob、檔案、數據表

/Pattern:“file-pattern”

指定要複製的檔案模式。 /Pattern 參數的行為取決於源數據的位置,以及遞歸模式選項的存在。 遞迴模式是透過選項 /S 來指定。

如果指定的來源是文件系統中的目錄,則標準通配符會生效,而且提供的檔案模式會與目錄中的檔案進行比對。 如果指定了選項 /S,則 AzCopy 也會比對目錄下任何子資料夾中所有檔案的指定模式。

如果指定的來源是 Blob 容器或虛擬目錄,則不會套用通配符。 如果指定了選項 /S,AzCopy 會將指定的檔案模式解譯為 Blob 前置詞。 如果未指定選項 /S,則 AzCopy 會比對檔案模式與確切的 Blob 名稱。

如果指定的來源是 Azure 檔案共用,則您必須指定確切的檔名(例如abc.txt),以複製單一檔案,或指定選項 /S 以遞歸方式複製共用中的所有檔案。 嘗試同時指定檔案模式和選項 /S 會導致錯誤。

當 /Source 是 Blob 容器或 Blob 虛擬目錄時,AzCopy 會使用區分大小寫比對,並在所有其他情況下使用不區分大小寫的比對。

未指定任何檔案模式時使用的預設檔案模式是 對於檔案系統位置,或是 Azure 儲存體 位置的空白前置詞。 不支援指定多個檔案模式。

適用於: Blob、檔案

/DestKey:“storage-key”

指定目的地資源的記憶體帳戶金鑰。

適用於: Blob、檔案、數據表

/DestSAS:“sas-token”

指定目的地具有讀取和寫入許可權的共用存取簽章(SAS)。如果適用的話。 以雙引弧括住 SAS,因為它可能包含特殊的命令行字元。

如果目的地資源是 Blob 容器、檔案共享或數據表,您可以指定此選項,後面接著 SAS 令牌,也可以指定 SAS 作為目的地 Blob 容器、檔案共用或數據表 URI 的一部分,而不需要此選項。

如果來源和目的地都是 Blob,則目的地 Blob 必須位於與來源 Blob 相同的記憶體帳戶內。

適用於: Blob、檔案、數據表

/SourceKey:“storage-key”

指定來源資源的記憶體帳戶金鑰。

適用於: Blob、檔案、數據表

/SourceSAS:“sas-token”

指定具有來源之 READ 和 LIST 許可權的共用存取簽章(如果適用的話)。 以雙引弧括住 SAS,因為它可能包含特殊的命令行字元。

如果來源資源是 Blob 容器,而且未提供密鑰或 SAS,則 Blob 容器會透過匿名存取來讀取。

如果來源是檔案共享或數據表,則必須提供金鑰或 SAS。

適用於: Blob、檔案、數據表

/S

指定複製作業的遞迴模式。 在遞歸模式中,AzCopy 會複製符合指定檔案模式的所有 Blob 或檔案,包括子資料夾中的 Blob 或檔案。

適用於: Blob、檔案

/BlobType:“block” |“page” |“append”

指定目的地 Blob 是區塊 Blob、分頁 Blob 或附加 Blob。 此選項僅適用於您上傳 Blob 時。 否則,會產生錯誤。 如果目的地是 Blob,而且未指定此選項,則 AzCopy 預設會建立區塊 Blob。

適用於: Blob

/CheckMD5

計算已下載數據的 MD5 哈希,並確認儲存在 Blob 或檔案 Content-MD5 屬性中的 MD5 哈希符合導出的哈希。 如果值不相符,AzCopy 將無法下載數據。 默認會關閉 MD5 檢查,因此您必須指定此選項,才能在下載資料時執行 MD5 檢查。

請注意,Azure 儲存體 不保證針對 Blob 或檔案儲存的 MD5 哈希是最新的。 每當修改 Blob 或檔案時,用戶端有責任更新 MD5。 在磁碟映像(受控或非受控磁碟)的情況下,Azure VM 不會在磁碟內容變更時更新 MD5 值,因此 /CheckMD5 會在下載磁碟映射時擲回錯誤。

AzCopy v8 一律會在上傳至服務之後,設定 Azure Blob 或檔案的 Content-MD5 屬性。

適用於: Blob、檔案

/快照

指出是否要傳送快照集。 只有在來源是 Blob 時,此選項才有效。

傳輸的 Blob 快照集會以下列格式重新命名:blob 名稱(snapshot-time)。擴充功能

根據預設,不會複製快照集。

適用於: Blob

/V:[verbose-log-file]

將詳細信息狀態消息輸出至記錄檔。

根據預設,詳細資訊記錄檔會在 中 %LocalAppData%\Microsoft\Azure\AzCopy命名為 AzCopyVerbose.log。 如果您為此選項指定現有的檔案位置,則會將詳細資訊記錄附加至該檔案。

適用於: Blob、檔案、數據表

/Z:[journal-file-folder]

指定用於繼續作業的日誌檔案資料夾。

如果作業中斷,AzCopy 一律支持繼續。

如果未指定此選項,或未指定資料夾路徑,則 AzCopy 會在預設位置建立日誌檔案,也就是 %LocalAppData%\Microsoft\Azure\AzCopy。

每次向 AzCopy 發出命令時,它會檢查日誌檔案是否存在於預設資料夾中,或它是否存在於您透過此選項指定的資料夾中。 如果任一位置都沒有日誌檔案,AzCopy 會將作業視為新的,併產生新的日誌檔案。

如果日誌檔案確實存在,AzCopy 會檢查您輸入的命令行是否符合日誌檔案中的命令行。 如果這兩個命令行相符,AzCopy 會繼續不完整的作業。 如果它們不相符,系統會提示您覆寫日誌檔案以啟動新的作業,或取消目前的作業。

作業成功完成時,會刪除日誌檔案。

請注意,不支援從舊版 AzCopy 所建立的日誌檔案繼續作業。

適用於: Blob、檔案、數據表

/@:“parameter-file”

指定包含參數的檔案。 AzCopy 會處理檔案中的參數,就像已在命令行上指定一樣。

在響應檔中,您可以在單一行指定多個參數,或在自己的行上指定每個參數。 請注意,個別參數無法跨越多行。

回應檔可以包含以 # 符號開頭的批注行。

您可以指定多個回應檔。 不過,請注意,AzCopy 不支援巢狀響應檔。

適用於: Blob、檔案、數據表

/Y

隱藏所有 AzCopy 確認提示。 此選項也允許在未指定 /XO 和 /XN 時,針對數據上傳案例使用唯寫 SAS 令牌。

適用於: Blob、檔案、數據表

/L

僅指定清單作業;不會複製任何數據。

AzCopy 會將使用此選項解譯為執行命令行的模擬,而不使用此選項 /L 並計算複製的物件數目,您可以同時指定選項 /V 來檢查詳細資訊記錄檔中複製的物件。

這個選項的行為也取決於源數據的位置,以及遞歸模式選項 /S 和檔案模式選項 /Pattern 的存在。

使用此選項時,AzCopy 需要此來源位置的 LIST 和 READ 許可權。

適用於: Blob、檔案

/MT

將下載的檔案上次修改時間設定為與來源 Blob 或檔案相同的時間。

適用於: Blob、檔案

/XN

排除較新的來源資源。 如果來源上次修改的時間與目的地相同或更新,則不會複製資源。

適用於: Blob、檔案

/XO

排除較舊的來源資源。 如果來源上次修改的時間相同或早於目的地,則不會複製資源。

適用於: Blob、檔案

/一個

只上傳已設定 Archive 屬性的檔案。

適用於: Blob、檔案

/IA:[RASHCNETOI]

只上傳已設定任何指定屬性的檔案。

可用的屬性包括:

  • R = 唯讀檔案
  • A = 準備封存的檔案
  • S = 系統檔案
  • H = 隱藏的檔案
  • C = 壓縮檔案
  • N = 一般檔案
  • E = 加密的檔案
  • T = 暫存盤
  • O = 離線檔案
  • I = 未編制索引的檔案

適用於: Blob、檔案

/XA:[RASHCNETOI]

排除已設定任何指定屬性的檔案。

可用的屬性包括:

  • R = 唯讀檔案
  • A = 準備封存的檔案
  • S = 系統檔案
  • H = 隱藏的檔案
  • C = 壓縮檔案
  • N = 一般檔案
  • E = 加密的檔案
  • T = 暫存盤
  • O = 離線檔案
  • I = 未編制索引的檔案

適用於: Blob、檔案

/Delimiter:“delimiter”

指出用來在 Blob 名稱中分隔虛擬目錄的分隔符。

根據預設,AzCopy 會使用 / 作為分隔符。 不過,AzCopy 支援使用任何通用字元(例如 @、#或 %) 做為分隔符。 如果您需要在命令列中包含其中一個特殊字元,請使用雙引號括住檔名。

此選項僅適用於下載 Blob。

適用於: Blob

/NC:“number-of-concurrent-operations”

指定並行作業的數目。

AzCopy 預設會啟動特定數目的並行作業,以增加數據傳輸輸送量。 請注意,低頻寬環境中的大量並行作業可能會使網路連線不堪重負,並防止作業完全完成。 根據實際可用的網路頻寬來節流並行作業。

並行作業的上限為 512。

適用於: Blob、檔案、數據表

/SourceType:“Blob” |“Table”

指定 source 資源是本機開發環境中可用的 Blob,在記憶體模擬器中執行。

適用於: Blob、數據表

/DestType:“Blob” |“Table”

指定 destination 資源是本機開發環境中可用的 Blob,在記憶體模擬器中執行。

適用於: Blob、數據表

/WARNS:“key1#key2#key3#...”

分割分割區索引鍵範圍,以平行方式啟用匯出數據表數據,這會增加匯出作業的速度。

如果未指定此選項,AzCopy 會使用單一線程來匯出數據表實體。 例如,如果使用者指定 /NPS:“aa#bb”,則 AzCopy 會啟動三個並行作業。

每個作業都會匯出三個分割區索引鍵範圍的其中一個,如下所示:

[first-partition-key, aa)

[aa, bb)

[bb, last-partition-key]

適用於: 數據表

/SplitSize:“file-size”

以 MB 指定導出的檔案分割大小,允許的最小值為 32。

如果未指定此選項,AzCopy 會將數據表數據匯出至單一檔案。

如果數據表數據匯出至 Blob,且導出的檔案大小達到 Blob 大小的 200 GB 限制,則 AzCopy 會分割導出的檔案,即使未指定此選項也一樣。

適用於: 數據表

/EntityOperation:“InsertOrSkip” |“InsertOrMerge” |“InsertOrReplace”

指定數據表數據匯入行為。

  • InsertOrSkip - 略過現有的實體,或在數據表中不存在時插入新的實體。
  • InsertOrMerge - 合併現有的實體,或在數據表中不存在時插入新的實體。
  • InsertOrReplace - 如果現有實體不存在於數據表中,則會插入新的實體。

適用於: 數據表

/Manifest:“manifest-file”

指定資料表匯出和匯入作業的指令清單檔。

這個選項在匯出作業期間是選擇性的,如果未指定此選項,則 AzCopy 會產生具有預先定義名稱的指令清單檔案。

在匯入作業期間需要此選項,才能尋找數據檔。

適用於: 數據表

/SyncCopy

指出是否要在兩個 Azure 儲存體 端點之間同步複製 Blob 或檔案。

AzCopy 預設會使用伺服器端異步複製。 指定此選項來執行同步複製,以將 Blob 或檔案下載到本機記憶體,然後將它們上傳至 Azure 儲存體。

將 Blob 記憶體、檔案記憶體內的檔案,或從 Blob 記憶體複製到檔案記憶體,反之亦然,您可以使用此選項。

適用於: Blob、檔案

/SetContentType:“content-type”

指定目的地 Blob 或檔案的 MIME 內容類型。

AzCopy 預設會將 Blob 或檔案的內容類型設定為 application/octet-stream。 您可以明確指定此選項的值,以設定所有 Blob 或檔案的內容類型。

如果您指定此選項時沒有值,則 AzCopy 會根據其擴展名來設定每個 Blob 或檔案的內容類型。

適用於: Blob、檔案

/PayloadFormat:“JSON” |“CSV”

指定資料表匯出資料檔案的格式。

如果未指定此選項,則 AzCopy 預設會以 JSON 格式匯出資料表數據檔。

適用於: 數據表

已知問題和最佳做法

讓我們看看一些已知問題和最佳做法。

複製數據時限制並行寫入

當您使用 AzCopy 複製 Blob 或檔案時,請記住,當您複製 Blob 或檔案時,另一個應用程式可能會修改數據。 可能的話,請確定複製作業期間未修改您複製的數據。 例如,複製與 Azure 虛擬機相關聯的 VHD 時,請確定目前沒有任何其他應用程式寫入 VHD。 若要這樣做,最好是租用要複製的資源。 或者,您可以先建立 VHD 的快照集,然後複製快照集。

如果您無法防止其他應用程式在複製 Blob 或檔案時寫入 Blob 或檔案,請記住,在作業完成時,複製的資源可能不再與來源資源完全同位。

當您「使用 FIPS 相容的演算法進行加密、哈希和簽署」時,請為 AzCopy 啟用符合 FIPS 規範的 MD5 演算法。

AzCopy 預設會使用 .NET MD5 實作來計算複製物件時的 MD5,但有一些安全性需求需要 AzCopy 才能啟用符合 FIPS 規範的 MD5 設定。

您可以使用 屬性AzureStorageUseV1MD5建立 app.config 檔案AzCopy.exe.config,並將它放在一旁AzCopy.exe。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="AzureStorageUseV1MD5" value="false"/>
  </appSettings>
</configuration>

針對屬性 「AzureStorageUseV1MD5」:

  • True - 預設值 AzCopy 使用 .NET MD5 實作。
  • False – AzCopy 使用符合 FIPS 規範的 MD5 演算法。

WINDOWS 上預設會停用符合 FIPS 規範的演算法。 您可以在電腦上變更此原則設定。 在 [執行] 視窗 (Windows+R) 中,輸入 secpol.msc 以開啟 [ 本機安全策略] 視窗。 在 [安全性設定] 視窗中,流覽至 [安全性設定>本機原則>安全性選項]。 找出系統密碼編譯:使用符合 FIPS 規範的演算法進行加密、哈希和簽署原則。 按兩下原則,以查看 [安全性設定] 資料行中顯示的值。

下一步

如需 Azure 儲存體 和 AzCopy 的詳細資訊,請參閱下列資源:

Azure 儲存體檔:

Azure 儲存體 部落格文章: