チュートリアル:AzCopy を使用してオンプレミスのデータをクラウド ストレージに移行する
AzCopy は、単純なコマンドを使用して Azure Blob Storage、Azure Files、および Azure Table Storage との間でデータをコピーするためのコマンドライン ツールです。 コマンドは、最適なパフォーマンスが得られるように設計されています。 AzCopy を使用すると、ファイル システムとストレージ アカウント間、またはストレージ アカウント間でデータをコピーできます。 AzCopy は、ローカル (オンプレミス) のデータをストレージ アカウントにコピーするために使用することができます。
このチュートリアルでは、以下の内容を学習します。
- ストレージ アカウントを作成します。
- AzCopy を使用してすべてのデータをアップロードします。
- テスト目的でデータを変更します。
- アップロードする新しいファイルを特定するための、スケジュールされたタスクまたは cron ジョブを作成します。
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
前提条件
このチュートリアルを完了するには、AzCopy の最新バージョンをダウンロードしてください。 AzCopy の作業開始に関するページを参照してください。
Windows の場合、このチュートリアルでタスクをスケジュールするために使用する Schtasks が必要になります。 Linux ユーザーは、代わりに crontab コマンドを使用します。
Azure Portal で汎用 v2 ストレージ アカウントを作成するには、次の手順に従います。
- [Azure サービス] で、 [ストレージ アカウント] を選択します。
- [ストレージ アカウント] ページで、[+ Create](+ 作成) を選択します。
- [基本] ブレードで、ストレージ アカウントを作成するサブスクリプションを選択します。
- [リソース グループ] フィールドで、目的のリソース グループを選択するか、新しいリソース グループを作成します。 Azure リソース グループの詳細については、Azure Resource Manager の概要に関するページを参照してください。
- 次に、ストレージ アカウントの名前を入力します。 選択する名前は Azure 全体で一意である必要があります。 また、名前の長さは 3 から 24 文字とし、数字と小文字のみを使用できます。
- 対象のストレージ アカウントのリージョンを選択するか、既定のリージョンを使います。
- パフォーマンス レベルを選択します。 既定のレベルは Standard です。
- ストレージ アカウントのレプリケート方法を指定します。 既定の冗長オプションは [Geo-redundant storage (GRS)](geo 冗長ストレージ (GRS)) です。 利用可能なレプリケーション オプションの詳細については、「Azure Storage の冗長性」を参照してください。
- その他のオプションは、 [詳細] 、 [ネットワーク] 、 [データ保護] 、 [タグ] の各ブレードで利用できます。 Azure Data Lake Storage を使用するには、 [詳細] ブレードを選択し、 [階層構造名前空間] を [有効] に設定します。 詳細については、「Azure Data Lake Storage Gen2 の概要」を参照してください。
- [確認および作成] を選択して、ストレージ アカウントの設定を確認し、アカウントを作成します。
- [作成] を選択します
次の画像は、新しいストレージ アカウントの [基本] ブレードの設定を示しています。
コンテナーを作成する
BLOB は常にコンテナーにアップロードする必要があるため、最初の手順はコンテナーを作成することです。 コンテナーは、BLOB のグループを整理するための方法として使用されます。コンピューターでファイルを整理するためのフォルダーと同様です。
コンテナーを作成するには、次の手順に従います。
メイン ページで [ストレージ アカウント] ボタンを選択し、作成したストレージ アカウントを選択します。
[サービス] で [BLOB] を選択し、 [コンテナー] を選択します。
コンテナー名は文字または数字で始まる必要があります。 コンテナー名には、文字、数字、およびハイフン文字 (-) のみを使用できます。 BLOB とコンテナーの名前付けの詳細については、「Naming and referencing containers, blobs, and metadata」(コンテナー、BLOB、メタデータの名前付けと参照) を参照してください。
AzCopy をダウンロードする
AzCopy V10 実行可能ファイルをダウンロードします。
AzCopy ファイルをコンピューターの任意の場所に配置します。 ファイルの場所をシステム パス変数に追加して、コンピューター上の任意のフォルダーからこの実行可能ファイルを参照できるようにします。
Microsoft Entra ID を使用して認証する
まず、ストレージ BLOB データ共同作成者ロールを自分の ID に割り当てます。 「BLOB データにアクセスするための Azure ロールを割り当てる」を参照してください。
次に、コマンド プロンプトを開き、次のコマンドを入力して、Enter キーを押します。
azcopy login
このコマンドによって、認証コードと Web サイトの URL が返されます。 Web サイトを開き、コードを指定し、 [次へ] ボタンを選択します。
サインイン ウィンドウが表示されます。 そのウィンドウで、Azure アカウント資格情報を使用して、Azure アカウントにサインインします。 正常にサインインしたら、ブラウザー ウィンドウを閉じ、AzCopy の使用を開始できます。
フォルダーの内容を BLOB ストレージにアップロードする
AzCopy を使用すると、フォルダー内のすべてのファイルを Windows または Linux 上の Blob Storage にアップロードできます。 フォルダー内のすべての 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 Storage にアップロードする
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
コマンドの詳細については、「Synchronize files (ファイルの同期)」を参照してください。
スケジュールされたタスクを作成する
AzCopy コマンド スクリプトを実行するスケジュールされたタスクまたは cron ジョブを作成できます。 このスクリプトは、特定の時間間隔で新しいオンプレミス データを識別してクラウド ストレージにアップロードします。
AzCopy コマンドをテキスト エディターにコピーします。 AzCopy コマンドのパラメーター値を適切な値に更新します。 ファイルを AzCopy 用に script.sh
(Linux) または script.bat
(Windows) として保存します。
これらの例では、フォルダーの名前は myFolder
、ストレージ アカウント名の名前は mystorageaccount
、コンテナー名の名前は mycontainer
であると想定しています。
Note
Linux の例では SAS トークンが追加されます。 コマンドにそれを指定する必要があります。 cron ジョブで Microsoft Entra 認証を利用するには、環境変数 AZCOPY_AUTO_LOGIN_TYPE を適切に構成する必要があります。
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
このチュートリアルでは、Windows 上でスケジュールされたタスクを作成するために Schtasks を使用します。 Linux 上で cron ジョブを作成するには、Crontab コマンドを使用します。
Schtasks は、管理者がローカルまたはリモート コンピューター上でスケジュールされたタスクを作成、削除、クエリ、変更、実行、および終了することを可能にします。 Cron は、Linux および Unix ユーザーが cron 式を使用して、指定された日時にコマンドまたはスクリプトを実行することを可能にします。
Linux 上で cron ジョブを作成するには、ターミナルで次のコマンドを入力します。
crontab -e
*/5 * * * * sh /path/to/script.sh
コマンドの cron 式 */5 * * * *
は、シェル スクリプト script.sh
を 5 分ごとに実行することを指定します。 スクリプトは、毎日、毎月、または毎年特定の時刻に実行するようにスケジュールすることができます。 ジョブの実行日時の設定の詳細については、cron 式に関するページを参照してください。
スケジュールされたタスクまたは cron ジョブが正常に実行されることを確認するために、myFolder
ディレクトリ内に新しいファイルを作成します。 新しいファイルがストレージ アカウントにアップロードされたことを確認するために、5 分間待ちます。 ログ ディレクトリに移動して、スケジュールされたタスクまたは cron ジョブの出力ログを確認します。
次のステップ
オンプレミスと Azure Storage との間でデータを移動する方法については、このリンクに従ってください。
AzCopy の詳細については、以下の記事を参照してください。