AzCopy を使ってみるGet started with AzCopy

AzCopy は、ストレージ アカウント間の BLOB またはファイル コピーに利用できるコマンドライン ユーティリティです。AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. この記事は、AzCopy をダウンロードし、ストレージ アカウントに接続し、ファイルを転送する際に役立ちます。This article helps you download AzCopy, connect to your storage account, and then transfer files.

注意

AzCopy V10 が現在サポートされているバージョンの AzCopy です。AzCopy V10 is the currently supported version of AzCopy.

AzCopy v8.1 を使用する必要がある場合、この記事の「以前のバージョンの AzCopy の使用」を参照してください。If you need to use AzCopy v8.1, see the Use the previous version of AzCopy section of this article.

AzCopy をダウンロードするDownload AzCopy

まず、お使いのコンピューター上の任意のディレクトリに AzCopy V10 実行可能ファイルをダウンロードします。First, download the AzCopy V10 executable file to any directory on your computer.

AzCopy V10 は単に実行可能ファイルなので、インストールするものはありません。AzCopy V10 is just an executable file, so there's nothing to install.

注意

Azure Table Storage サービスとの間でデータをコピーする場合、AzCopy バージョン 7.3 をインストールしてください。If you want to copy data to and from your Azure Table storage service, then install AzCopy version 7.3.

AzCopy を実行するRun AzCopy

利便性のため、AzCopy 実行可能ファイルのディレクトリの場所をご自分のシステム パスに追加して使いやすくすることを検討してください。For convenience, consider adding the directory location of the AzCopy executable to your system path for ease of use. そうすると、ご使用のシステム上にある任意のディレクトリから「azcopy」を入力できます。That way you can type azcopy from any directory on your system.

AzCopy ディレクトリをご自分のパスに追加しないことを選択した場合、実際の AzCopy 実行可能ファイルの場所にディレクトリを変更し、Windows PowerShell コマンド プロンプトで「azcopy」または「.\azcopy」と入力する必要があります。If you choose not to add the AzCopy directory to your path, you'll have to change directories to the location of your AzCopy executable and type azcopy or .\azcopy in Windows PowerShell command prompts.

コマンドの一覧を表示するには、「azcopy -h」と入力し、ENTER キーを押します。To see a list of commands, type azcopy -h and then press the ENTER key.

特定のコマンドの情報を知るには、単にコマンドの名前を含めてください (例: azcopy list -h)。To learn about a specific command, just include the name of the command (For example: azcopy list -h).

インライン ヘルプ

注意

ご自分の Azure Storage アカウントの所有者であっても、データへのアクセス許可が自動的に割り当てられるわけではありません。As an owner of your Azure Storage account, you aren't automatically assigned permissions to access data. AzCopy を使用して意味のある動作を行う前に、ストレージ サービスに認証資格情報を提供する方法を決定する必要があります。Before you can do anything meaningful with AzCopy, you need to decide how you'll provide authorization credentials to the storage service.

認証資格情報の提供方法を選択するChoose how you'll provide authorization credentials

認証資格情報は、Azure Active Directory (AD) または Shared Access Signature (SAS) トークンを使用して提供できます。You can provide authorization credentials by using Azure Active Directory (AD), or by using a Shared Access Signature (SAS) token.

次の表をガイドとして使用してください。Use this table as a guide:

ストレージの種類Storage type 現在サポートされている認証方法Currently supported method of authorization
Blob StorageBlob storage Azure AD および SASAzure AD & SAS
BLOB ストレージ (階層的名前空間)Blob storage (hierarchial namespace) Azure AD および SASAzure AD & SAS
File StorageFile storage SAS のみSAS only

オプション 1:Azure Active Directory を使用するOption 1: Use Azure Active Directory

Azure Active Directory を使用すると、各コマンドに SAS トークンを追加する代わりに、資格情報を 1 回入力するだけで済みます。By using Azure Active Directory, you can provide credentials once instead of having to append a SAS token to each command.

注意

