次の方法で共有


AzCopy を使用して Azure Blob Storage と同期する

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 に負荷を処理するのに十分なコア/メモリがあることを確認します。

  • 誤って削除されないようにするには、 フラグを使用する前に--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

別のコンテナーの変更を使用してコンテナーを更新する

このコマンドに表示される最初のコンテナーがソースです。 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 フラグは、ファイル名にのみ適用され、ファイル パスの他の部分には適用されません。

次のステップ

以下の記事にサンプルがあります。

設定の構成、パフォーマンスの最適化、および問題のトラブルシューティングを行うには、これらの記事を参照してください。