次の方法で共有


AzCopy を使用して Azure ストレージ アカウント間で BLOB をコピーする

AzCopy v10 コマンド ライン ユーティリティを使用して、ストレージ アカウント間で BLOB、ディレクトリ、コンテナーをコピーできます。

ファイルのアップロード、BLOB のダウンロード、BLOB ストレージとの同期など、他の種類のタスクの例については、この記事の 「次の手順」 セクションのリンクを参照してください。

AzCopy では、サーバー間API が使用されます。そのため、データはストレージ サーバー間で直接コピーされます。

概要

AzCopy のダウンロード方法と、ストレージ サービスに認証資格情報を与える方法については、AzCopy の作業開始に関するページをご覧ください。

この記事の例では、Microsoft Entra ID を使用して承認資格情報を指定し、Microsoft Entra ID に移行元アカウントと移行先アカウントの両方に適切なロールの割り当てを割り当てることを前提としています。

または、各 AzCopy コマンドのソース URL または宛先 URL に SAS トークンを追加することもできます。 (例: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>')。

ガイドライン

AzCopy コマンドには次のガイドラインを適用します。

  • ソースと宛先の両方に Microsoft Entra 承認を使用する場合、両方のアカウントが同じ Microsoft Entra テナントに属している必要があります。

  • クライアントは、ソース ストレージ アカウントと移行先ストレージ アカウントの両方への ネットワーク アクセス権 を持っている必要があります。

    各ストレージ アカウントのネットワーク設定を構成する方法の詳細については、「Azure Storage ファイアウォールおよび仮想ネットワークを構成する」を参照してください。

    アカウント間でコピーするときにサポートされるネットワーク トポロジについては、「 アクセス制限のあるストレージ アカウント間で BLOB をコピーする」を参照してください。

  • Premium ブロック BLOB ストレージ アカウントにコピーする場合は、s2s-preserve-access-tierfalse に設定することで (例: --s2s-preserve-access-tier=false)、コピー操作から BLOB のアクセス層を除外します。 Premium ブロック BLOB ストレージ アカウントでは、アクセス層はサポートされません。

  • AZCOPY_CONCURRENCY_VALUE 環境変数の値を設定することによって、コピー操作のスループットを上げることができます。 詳細については、コンカレンシーの向上に関するページを参照してください。

  • ソース BLOB にインデックス タグがあり、それらのタグを保持する場合は、それらを宛先 BLOB に再適用する必要があります。 インデックス タグを設定する方法の詳細については、この記事のインデックス タグがある BLOB を別のストレージ アカウントにコピーする方法に関するセクションを参照してください。

BLOB をコピーする

azcopy copy コマンドを使用して、BLOB を別のストレージ アカウントにコピーします。

ヒント

この例では、パス引数を単一引用符 ('') で囲んでいます。 Windows コマンド シェル (cmd.exe) を除き、すべてのコマンド シェルで単一引用符を使用します。 Windows コマンド シェル (cmd.exe) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

構文

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

例 (Data Lake Storage エンドポイント)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

コピー操作は同期的に行われます。 コマンドが戻るときに、すべてのファイルがコピーされることを示します。

ディレクトリをコピーする

azcopy copy コマンドを使用して、ディレクトリを別のストレージ アカウントにコピーします。

ヒント

この例では、パス引数を単一引用符 ('') で囲んでいます。 Windows コマンド シェル (cmd.exe) を除き、すべてのコマンド シェルで単一引用符を使用します。 Windows コマンド シェル (cmd.exe) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

構文

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

例 (Data Lake Storage エンドポイント)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

コピー操作は同期的に行われます。 コマンドが戻ると、すべてのファイルがコピーされます。

コンテナーをコピーする

azcopy copy コマンドを使用して、コンテナーを別のストレージ アカウントにコピーします。

ヒント

この例では、パス引数を単一引用符 ('') で囲んでいます。 Windows コマンド シェル (cmd.exe) を除き、すべてのコマンド シェルで単一引用符を使用します。 Windows コマンド シェル (cmd.exe) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

構文

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

例 (Data Lake Storage エンドポイント)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

コピー操作は同期的に行われます。 コマンドが戻ると、すべてのファイルがコピーされます。

コンテナー、ディレクトリ、BLOB のコピー

azcopy copy コマンドを使用して、すべてのコンテナー、ディレクトリ、BLOB を別のストレージ アカウントにコピーします。

ヒント

この例では、パス引数を単一引用符 ('') で囲んでいます。 Windows コマンド シェル (cmd.exe) を除き、すべてのコマンド シェルで単一引用符を使用します。 Windows コマンド シェル (cmd.exe) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

構文

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

例 (Data Lake Storage エンドポイント)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

コピー操作は同期的に行われます。 コマンドが戻るときに、すべてのファイルがコピーされることを示します。

BLOB をコピーしてインデックス タグを追加する

BLOB を別のストレージ アカウントにコピーし、BLOB インデックス タグを対象の BLOB に追加します。

Microsoft Entra 承認を使用している場合は、 ストレージ BLOB データ所有者 ロールをセキュリティ プリンシパルに割り当てるか、カスタム Azure ロールを使用して Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeAzure リソース プロバイダー操作 にアクセス許可を付与します。 Shared Access Signature (SAS) トークンを使用している場合、トークンは、 t SAS アクセス許可を介して BLOB のタグへのアクセスを提供する必要があります。

タグを追加するには、URL でエンコードされたキーと値のペアで --blob-tags オプションを使用します。

たとえば、キー my tag と値 my tag valueを追加するには、宛先パラメーターに --blob-tags='my%20tag=my%20tag%20value' を追加します。

複数のインデックス タグをアンパサンド (&) で区切ります。 たとえば、キー my second tag と値 my second tag valueを追加する場合、完全なオプション文字列は --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

--blob-tags オプションを使用する方法の例を次に示します。

ヒント

これらの例では、パス引数を単一引用符 ('') で囲んでいます。 Windows コマンド シェル (cmd.exe) を除き、すべてのコマンド シェルで単一引用符を使用します。 Windows コマンド シェル (cmd.exe) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

BLOB の例


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

ディレクトリの例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

コンテナーの例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

アカウントの例

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

コピー操作は同期的に行われます。 コマンドが戻ると、すべてのファイルがコピーされます。

ソースのディレクトリ、コンテナー、またはアカウントを指定した場合、コピー先にコピーするすべての BLOB は、コマンドで指定したのと同じタグを持ちます。

オプションのフラグを使用してコピーする

オプションのフラグを使用して、コピー操作を調整できます。 以下にいくつか例を示します。

シナリオ フラグ
ブロック、ページ、または追加 BLOB として BLOB をコピーします。 --blob-type=[BlockBlob|PageBlob|AppendBlob]
特定のアクセス層 (アーカイブ層など) にコピーします。 --block-blob-tier=[なし|ホット|クール|アーカイブ]
自動的にファイルを圧縮解除します。 --decompress=[gzip|deflate]

完全な一覧については、オプションを参照してください。

ソースと宛先の種類を指定する

AzCopy では、パイプのシナリオやエミュレーターなど、自動検出が失敗する可能性がある場合に、 --from-to パラメーターを使用して、ソースと宛先のリソースの種類を明示的に定義します。 このパラメーターは、AzCopy が転送のコンテキストを理解し、それに応じて最適化するのに役立ちます。

FromTo 値 Description
BlobBlob 2 つの Azure Blob Storage の場所間でコピーする
BlobBlobFS Azure Blob Storage から Azure Data Lake Gen2 (BlobFS) にコピーする
BlobFSBlob Azure Data Lake Gen2 (BlobFS) から Azure Blob Storage にコピーする
BlobFSBlobFS 2 つの Azure Data Lake Gen2 (BlobFS) の場所間でコピーする
BlobFSFile Azure Data Lake Gen2 (BlobFS) から Azure File Storage へのコピー
BlobFile Azure Blob Storage から Azure File Storage にコピーする
FileBlob Azure File Storage から Azure Blob Storage にコピーする
FileBlobFS Azure File Storage から Azure Data Lake Gen2 (BlobFS) にコピーする

次のステップ

他の例については、次の記事を参照してください。

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