教學課程:使用 AzCopy 將內部部署資料移轉至雲端儲存體

AzCopy 是命令列工具,可使用簡單的命令從 Azure Blob 儲存體、Azure 檔案和 Azure 資料表儲存體來回複製資料。 這些命令的設計目的是獲得最佳效能。 您可以使用 AzCopy 在檔案系統和儲存體帳戶之間,或者儲存體帳戶之間複製資料。 AzCopy 可用來將本機 (內部) 資料複製到儲存體帳戶。

在本教學課程中,您會了解如何:

  • 建立儲存體帳戶。
  • 使用 AzCopy 上傳您的所有資料。
  • 基於測試目的修改資料。
  • 建立排程工作或 cron 作業來識別要上傳的新檔案。

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

若要完成本教學課程,請下載最新版本的 AzCopy。 請參閱開始使用 AzCopy

如果您使用 Windows,您將需要 Schtasks,因為本教學課程會用它來排程工作。 Linux 使用者則應使用 crontab 命令。

若要在 Azure 入口網站中建立一般用途 v2 儲存體帳戶,請遵循下列步驟:

  1. 在 [Azure 服務] 下,選取 [儲存體帳戶]
  2. 在 [儲存體帳戶] 頁面上,選擇 [+ 建立]
  3. 在 [基本] 刀鋒視窗上,選取要在其中建立儲存體帳戶的訂用帳戶。
  4. 在 [資源群組] 欄位下,選取您想要的資源群組,或建立新的資源群組。 如需 Azure 資源群組的詳細資訊,請參閱 Azure Resource Manager 概觀
  5. 接下來,輸入儲存體帳戶的名稱。 您所選擇的名稱在整個 Azure 中必須是唯一的。 名稱的長度必須介於 3 到 24 個字元之間,且只能包含數字和小寫字母。
  6. 選取儲存體帳戶的區域,或使用預設區域。
  7. 選取一個效能層級。 預設階層為 [標準]
  8. 指定儲存體帳戶的複寫方式。 預設的備援選項是 [異地備援儲存體 (GRS)]。 如需可用複寫選項的詳細資訊,請參閱 Azure 儲存體備援
  9. 您可以在 [進階]、[網路]、[資料保護] 和 [標籤] 刀鋒視窗上取得其他選項。 若要使用 Azure Data Lake Storage,請選擇 [進階] 刀鋒視窗,然後將 [階層命名空間] 設定為 [啟用]。 如需詳細資訊,請參閱 Azure Data Lake Storage Gen2 簡介
  10. 選取 [檢閱 + 建立],以檢閱您的儲存體帳戶設定並建立帳戶。
  11. 選取 建立

下圖顯示新儲存體帳戶 [基本] 刀鋒視窗上的設定:

Screenshot showing how to create a storage account in the Azure portal.

建立容器

第一個步驟是建立容器,因為 Blob 一律須上傳至容器中。 容器會作為組織 Blob 群組的方法,就像您在電腦上使用資料夾來組織檔案一樣。

請遵循下列步驟來建立容器:

  1. 選取主頁面中的 [儲存體帳戶] 按鈕,並選取您所建立的儲存體帳戶。

  2. 選取 [服務] 底下的 [Blob],然後選取 [容器]

    Screenshot showing container creation

容器名稱必須以字母或數字開頭。 它們可以包含字母、數字和連字號字元 (-)。 如需 Blob 和容器的其他命名規則,請參閱命名和參考容器、Blob 及中繼資料

下載 AzCopy

下載 AzCopy V10 可執行檔。

將 AzCopy 檔案放在電腦上的任何位置。 將檔案位置新增至您的系統路徑變數,即可從您電腦上的任何資料夾參考此可執行檔。

使用 Microsoft Entra 識別碼驗證

首先,將儲存體 Blob 資料參與者角色指派到您的身分識別。 請參閱指派 Azure 角色以存取 blob 資料

然後,開啟命令提示字元,輸入下列命令並按下 ENTER 鍵。

azcopy login

此命令傳回驗證碼和網站的 URL。 開啟網站,提供程式碼,然後選擇 [下一步] 按鈕。

Screenshot showing the login prompt

