AzCopy を使用して Azure BLOB ストレージにファイルをアップロードする

AzCopy v10 コマンド ライン ユーティリティを使用して、BLOB ストレージにファイルやディレクトリをアップロードできます。

BLOB のダウンロード、BLOB ストレージとの同期、アカウント間での BLOB のコピーなどの他の種類のタスクの例を確認するには、この記事の「次のステップ」のセクションに示されているリンクを参照してください。

はじめに

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

Note

この記事の例では、Microsoft Entra ID を使って認可の資格情報を指定していることを前提としています。

SAS トークンを使用して BLOB データへのアクセスを承認する場合、各 AzCopy コマンドのリソース URL の先頭にそのトークンを追加できます。 (例: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>')。

コンテナーを作成する

azcopy make コマンドを使用し、コンテナーを作成できます。

ヒント

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

構文

azcopy make 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>'

azcopy make 'https://mystorageaccount.blob.core.windows.net/mycontainer'

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

azcopy make 'https://mystorageaccount.dfs.core.windows.net/mycontainer'

詳細なリファレンス ドキュメントについては、「azcopy make」を参照してください。

ファイルをアップロードする

azcopy copy コマンドを使用してファイルをアップロードします。

ヒント

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

構文

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

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

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

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

ファイル パスまたはファイル名の任意の場所で、ワイルドカード記号 (*) を使用してファイルをアップロードすることもできます。 例: 'C:\myDirectory\*.txt'、または C:\my*\*.txt

ディレクトリをアップロードする

azcopy copy コマンドを使用してディレクトリをアップロードします。

この例では、ディレクトリ (とそのディレクトリ内のすべてのファイル) が BLOB コンテナーにコピーされます。 その結果、同じ名前でコンテナーにディレクトリが生成されます。

ヒント

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

構文

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --recursive

コンテナー内のディレクトリにコピーするには、コマンド文字列でそのディレクトリの名前を指定します。

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --recursive

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' --recursive

コンテナー内に存在しないディレクトリの名前を指定した場合は、AzCopy によってその名前で新しいディレクトリが作成されます。

ディレクトリの内容をアップロードする

azcopy copy コマンドを使用してディレクトリの内容をアップロードします。 格納しているディレクトリ自体をコピーせずに内容をアップロードするには、ワイルドカード記号 (*) を使用します。

ヒント

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

構文

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>'

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory'

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

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory'

すべてのサブディレクトリ内のファイルをアップロードするには、--recursive フラグを追加します。

特定のファイルをアップロードする

完全なファイル名、ワイルドカード文字 (*) を使用した部分的な名前、または日付と時刻を使用して、特定のファイルをアップロードすることができます。

ヒント

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

複数の完全なファイル名を指定する

azcopy copy コマンドを --include-path オプションと共に使用します。 セミコロン (;) を使用して、個々のファイル名を区切ります。

構文

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-path <semicolon-separated-file-list>

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

この例では、AzCopy によって C:\myDirectory\photos ディレクトリと C:\myDirectory\documents\myFile.txt ファイルが転送されます。 C:\myDirectory\photos ディレクトリ内のすべてのファイルを転送するには、--recursive オプションを含めます。

--exclude-path オプションを使用してファイルを除外することもできます。 詳細については、「azcopy copy」リファレンス ドキュメントを参照してください。

ワイルドカード文字を使用する

azcopy copy コマンドを --include-pattern オプションと共に使用します。 ワイルドカード文字を含む名前の一部を指定します。 セミコロン (;) で名前を区切ります。

構文

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

--exclude-pattern オプションを使用してファイルを除外することもできます。 詳細については、「azcopy copy」リファレンス ドキュメントを参照してください。

--include-pattern オプションと --exclude-pattern オプションは、パスではなくファイル名にのみ適用されます。 ディレクトリ ツリーに存在するテキスト ファイルをすべてコピーする場合は、-recursive オプションを使用してディレクトリ ツリー全体を取得し、次に -include-pattern を使用して *.txt を指定し、すべてのテキスト ファイルを取得します。

ある日時の前後に変更されたファイルをアップロードする

azcopy copy コマンドを --include-before または --include-after オプションと共に使用します。 日付と時刻を ISO-8601 形式で指定します (例: 2020-08-19T15:04:00Z)。

次の例では、指定した日付以降に変更されたファイルをアップロードします。

構文

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>' --include-after <Date-Time-in-ISO-8601-format>

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory'  --include-after '2020-08-19T15:04:00Z'

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

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory'   --include-after '2020-08-19T15:04:00Z'

詳細なリファレンスについては、azcopy copy に関するリファレンス ドキュメントを参照してください。

インデックス タグを使用してアップロードする

ファイルをアップロードし、BLOB インデックス タグをターゲット BLOB に追加できます。

Microsoft Entra 認可を使用する場合は、セキュリティ プリンシパルに、ストレージ BLOB データ所有者ロールが割り当てられているか、カスタム Azure ロール経由で Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write Azure リソース プロバイダーの操作に対するアクセス許可が付与されている必要があります。 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) を使用している場合は、単一引用符 ('') ではなく、二重引用符 ("") でパス引数を囲みます。

ファイルをアップロードする

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

ディレクトリをアップロードする

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

ディレクトリの内容をアップロードする

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Note

ソースのディレクトリを指定すると、コピー先にコピーされたすべての BLOB のタグは、コマンドで指定したものと同じになります。

オプションのフラグを使用してアップロードする

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

シナリオ フラグ
追加 BLOB またはページ BLOB としてファイルをアップロードします。 --blob-type=[BlockBlob|PageBlob|AppendBlob]
特定のアクセス層 (アーカイブ層など) にアップロードします。 --block-blob-tier=[None|Hot|Cool|Archive]

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

次のステップ

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

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