現在のリリースでは、ストレージ アカウント間で BLOB をコピーする場合は、各ソース URL に SAS トークンを追加する必要があります。In the current release, if you plan to copy blobs between storage accounts, you’ll have to append a SAS token to each source URL. コピー先 URL からのみ、SAS トークンを省略できます。You can omit the SAS token only from the destination URL. 例については、「ストレージ アカウント間で BLOB をコピーする」をご覧ください。For examples, see Copy blobs between storage accounts.

必要な認証レベルは、ファイルをアップロードする予定か、ファイルをダウンロードするだけなのかによって異なります。The level of authorization that you need is based on whether you plan to upload files or just download them.

ファイルをダウンロードするだけの場合は、ユーザー ID、マネージド ID、またはサービス プリンシパルにストレージ BLOB データ閲覧者が割り当てられていることを確認します。If you just want to download files, then verify that the Storage Blob Data Reader has been assigned to your user identity, managed identity, or service principal.

ユーザー ID、マネージド ID、およびサービス プリンシパルはそれぞれ "セキュリティ プリンシパル" の種類です。そのため、この記事の残りの部分では、"セキュリティ プリンシパル" という用語を使います。User identities, managed identities, and service principals are each a type of security principal, so we'll use the term security principal for the remainder of this article.

ファイルをアップロードする場合は、これらのロールのいずれかがご自分のセキュリティ プリンシパルに割り当てられていることを確認します。If you want to upload files, then verify that one of these roles has been assigned to your security principal:

これらのロールは、以下のいずれかの範囲でセキュリティ プリンシパルに割り当てることができます。These roles can be assigned to your security principal in any of these scopes:

  • コンテナー (ファイル システム)Container (file system)
  • ストレージ アカウントStorage account
  • Resource groupResource group
  • SubscriptionSubscription

ロールを確認し、割り当てる方法については、「Azure portal で RBAC を使用して Azure BLOB とキューのデータへのアクセスを付与する」を参照してください。To learn how to verify and assign roles, see Grant access to Azure blob and queue data with RBAC in the Azure portal.

注意

RBAC ロールの割り当ての反映には最大で 5 分かかる場合があることに留意してください。Keep in mind that RBAC role assignments can take up to five minutes to propagate.

ターゲット コンテナーまたはディレクトリのアクセス制御リスト (ACL) にご自分のセキュリティ プリンシパルが追加されている場合は、これらのロールのいずれかがご自分のセキュリティ プリンシパルに割り当てられている必要はありません。You don't need to have one of these roles assigned to your security principal if your security principal is added to the access control list (ACL) of the target container or directory. ACL では、ご自分のセキュリティ プリンシパルには、ターゲット ディレクトリの書き込みアクセス許可と、コンテナーおよび各親ディレクトリの実行アクセス許可が必要になります。In the ACL, your security principal needs write permission on the target directory, and execute permission on container and each parent directory.

詳細については、Azure Data Lake Storage Gen2 でのアクセス制御に関するページを参照してください。To learn more, see Access control in Azure Data Lake Storage Gen2.

ユーザー ID の認証Authenticate a user identity

ご自分のユーザー ID に必要な認証レベルが与えられていることを確認したら、コマンド プロンプトを開き、次のコマンドを入力し、Enter キーを押します。After you've verified that your user identity has been given the necessary authorization level, open a command prompt, type the following command, and then press the ENTER key.

azcopy login

1 つ以上の組織に属している場合、ストレージ アカウントが属する組織のテナント ID を含めます。If you belong to more than one organization, include the tenant ID of the organization to which the storage account belongs.

azcopy login --tenant-id=<tenant-id>

<tenant-id> プレースホルダーを、ストレージ アカウントが属する組織のテナント ID に置き換えます。Replace the <tenant-id> placeholder with the tenant ID of the organization to which the storage account belongs. テナント ID を確認するには、Azure portal 内で [Azure Active Directory] > [プロパティ] > [ディレクトリ ID] の順に選択します。To find the tenant ID, select Azure Active Directory > Properties > Directory ID in the Azure portal.

このコマンドによって、認証コードと Web サイトの URL が返されます。This command returns an authentication code and the URL of a website. Web サイトを開き、コードを指定し、 [次へ] ボタンを選択します。Open the website, provide the code, and then choose the Next button.

コンテナーを作成する

サインイン ウィンドウが表示されます。A sign-in window will appear. そのウィンドウで、Azure アカウント資格情報を使用して、Azure アカウントにサインインします。In that window, sign into your Azure account by using your Azure account credentials. 正常にサインインしたら、ブラウザー ウィンドウを閉じ、AzCopy の使用を開始できます。After you've successfully signed in, you can close the browser window and begin using AzCopy.

サービス プリンシパルの認証Authenticate a service principal

ユーザーの介入なしで実行されるスクリプト内で AzCopy を使用する予定の場合、これは優れたオプションです (特にオンプレミスで実行するとき)。This is a great option if you plan to use AzCopy inside of a script that runs without user interaction, particularly when running on-premises. Azure で実行されている VM で AzCopy を実行する場合、マネージド サービス ID を管理しやすくなります。If you plan to run AzCopy on VMs that run in Azure, a managed service identity is easier to administer. 詳しくは、この記事の「マネージド ID を認証する」セクションを参照してください。To learn more, see the Authenticate a managed identity section of this article.

そのスクリプトを実行する前に、少なくとも 1 回対話的にサインインする必要があります。そうすることで、ご自分のサービス プリンシパルの資格情報を AzCopy に渡すことができます。Before you run a script, you have to sign-in interactively at least one time so that you can provide AzCopy with the credentials of your service principal. それらの資格情報は暗号化された安全なファイルに格納されます。そのため、実際のスクリプトでその機密情報を渡す必要がありません。Those credentials are stored in a secured and encrypted file so that your script doesn't have to provide that sensitive information.

クライアント シークレットを使用して、またはご自分のサービス プリンシパルのアプリ登録に関連付けられている証明書のパスワードを使用して、ご自分のアカウントにサインインできます。You can sign into your account by using a client secret or by using the password of a certificate that is associated with your service principal's app registration.

サービス プリンシパルの作成の詳細については、「方法:リソースにアクセスできる Azure AD アプリケーションとサービス プリンシパルをポータルで作成する」のガイダンスに従って、サービス プリンシパルを作成します。To learn more about creating service principal, see How to: Use the portal to create an Azure AD application and service principal that can access resources.

サービス プリンシパル全般の詳細については、「Azure Active Directory のアプリケーション オブジェクトとサービス プリンシパル オブジェクト」を参照してください。To learn more about service principals in general, see Application and service principal objects in Azure Active Directory

クライアント シークレットの使用Using a client secret

まず、AZCOPY_SPA_CLIENT_SECRET 環境変数を、ご自分のサービス プリンシパルのアプリ登録のクライアント シークレットに設定します。Start by setting the AZCOPY_SPA_CLIENT_SECRET environment variable to the client secret of your service principal's app registration.

注意

この値は、必ず、ご使用のオペレーティング システムの環境変数の設定ではなく、ご使用のコマンド プロンプトから設定します。Make sure to set this value from your command prompt, and not in the environment variable settings of your operating system. そうすることで、この値を現在のセッションでのみ使用できるようになります。That way, the value is available only to the current session.

この例では、これを PowerShell で実行する方法を示しています。This example shows how you could do this in PowerShell.

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

注意

この例で示すように、プロンプトを使用することを検討してください。Consider using a prompt as shown in this example. そうすると、ご自分のパスワードがご使用のコンソールのコマンド履歴に表示されません。That way, your password won't appear in your console's command history.

次に、次のコマンドを入力し、Enter キーを押します。Next, type the following command, and then press the ENTER key.

azcopy login --service-principal --application-id <application-id>

<application-id> プレースホルダーを、ご自分のサービス プリンシパルのアプリ登録のアプリケーション ID に置き換えます。Replace the <application-id> placeholder with the application ID of your service principal's app registration.

証明書の使用Using a certificate

承認にご自分の資格情報を使用する場合は、ご自分のアプリ登録に証明書をアップロードした後、その証明書を使用してログインできます。If you prefer to use your own credentials for authorization, you can upload a certificate to your app registration, and then use that certificate to login.

ご自分のアプリ登録にご使用の証明書をアップロードするだけでなく、AzCopy が実行されるマシンまたは VM 上に証明書のコピーを保存する必要もあります。In addition to uploading your certificate to your app registration, you'll also need to have a copy of the certificate saved to the machine or VM where AzCopy will be running. この証明書のコピーは、.PFX または .PEM 形式で、秘密キーが含まれている必要があります。This copy of the certificate should be in .PFX or .PEM format, and must include the private key. 秘密キーはパスワードで保護する必要があります。The private key should be password-protected. Windows を使用していて、ご使用の証明書が証明書ストア内にのみ存在する場合は、必ず、その証明書 (秘密キーを含む) を PFX ファイルにエクスポートしてください。If you're using Windows, and your certificate exists only in a certificate store, make sure to export that certificate to a PFX file (including the private key). ガイダンスについては、「Export-PfxCertificate」を参照してください。For guidance, see Export-PfxCertificate

次に、AZCOPY_SPA_CERT_PASSWORD 環境変数を、証明書のパスワードに設定します。Next, set the AZCOPY_SPA_CERT_PASSWORD environment variable to the certificate password.

注意

この値は、必ず、ご使用のオペレーティング システムの環境変数の設定ではなく、ご使用のコマンド プロンプトから設定します。Make sure to set this value from your command prompt, and not in the environment variable settings of your operating system. そうすることで、この値を現在のセッションでのみ使用できるようになります。That way, the value is available only to the current session.

この例では、このタスクを PowerShell で実行する方法を示しています。This example shows how you could do this task in PowerShell.

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

次に、次のコマンドを入力し、Enter キーを押します。Next, type the following command, and then press the ENTER key.

azcopy login --service-principal --certificate-path <path-to-certificate-file>

<path-to-certificate-file> プレースホルダーを、証明書ファイルの相対または完全修飾パスに置き換えます。Replace the <path-to-certificate-file> placeholder with the relative or fully-qualified path to the certificate file. AzCopy は、この証明書のパスを保存しますが、証明書のコピーは保存しません。そのため、必ず所定の場所にその証明書を保持してください。AzCopy saves the path to this certificate but it doesn't save a copy of the certificate, so make sure to keep that certificate in place.

注意

この例で示すように、プロンプトを使用することを検討してください。Consider using a prompt as shown in this example. そうすると、ご自分のパスワードがご使用のコンソールのコマンド履歴に表示されません。That way, your password won't appear in your console's command history.

マネージド ID を認証するAuthenticate a managed identity

ユーザーの介入なしで実行されるスクリプト内で AzCopy を使用し、スクリプトが Azure 仮想マシン (VM) から実行される場合、これは優れたオプションです。This is a great option if you plan to use AzCopy inside of a script that runs without user interaction, and the script runs from an Azure Virtual Machine (VM). このオプションを使用する場合、資格情報を VM に保存する必要はありません。When using this option, you won't have to store any credentials on the VM.

VM で有効にしたシステム全体のマネージド ID を使用して、または VM に割り当てたユーザー割り当てのマネージド ID のクライアント ID、オブジェクト ID、またはリソース ID を使用して、アカウントにサインインできます。You can sign into your account by using the a system-wide managed identity that you've enabled on your VM, or by using the client ID, Object ID, or Resource ID of a user-assigned managed identity that you've assigned to your VM.

システム全体のマネージド ID を有効にする方法、またはユーザー割り当てのマネージド ID を作成したりする方法について詳しくは、「Azure portal を使用して Azure VM で Azure リソースのマネージド ID を構成する」をご覧ください。To learn more about how to enable a system-wide managed identity or create a user-assigned managed identity, see Configure managed identities for Azure resources on a VM using the Azure portal.

システム全体のマネージド ID の使用Using a system-wide managed identity

まず、VM でシステム全体のマネージド ID が有効になっていることを確認します。First, make sure that you've enabled a system-wide managed identity on your VM. システム割り当てマネージド ID」をご覧ください。See System-assigned managed identity.

次に、コマンド コンソールで、次のコマンドを入力して Enter キーを押します。Then, in your command console, type the following command, and then press the ENTER key.

azcopy login --identity
ユーザー割り当てマネージド ID の使用Using a user-assigned managed identity

まず、VM でユーザー割り当てマネージド ID が有効になっていることを確認します。First, make sure that you've enabled a user-assigned managed identity on your VM. ユーザー割り当てマネージド ID」をご覧ください。See User-assigned managed identity.

次に、コマンド コンソールで、次のいずれかのコマンドを入力して Enter キーを押します。Then, in your command console, type any of the following commands, and then press the ENTER key.

azcopy login --identity --identity-client-id "<client-id>"

<client-id> プレースホルダーは、ユーザー割り当てのマネージド ID のクライアント ID に置き換えます。Replace the <client-id> placeholder with the client ID of the user-assigned managed identity.

azcopy login --identity --identity-object-id "<object-id>"

<object-id> プレースホルダーは、ユーザー割り当てのマネージド ID のオブジェクト ID に置き換えます。Replace the <object-id> placeholder with the object ID of the user-assigned managed identity.

azcopy login --identity --identity-resource-id "<resource-id>"

<resource-id> プレースホルダーは、ユーザー割り当てのマネージド ID のリソース ID に置き換えます。Replace the <resource-id> placeholder with the resource ID of the user-assigned managed identity.

オプション 2:SAS トークンを使用するOption 2: Use a SAS token

AzCopy コマンドで使用する各コピー元または各コピー先の URL に SAS トークンを追加できます。You can append a SAS token to each source or destination URL that use in your AzCopy commands.

この例のコマンドでは、ローカル ディレクトリから BLOB コンテナーにデータが繰り返しコピーされます。This example command recursively copies data from a local directory to a blob container. 架空の SAS トークンがコンテナー URL の末尾に追加されます。A fictitious SAS token is appended to the end of the of the container 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) の使用」を参照してください。To learn more about SAS tokens and how to obtain one, see Using shared access signatures (SAS).

ファイルの転送Transfer files

ID を認証し、SAS トークンを取得したら、ファイルの転送を開始できます。After you've authenticated your identity or obtained a SAS token, you can begin transferring files.

サンプル コマンドは次の記事のいずれかをご覧ください。To find example commands, see any of these articles.

スクリプト内で AzCopy を使用するUse AzCopy in a script

時間と共に、AzCopy のダウンロード リンクは AzCopy の新しいバージョンを指します。Over time, the AzCopy download link will point to new versions of AzCopy. 実際のスクリプトで AzCopy をダウンロードする場合、実際のスクリプトで使用する機能が新しいバージョンの AzCopy で変更されていると、スクリプトの動作が停止する可能性があります。If your script downloads AzCopy, the script might stop working if a newer version of AzCopy modifies features that your script depends upon.

こうした問題を回避するには、AzCopy の現在のバージョンの静的 (変更されない) リンクを取得します。To avoid these issues, obtain a static (un-changing) link to the current version of AzCopy. そうすることで、実際のスクリプトを実行するたびに、まったく同じバージョンの AzCopy がダウンロードされます。That way, your script downloads the same exact version of AzCopy each time that it runs.

そのリンクを取得するには、このコマンドを実行します。To obtain the link, run this command:

オペレーティング システムOperating system commandCommand
LinuxLinux curl -v https://aka.ms/downloadazcopy-v10-linux
WindowsWindows (curl https://aka.ms/downloadazcopy-v10-windows -MaximumRedirection 0 -ErrorAction silentlycontinue).RawContent

注意

Linux の場合、tar コマンドの --strip-components=1 では、バージョン名を含む最上位フォルダーが削除され、代わりに現在のフォルダーに直接バイナリが抽出されます。For Linux, --strip-components=1 on the tar command removes the top-level folder that contains the version name, and instead extracts the binary directly into the current folder. これにより、wget URL を更新するだけで、新しいバージョンの azcopy でスクリプトを更新できます。This allows the script to be updated with a new version of azcopy by only updating the wget URL.

この URL はこのコマンドの出力に表示されます。The URL appears in the output of this command. その後、実際のスクリプトでその URL を使用して AzCopy をダウンロードできます。Your script can then download AzCopy by using that URL.

オペレーティング システムOperating system commandCommand
LinuxLinux wget -O azcopyv10.tar https://azcopyvnext.azureedge.net/release20190301/azcopy_linux_amd64_10.0.8.tar.gz tar -xf azcopyv10.tar --strip-components=1 ./azcopy
WindowsWindows Invoke-WebRequest https://azcopyvnext.azureedge.net/release20190517/azcopy_windows_amd64_10.1.2.zip -OutFile azcopyv10.zip <<Unzip here>>

SAS トークンの特殊文字をエスケープするEscape special characters in SAS tokens

拡張子が .cmd のバッチ ファイルでは、SAS トークンに出現する % 文字をエスケープする必要があります。In batch files that have the .cmd extension, you'll have to escape the % characters that appear in SAS tokens. これを行うには、SAS トークン文字列の既存の % 文字の横に % の文字を追加します。You can do that by adding an addition % character next to existing % characters in the SAS token string.

Storage Explorer で AzCopy を使用するUse AzCopy in Storage Explorer

AzCopy のパフォーマンス上の利点を活用するとき、ファイルの操作に、コマンド ラインではなく Storage Explorer を使用する場合は、ストレージ エクスプローラーで AzCopy を有効にします。If you want to leverage the performance advantages of AzCopy, but you prefer to use Storage Explorer rather than the command line to interact with your files, then enable AzCopy in Storage Explorer.

Storage Explorer で、 [プレビュー] -> の [Use AzCopy for Improved Blob Upload and Download](向上した Blob アップロードおよびダウンロードに AzCopy を使用する) に移動します。In Storage Explorer, choose Preview->Use AzCopy for Improved Blob Upload and Download.

Azure Storage Explorer で転送エンジンとして AzCopy を有効にする

注意

ストレージ アカウントで階層型名前空間を有効にしてある場合、この設定を有効にする必要はありません。You don't have to enable this setting if you've enabled a hierarchical namespace on your storage account. ストレージ エクスプローラーでは、階層型名前空間が与えられているストレージ アカウントで AzCopy が自動的に使用されるためです。That's because Storage Explorer automatically uses AzCopy on storage accounts that have a hierarchical namespace.

Storage Explorer では、ご自分のアカウント キーを使用して、操作を実行します。そのため、Storage Explorer にサインインした後は、追加の承認資格情報を提供する必要はありません。Storage Explorer uses your account key to perform operations, so after you sign into Storage Explorer, you won't need to provide additional authorization credentials.

以前のバージョンの AzCopy の使用Use the previous version of AzCopy

前のバージョンの AzCopy (AzCopy v8.1) を使用する必要がある場合は、次のいずれかのリンクを参照してください。If you need to use the previous version of AzCopy (AzCopy v8.1), see either of the following links:

AzCopy の構成、最適化、トラブルシューティングConfigure, optimize, and troubleshoot AzCopy

AzCopy の構成、最適化、トラブルシューティング」を参照してください。See Configure, optimize, and troubleshoot AzCopy

次の手順Next steps

ご質問、問題、一般的なフィードバックは、GitHub ページからお送りください。If you have questions, issues, or general feedback, submit them on GitHub page.