隨即會出現登入視窗。 在該視窗中,使用您的 Azure 帳戶認證登入 Azure 帳戶。 順利登入之後,您可以關閉瀏覽器視窗,然後開始使用 AzCopy。

將資料夾的內容上傳至 Blob 儲存體

您可以在 WindowsLinux 上使用 AzCopy,將資料夾中的所有檔案都上傳至 Blob 儲存體。 若要上傳資料夾中的所有 blob,請輸入下列 AzCopy 命令:

azcopy copy "<local-folder-path>" "https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>" --recursive=true
  • <local-folder-path> 預留位置取代為包含檔案的資料夾路徑 (例如:C:\myFolder/mnt/myFolder)。

  • 使用您的儲存體帳戶名稱取代 <storage-account-name> 預留位置。

  • <container-name> 預留位置取代為您建立的容器名稱。

若要以遞迴方式將指定目錄的內容上傳到 Blob 儲存體,請指定 --recursive 選項。 當您使用此選項執行 AzCopy 時,所有的子資料夾和其檔案也都會上傳。

將修改過的檔案上傳到 Blob 儲存體

您可以根據檔案的上次修改時間,使用 AzCopy 來上傳檔案。

若要這麼做,請基於測試目的,在您的來源目錄中修改或建立新的檔案。 然後,使用 AzCopy sync 命令。

azcopy sync "<local-folder-path>" "https://<storage-account-name>.blob.core.windows.net/<container-name>" --recursive=true
  • <local-folder-path> 預留位置取代為包含檔案的資料夾路徑 (例如:C:\myFolder/mnt/myFolder)。

  • 使用您的儲存體帳戶名稱取代 <storage-account-name> 預留位置。

  • <container-name> 預留位置取代為您建立的容器名稱。

若要深入了解 sync 命令,請參閱同步檔案

建立排程工作

您可以建立執行 AzCopy 命令指令碼的排程工作或 cron 作業。 該指令碼會識別新的內部部署資料,並在特定時間間隔將其上傳至雲端儲存體。

將 AzCopy 命令複製到文字編輯器。 將 AzCopy 命令的參數值更新為適當的值。 針對 AzCopy 將檔案另存為 script.sh (Linux) 或 script.bat (Windows)。

這些範例會假設您的資料夾名稱是 myFolder、儲存體帳戶名稱是 mystorageaccount,以及您的容器名稱是 mycontainer

注意

Linux 範例會附加 SAS 權杖。 您必須在命令中提供該權杖。 目前版本的 AzCopy V10 不支援 Cron 作業中的 Microsoft Entra 授權。

azcopy sync "/mnt/myfiles" "https://mystorageaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-05-30T06:57:40Z&st=2019-05-29T22:57:40Z&spr=https&sig=BXHippZxxx54hQn/4tBY%2BE2JHGCTRv52445rtoyqgFBUo%3D" --recursive=true

在本教學課程中,Schtasks 會用來在 Windows 上建立排程工作。 Crontab 命令會用來在 Linux 上建立 cron 作業。

Schtasks 可讓系統管理員建立、刪除、查詢、變更、執行和結束本機或遠端電腦上的排程工作。 Cron 可讓 Linux 和 Unix 使用者在指定的日期和時間執行命令或指令碼,方法是使用 cron 運算式

若要在 Linux 上建立 cron 作業,請在終端機上輸入下列命令:

crontab -e
*/5 * * * * sh /path/to/script.sh

在命令中指定 cron 運算式 */5 * * * * 會指出殼層指令碼 script.sh 應該每隔五分鐘執行一次。 您可以排程指令碼在每日、每月或每年的指定時間執行。 若要深入了解針對作業執行設定日期和時間,請參閱 cron 運算式

若要驗證排程工作/cron 作業能夠正確執行,請在您的 myFolder 目錄中建立新的檔案。 等候五分鐘以確認新檔案已上傳到您的儲存體帳戶。 請移至您的記錄目錄,以檢視排程工作或 cron 作業的輸出記錄。

下一步

若要深入了解將內部部署資料移動至 Azure 儲存體 (或反向作業) 的相關方式,請參考下列連結:

如需有關 AzCopy 的詳細資訊,請參閱下列文章: