您可以使用 AzCopy v10 命令行公用程式,將本機記憶體與 Azure Blob 記憶體同步處理。
您可以將本機文件系統的內容與 Blob 容器同步處理。 您也可以將容器和虛擬目錄彼此同步處理。 同步是單向的。 換句話說,您可以在這兩個端點中選擇哪一個是來源,哪一個是目的地。 同步也會使用伺服器對伺服器 API。 本節中提供的範例也適用於具有階層命名空間的帳戶。
備註
目前的 AzCopy 版本不會在其他來源和目的地之間進行同步 (例如:檔案儲存體或 Amazon Web Services (AWS) S3 貯體)。
若要查看其他類型的工作範例,例如上傳檔案、下載 Blob 或複製帳戶之間的 Blob,請參閱本文後續 步驟 一節中提供的連結。
開始
請參閱開始使用 AzCopy (部分機器翻譯) 一文來下載 AzCopy,並了解如何提供授權認證給儲存體服務。
備註
本文中的範例假設您使用 Microsoft Entra ID 提供授權認證。
如果您想改為使用 SAS 權杖來授權存取 Blob 資料,則可將該權杖附加至每個 AzCopy 命令中的資源 URL。 例如: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>' 。
指導方針
根據預設,Sync 命令會比較檔案名稱和上次修改的時間戳記。 您可以使用 --compare-hash 旗標覆寫該行為,以使用 MD5 雜湊,而不是上次修改的時間戳記。 將 --delete-destination 選擇性旗標設定為 true 或 prompt 的值,以在檔案不再存在來源目錄中時,在目的地目錄中刪除那些檔案。
如果將
--delete-destination旗標設定為true,AzCopy 就會在不提供提示的情況下刪除檔案。 如果想要在 AzCopy 刪除檔案之前顯示提示,可將--delete-destination旗標設定為prompt。如果您打算將
--delete-destination旗標設定為prompt或false,請考慮使用 copy 命令,而不是 sync 命令,並將--overwrite參數設定為ifSourceNewer。 Copy 命令所耗用的記憶體比較少,因而產生的帳單成本比較少,因為複製作業不需要在移動檔案之前,先為來源或目的地編製索引。如果您不打算使用
--compare-hash旗標,則執行 sync 命令所在的機器應該具有正確的系統時鐘,因為上次修改時間對於判斷是否應傳送檔案而言很重要。 如果您的系統有顯著的時鐘誤差,請避免在太接近您打算執行 sync 命令的時間修改目的地檔案。AzCopy 使用伺服器對伺服器 API 來同步處理儲存體帳戶之間的資料。 這表示資料會直接在儲存體伺服器之間複製。 不過,AzCopy 會設定和監視每個傳輸,以及針對較大的儲存體帳戶 (例如,包含數百萬個 Blob 的帳戶),AzCopy 可能需要大量的計算資源來完成這些工作。 因此,如果您是從虛擬機器 (VM) 執行 AzCopy,請確定 VM 有足夠的核心/儲存體來處理負載。
- 若要防止意外刪除,請務必先啟用 虛刪除 功能,再使用
--delete-destination=prompt|true旗標。
使用對本機檔案系統所做的變更來更新容器
在此情況下,容器是目的地,而本機檔案系統則是來源。
小提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive
範例
azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive
將有變更的本機檔案系統上傳至容器
在此情況下,本機文件系統是目的地,而容器是來源。
小提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive
範例
azcopy sync 'https://mystorageaccount.blob.core.windows.net/mycontainer' 'C:\myDirectory' --recursive
使用另一個容器中的變更來更新容器
此命令中顯示的第一個容器是來源。 第二個容器是目的地。
如果您使用 Microsoft Entra ID 提供授權認證,請確定您在來源和目的地帳戶中設定適當的角色。 請參閱 選項 1:使用 Microsoft Entra ID。
小提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>' --recursive
範例
azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive
使用對另一個容器中目錄所做的變更來更新目錄
此命令中出現的第一個目錄為來源。 第二個目錄是目的地。
如果您使用 Microsoft Entra ID 提供授權認證,請確定您在來源和目的地帳戶中設定適當的角色。 請參閱 選項 1:使用 Microsoft Entra ID。
小提示
此範例會以單引號 ('') 括住路徑引數。 除了 Windows 命令殼層 (cmd.exe) 以外,在所有命令殼層中使用單引號。 如果您使用 Windows 命令殼層 (cmd.exe),請使用雙引號 ("") 括住路徑引數,而非單引號 ('')。
語法
azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive
範例
azcopy sync 'https://mysourceaccount.blob.core.windows.net/<container-name>/myDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myDirectory' --recursive
使用 SAS 權杖,以另一個容器中的變更來更新容器
此命令中顯示的第一個容器是來源。 第二個容器是目的地。
如果您提供 SAS 權杖,請確定您在使用 azcopy sync 時使用對應至來源和目的地儲存體帳戶的 SAS 權杖。
語法
azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<destination-SAS-token>' --recursive
範例
azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/?sv=2018-03-28&ss=qrdu&dst=mco&kp=rwdlapuc&se=2019-07-04T05:30:08Z&st=2019-07-03T21:31:10Z&spr=https&sig=CAfhgnc9gdGktvB=yzx9CAjMKeeN678yiyFwdNU092JC8%6D' --recursive
小提示
如果您要複製大量資料,您可以使用 Azure 儲存體總管。
若要驗證您複製的資料大小,請在頂端列功能表上選取 [更多 ->資料夾統計資料 ] 以取得目錄的詳細資料,包括大小 (以位元組為單位)。
使用選擇性旗標進行同步
您可以使用選擇性旗標來調整同步作業。 以下提供數個範例。
| 狀況 | 旗標 |
|---|---|
| 指定下載時應驗證 MD5 雜湊的嚴格程度。 | --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing] |
| 根據模式排除檔案。 | --exclude-path |
| 指定您希望同步相關記錄項目的詳細程度。 | --log-level=[WARNING|ERROR|INFO|NONE] |
| 指定如何複製 vhd 檔案。 | --blob-type=BlockBlob --include-pattern “*.vhd” 或 --blob-type=BlockBlob |
如需旗標的完整清單,請參閱 選項。
備註
旗 --recursive 標預設會設定為 true 。 和--exclude-pattern--include-pattern旗標僅適用於檔案名稱,而不適用於檔案路徑的其他部分。
後續步驟
如需更多範例,請參閱以下文章:
請參閱下列文章,以進行設定、將效能最佳化,以及針對問題進行疑難排解: