AzCopy を使ってみる
AzCopy は、ストレージ アカウント間の BLOB またはファイル コピーに利用できるコマンドライン ユーティリティです。 この記事は、AzCopy をダウンロードし、ストレージ アカウントに接続し、データを転送する際に役立ちます。
Note
AzCopy V10 が現在サポートされているバージョンの AzCopy です。
以前のバージョンの AzCopy を使用する必要がある場合は、この記事の「以前のバージョンの AzCopy の使用」セクションを参照してください。
このビデオでは、AzCopy ユーティリティをダウンロードして実行する方法について説明します。
ビデオの手順については、次のセクションでも説明します。
AzCopy のユース ケース
AzCopy を使用して、Azure ストレージ アカウントとの間でデータをコピーできます。 一般的な使用用途は次のとおりです。
- オンプレミスのソースから Azure ストレージ アカウントへのデータのコピー
- Azure ストレージ アカウントからオンプレミス ソースへのデータのコピー
- あるストレージ アカウントから別のストレージ アカウントへのデータのコピー
これらのユース ケースにはそれぞれ固有のオプションがあります。 たとえば、AzCopy には、データをコピーまたは同期するためのネイティブ コマンドがあります。 これにより、AzCopy は、1 回限りのコピー アクティビティや継続的な同期シナリオに使用できる柔軟なツールになります。 AzCopy では、Azure Blob Storage や Azure Files などの特定のストレージ サービスを対象にすることもできます。 これにより、BLOB からファイル、ファイルから BLOB、ファイル間などでデータをコピーできます。
これらのシナリオの詳細については、次を参照してください。
- AzCopy を使用して Azure BLOB ストレージにファイルをアップロードする
- AzCopy を使用して Azure BLOB ストレージから BLOB をダウンロードする
- AzCopy を使用して Azure ストレージ アカウント間で BLOB をコピーする
- AzCopy を使用して Azure Blob Storage と同期する
Note
AzCopy では、転送中にソースまたは宛先がアクティブに変更されるシナリオはサポートされていません。
パッケージ マネージャーを使用して AzCopy を Linux にインストールする
Microsoft 製品用 Linux ソフトウェア リポジトリ でホストされている Linux パッケージを使用して AzCopy をインストールできます。
リポジトリ構成パッケージをダウンロードします。
重要
必ず、ディストリビューションとバージョンを適切な文字列に置き換えてください。
curl -sSL -O https://packages.microsoft.com/config/<distribution>/<version>/packages-microsoft-prod.rpm
リポジトリ構成パッケージをインストールします。
sudo rpm -i packages-microsoft-prod.rpm
リポジトリ構成パッケージをインストールした後、削除します。
rm packages-microsoft-prod.rpm
パッケージのインデックス ファイルを更新します。
sudo dnf update
AzCopy をインストールします。
sudo dnf install azcopy
AzCopy の移植可能なバイナリをダウンロードする
パッケージをインストールする代わりに、AzCopy V10 実行可能ファイルをコンピューター上の任意のディレクトリにダウンロードできます。
- Windows 64 ビット (zip)
- Windows 32 ビット (zip)
- Linux x86-64 (tar)
- Linux ARM64 (tar)
- macOS (zip)
- macOS ARM64 プレビュー (zip)
これらのファイルは、zip ファイル (Windows および Mac) または tar ファイル (Linux) として圧縮されます。 Linux 上で tar ファイルをダウンロードして圧縮を解除するには、お使いの Linux ディストリビューションのドキュメントを参照してください。
AzCopy リリースの詳細については、AzCopy リリースに関するページを参照してください。
Note
Azure Table Storage サービスとの間でデータをコピーする場合、AzCopy バージョン 7.3 をインストールしてください。
AzCopy を実行する
利便性のため、AzCopy 実行可能ファイルのディレクトリの場所をご自分のシステム パスに追加して使いやすくすることを検討してください。 そうすると、ご使用のシステム上にある任意のディレクトリから「azcopy
」を入力できます。
AzCopy ディレクトリをご自分のパスに追加しないことを選択した場合、実際の AzCopy 実行可能ファイルの場所にディレクトリを変更し、Windows PowerShell コマンド プロンプトで「azcopy
」または「.\azcopy
」と入力する必要があります。
ご自分の Azure Storage アカウントの所有者であっても、データへのアクセス許可が自動的に割り当てられるわけではありません。 AzCopy を使用して意味のある動作を行う前に、ストレージ サービスに認証資格情報を提供する方法を決定する必要があります。
AzCopy を承認する
Microsoft Entra ID または Shared Access Signature (SAS) トークンを使用して、資格情報を提供できます。
オプション 1: Microsoft Entra ID を使う
Microsoft Entra ID を使用すると、各コマンドに SAS トークンを追加する代わりに、資格情報を 1 回入力するだけで済みます。
オプション 2:SAS トークンを使用する
AzCopy コマンドで使用する各コピー元または各コピー先の URL に SAS トークンを追加できます。
この例のコマンドでは、ローカル ディレクトリから BLOB コンテナーにデータが繰り返しコピーされます。 架空の SAS トークンが、コンテナー URL の末尾に追加されます。
azcopy copy "C:\local\path" "https://account.blob.core.windows.net/mycontainer1/?sv=2018-03-28&ss=bjqt&srt=sco&sp=rwddgcup&se=2019-05-01T05:01:17Z&st=2019-04-30T21:01:17Z&spr=https&sig=MGCXiyEzbtttkr3ewJIh2AR8KrghSy1DGM9ovN734bQF4%3D" --recursive=true
SAS トークンの詳細とその取得方法については、「Shared Access Signatures (SAS) の使用」を参照してください。
Note
ストレージ アカウントの [安全な転送が必須] 設定によって、ストレージ アカウントへの接続がトランスポート層セキュリティ (TLS) で保護されるかどうかが決まります。 既定では、この設定は有効になっています。
データの転送
ID を承認するか、SAS トークンを取得したら、データの転送を開始できます。
サンプル コマンドは次の記事のいずれかをご覧ください。
サービス | [アーティクル] |
---|---|
Azure Blob Storage | Azure Blob Storage にファイルをアップロードする |
Azure Blob Storage | Azure Blob Storage から BLOB をダウンロードする |
Azure Blob Storage | Azure ストレージ アカウント間で BLOB をコピーする |
Azure Blob Storage | Azure Blob Storage と同期する |
Azure Files | AzCopy とファイル ストレージでデータを転送する |
Amazon S3 | Amazon S3 から Azure Storage にデータをコピーする |
Google Cloud Storage | Google Cloud Storage から Azure Storage にデータをコピーする (プレビュー) |
Azure Stack ストレージ | AzCopy と Azure Stack ストレージを使用してデータを転送する |
コマンドのヘルプを表示する
コマンドの一覧を表示するには、「azcopy -h
」と入力し、ENTER キーを押します。
特定のコマンドの情報を知るには、単にコマンドの名前を含めてください (例: azcopy list -h
)。
コマンドの一覧
次の表に、AzCopy v10 のすべてのコマンドを示します。 各コマンドは、リファレンス記事にリンクされています。
command | 説明 |
---|---|
azcopy bench | 指定した場所との間でテスト データをアップロードまたはダウンロードすることで、パフォーマンス ベンチマークを実行します。 |
azcopy copy | ソース データをコピー先の場所にコピーします。 |
azcopy doc | ツールのドキュメントをマークダウン形式で生成します。 |
azcopy env | AzCopy の動作を構成できる環境変数を示します。 |
azcopy jobs | ジョブの管理に関連するサブコマンド。 |
azcopy jobs clean | すべてのジョブのログおよびプランのファイルをすべて削除します。 |
azcopy jobs list | すべてのジョブに関する情報を表示します。 |
azcopy jobs remove | 指定されたジョブ ID に関連付けられているすべてのファイルを削除します。 |
azcopy jobs resume | 指定されたジョブ ID を持つ既存のジョブを再開します。 |
azcopy jobs show | 指定されたジョブ ID の詳細情報を表示します。 |
azcopy list | 指定されたリソース内のエンティティを一覧表示します。 |
azcopy login | Microsoft Entra ID にログインして、Azure Storage リソースにアクセスします。 |
azcopy login status | 指定されたリソース内のエンティティを一覧表示します。 |
azcopy logout | ユーザーをログアウトし、Azure Storage リソースへのアクセスを終了します。 |
azcopy make | コンテナーまたはファイル共有を作成します。 |
azcopy remove | Azure ストレージ アカウントから BLOB またはファイルを削除します。 |
azcopy sync | 元の場所を同期先の場所にレプリケートします。 |
azcopy set-properties | 1 つまたは複数の BLOB のアクセス層を変更し、1 つまたは複数の BLOB のメタデータとインデックス タグを置換 (上書き) します。 |
Note
AzCopy には、ファイルの名前を変更するコマンドはありません。
スクリプト内で使用する
静的なダウンロード リンクを取得する
時間と共に、AzCopy のダウンロード リンクは AzCopy の新しいバージョンを指します。 実際のスクリプトで AzCopy をダウンロードする場合、実際のスクリプトで使用する機能が新しいバージョンの AzCopy で変更されていると、スクリプトの動作が停止する可能性があります。
これらの問題を回避するには、AzCopy の現在のバージョンの静的 (変更されない) リンクを取得します。 そうすることで、実際のスクリプトを実行するたびに、まったく同じバージョンの AzCopy がダウンロードされます。
そのリンクを取得するには、このコマンドを実行します。
オペレーティング システム | コマンド |
---|---|
Linux | curl -s -D- https://aka.ms/downloadazcopy-v10-linux \| grep ^Location |
Windows PowerShell | (Invoke-WebRequest -Uri https://aka.ms/downloadazcopy-v10-windows -MaximumRedirection 0 -ErrorAction SilentlyContinue).headers.location |
PowerShell 6.1+ | (Invoke-WebRequest -Uri https://aka.ms/downloadazcopy-v10-windows -MaximumRedirection 0 -ErrorAction SilentlyContinue -SkipHttpErrorCheck).headers.location |
Note
Linux の場合、tar
コマンドの --strip-components=1
では、バージョン名を含む最上位フォルダーが削除され、代わりに現在のフォルダーに直接バイナリが抽出されます。 これにより、wget
URL を更新するだけで、新しいバージョンの azcopy
でスクリプトを更新できます。
この URL はこのコマンドの出力に表示されます。 その後、実際のスクリプトでその URL を使用して AzCopy をダウンロードできます。
Linux
wget -O azcopy_v10.tar.gz https://aka.ms/downloadazcopy-v10-linux && tar -xf azcopy_v10.tar.gz --strip-components=1
Windows PowerShell
Invoke-WebRequest -Uri 'https://azcopyvnext.azureedge.net/release20220315/azcopy_windows_amd64_10.14.1.zip' -OutFile 'azcopyv10.zip'
Expand-archive -Path '.\azcopyv10.zip' -Destinationpath '.\'
$AzCopy = (Get-ChildItem -path '.\' -Recurse -File -Filter 'azcopy.exe').FullName
# Invoke AzCopy
& $AzCopy
PowerShell 6.1+
Invoke-WebRequest -Uri 'https://azcopyvnext.azureedge.net/release20220315/azcopy_windows_amd64_10.14.1.zip' -OutFile 'azcopyv10.zip'
$AzCopy = (Expand-archive -Path '.\azcopyv10.zip' -Destinationpath '.\' -PassThru | where-object {$_.Name -eq 'azcopy.exe'}).FullName
# Invoke AzCopy
& $AzCopy
SAS トークンの特殊文字をエスケープする
拡張子が .cmd
のバッチ ファイルでは、SAS トークンに出現する %
文字をエスケープする必要があります。 これを行うには、SAS トークン文字列の既存の %
文字の横に %
の文字を追加します。 結果の文字シーケンスは %%
と表されます。 各 &
文字の前には必ず ^
を追加し、文字シーケンス ^&
を作ってください。
Jenkins を使用してスクリプトを実行する
Jenkins を使用してスクリプトを実行する場合は、必ずスクリプトの先頭に次のコマンドを配置してください。
/usr/bin/keyctl new_session
Azure Storage Explorer で使用する
Storage Explorer は、AzCopy を使用してすべてのデータ転送操作を実行します。 AzCopy のパフォーマンス上の利点を適用する場合は Storage Explorer を使用できますが、ファイルの操作にはコマンド ラインではなくグラフィカル ユーザー インターフェイスを使用することをお勧めします。
Storage Explorer では、ご自分のアカウント キーを使用して、操作を実行します。そのため、Storage Explorer にサインインした後は、追加の承認資格情報を提供する必要はありません。
構成、最適化、修正を行う
次のいずれかのリソースを参照してください。
以前のバージョンを使う (非推奨)
以前のバージョンの AzCopy を使用する必要がある場合は、次のいずれかのリンクを参照してください。
Note
これらのバージョンの AzCopy は非推奨です。 Microsoft では、AzCopy v10 の使用をお勧めします。
次のステップ
ご質問、問題、一般的なフィードバックは、GitHub ページからお送りください。