AzCopy v10 コマンド ライン ユーティリティを使用して、ローカル ストレージを Azure Blob Storage と同期できます。
ローカル ファイル システムの内容を BLOB コンテナーと同期できます。 コンテナーと仮想ディレクトリを相互に同期することもできます。 同期は一方向です。 言い換えると、2 つのエンドポイントのいずれかを同期元として、いずれかを同期先として選択します。 同期にもサーバー間 API が使用されます。 このセクションで示す例は、階層型名前空間を持つアカウントでも機能します。
注
AzCopy の現在のリリースでは、他のソースと宛先の間で同期されません (例: File Storage または 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 コマンドではファイル名と最後に変更されたタイムスタンプが比較されます。 最終変更タイムスタンプの代わりに MD5 ハッシュを使用するように、--compare-hash
フラグを使用してその動作をオーバーライドできます。 省略可能な --delete-destination
フラグの値を true
または prompt
に設定すると、コピー元のディレクトリにファイルがもう存在しなくなると、コピー先のディレクトリからそれらのファイルが削除されます。
--delete-destination
フラグをtrue
に設定すると、AzCopy では、プロンプトが表示されずにファイルが削除されます。 AzCopy でファイルが削除される前にプロンプトを表示する場合、--delete-destination
フラグをprompt
に設定します。--delete-destination
フラグをprompt
またはfalse
に設定する場合は、sync コマンドではなく copy コマンドを使用し、--overwrite
パラメーターをifSourceNewer
に設定することを検討してください。 copy コマンドでは、消費されるメモリ量が少なくなり、発生する課金コストが減ります。これは、コピー操作では、ファイルを移動する前にコピー元またはコピー先のインデックスを作成する必要がないからです。--compare-hash
フラグを使用する予定がない場合、sync コマンドを実行するマシンでは、ファイルを転送する必要があるかどうかの判断において最終変更時刻が重要になるため、正確なシステム クロックが必要になります。 システムのクロック スキューが大きい場合は、sync コマンドの実行を計画している時刻にあまりに近い時点で、コピー先でのファイル変更を行わないようにしてください。AzCopy では、サーバー間 API を使用してストレージ アカウント間でデータを同期します。 つまり、データはストレージ サーバー間で直接コピーされます。 ただし、AzCopy では、各転送が設定され、監視されます。大規模なストレージ アカウント (たとえば、数百万の BLOB を含むアカウント) の場合、AzCopy ではこれらのタスクを実行するために大量のコンピューティング リソースが必要になる場合があります。 したがって、仮想マシン (VM) から AzCopy を実行している場合、VM に負荷を処理するのに十分なコア/メモリがあることを確認します。
ローカル ファイル システムに変更を加えてコンテナーを更新する
この場合、コンテナーが宛先であり、ローカル ファイル システムがソースです。
ヒント
この例では、パス引数を単一引用符 ('') で囲んでいます。 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
別のコンテナーの変更を使用してコンテナーを更新する
このコマンドに表示される最初のコンテナーがソースです。 2 つ目が宛先です。
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
別のコンテナー内のディレクトリに変更を加えてディレクトリを更新する
このコマンドに表示される最初のディレクトリがソースです。 2 つ目が宛先です。
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 トークンを使用して別のコンテナーの変更でコンテナーを更新する
このコマンドに表示される最初のコンテナーがソースです。 2 つ目が宛先です。
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 Storage Explorer を使用できます。
コピーしたサイズの詳細を確認します。 上部のバー メニューで、[ その他 ] ->[Folder Statistics ]\(フォルダー統計\) を選択すると、サイズ (バイト単位) を含むディレクトリの詳細を取得できます。
省略可能なフラグと同期する
オプションのフラグを使用して、同期操作を調整できます。 以下にいくつか例を示します。
シナリオ | フラグ |
---|---|
ダウンロード時に MD5 ハッシュを厳密に検証する方法を指定します。 | --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing] |
パターンに基づいてファイルを除外します。 | --exclude-path |
同期に関連するログ エントリの詳細レベルを指定します。 | --log-level=[WARNING|エラー|情報|NONE] |
vhd ファイルをコピーする方法を指定します。 | --blob-type=BlockBlob --include-pattern "*.vhd" または --blob-type=BlockBlob |
フラグの完全な一覧については、 オプションを参照してください。
注
既定では、 --recursive
フラグは true
に設定されています。
--exclude-pattern
フラグと--include-pattern
フラグは、ファイル名にのみ適用され、ファイル パスの他の部分には適用されません。
次のステップ
以下の記事にサンプルがあります。
- 例: アップロード
- 例: ダウンロード
- 例: アカウント間のコピー
- 例: Amazon S3 バケット
- 例: Google Cloud Storage
- 例: Azure Files
- チュートリアル: AzCopy を使用したオンプレミス データのクラウド ストレージへの移行
設定の構成、パフォーマンスの最適化、および問題のトラブルシューティングを行うには、これらの記事を参照してください。