AzCopy on Linux を使用したデータの転送Transfer data with AzCopy on Linux

AzCopy は、最適なパフォーマンスのためのシンプルなコマンドを使用して Microsoft Azure Blob Storage および File Storage との間でデータをコピーするために設計されたコマンドライン ユーティリティです。AzCopy is a command-line utility designed for copying data to/from Microsoft Azure Blob and File storage, using simple commands designed for optimal performance. ファイル システムとストレージ アカウント間、またはストレージ アカウント間でデータをコピーできます。You can copy data between a file system and a storage account, or between storage accounts.

ダウンロードできる AzCopy には、2 つのバージョンがあります。There are two versions of AzCopy that you can download. AzCopy on Linux の対象プラットフォームは Linux で、POSIX スタイルのコマンドライン オプションが用意されています。AzCopy on Linux targets Linux platforms offering POSIX style command-line options. AzCopy on Windows には、Windows スタイルのコマンドライン オプションが用意されています。AzCopy on Windows offers Windows style command-line options. この記事では AzCopy on Linux について説明します。This article covers AzCopy on Linux.

注意

AzCopy 7.2 バージョン以降、.NET Core の依存関係は AzCopy パッケージにパッケージ化されています。Starting in AzCopy 7.2 version, the .NET Core dependencies are packaged with the AzCopy package. 7.2 バージョン以降を使用する場合、前提条件として .NET Core をインストールする必要はなくなりました。If you use 7.2 version or later, you no longer need to install .NET Core as a pre-requisite.

AzCopy のダウンロードとインストールDownload and install AzCopy

Linux へのインストールInstallation on Linux

注意

ディストリビューションに応じて、.NET Core の前提条件に関する記事に示されている .NET Core 2.1 の依存関係のインストールが必要な場合があります。You might need to install .NET Core 2.1 dependencies highlighted in this .NET Core Pre-requisites article depending on your distribution.

RHEL 7 ディストリビューションでは、ICU と libunwind の依存関係をインストールします: yum install -y libunwind icuFor RHEL 7 distributions, install ICU and libunwind dependencies: yum install -y libunwind icu

AzCopy on Linux (v7.2 以降) のインストールは簡単で、tar パッケージを抽出し、インストール スクリプトを実行するだけです。Installing AzCopy on Linux (v7.2 or later) is as easy as extracting a tar package and running the install script.

RHEL 6 ベースのディストリビューション: ダウンロード リンクRHEL 6 based distributions: download link

wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinuxrhel6
tar -xf azcopy.tar.gz
sudo ./install.sh

その他すべての Linux ディストリビューション: ダウンロード リンクAll other Linux distributions: download link

wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64
tar -xf azcopy.tar.gz
sudo ./install.sh

抽出したファイルは、AzCopy on Linux のインストール後、削除してかまいません。You can remove the extracted files once AzCopy on Linux is installed. スーパーユーザーの特権がない場合は、抽出したフォルダー内のシェル スクリプト azcopy を使用して azcopy を実行することもできます。Alternatively, if you do not have superuser privileges you can also run azcopy using the shell script azcopy in the extracted folder.

Ubuntu のバージョンごとのインストール方法Alternative Installation on Ubuntu

Ubuntu 14.04Ubuntu 14.04

Microsoft Linux 製品リポジトリの apt ソースを追加し、AzCopy をインストールします。Add apt source for Microsoft Linux product repository and install AzCopy:

sudo echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod/ trusty main" > azure.list
sudo cp ./azure.list /etc/apt/sources.list.d/
apt-key adv --keyserver packages.microsoft.com --recv-keys B02C46DF417A0893
sudo apt-get update
sudo apt-get install azcopy

Ubuntu 16.04Ubuntu 16.04

Microsoft Linux 製品リポジトリの apt ソースを追加し、AzCopy をインストールします。Add apt source for Microsoft Linux product repository and install AzCopy:

echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod/ xenial main" > azure.list
sudo cp ./azure.list /etc/apt/sources.list.d/
apt-key adv --keyserver packages.microsoft.com --recv-keys B02C46DF417A0893
sudo apt-get update
sudo apt-get install azcopy

AzCopy コマンドの基本Writing your first AzCopy command

AzCopy コマンドの基本構文は次のとおりです。The basic syntax for AzCopy commands is:

azcopy --source <source> --destination <destination> [Options]

以下の例では、Microsoft Azure の BLOB および File との間でデータをコピーするさまざまなシナリオを紹介しています。The following examples demonstrate various scenarios for copying data to and from Microsoft Azure Blobs and Files. 各サンプルで使用されているパラメーターの詳細な説明については、azcopy --help メニューを参照してください。Refer to the azcopy --help menu for a detailed explanation of the parameters used in each sample.

BLOB: ダウンロードBlob: Download

1 つの BLOB をダウンロードするDownload single blob

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key> 

フォルダー /mnt/myfiles が存在しない場合、AzCopy によってフォルダーが作成され、この新しいフォルダーに abc.txt がダウンロードされます。If the folder /mnt/myfiles does not exist, AzCopy creates it and downloads abc.txt into the new folder.

セカンダリ リージョンから 1 つの BLOB をダウンロードするDownload single blob from secondary region

azcopy \
    --source https://myaccount-secondary.blob.core.windows.net/mynewcontainer/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key>

地理冗長ストレージに対応する読み取りアクセス権を持っている必要があります。Note that you must have read-access geo-redundant storage enabled.

すべての BLOB をダウンロードするDownload all blobs

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --recursive

指定されたコンテナーに以下の BLOB があるとします。Assume the following blobs reside in the specified container:

abc.txt
abc1.txt
abc2.txt
vd1/a.txt
vd1/abcd.txt

ダウンロード操作後に、ディレクトリ /mnt/myfiles には以下のファイルがあります。After the download operation, the directory /mnt/myfiles includes the following files:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/vd1/a.txt
/mnt/myfiles/vd1/abcd.txt

オプション --recursive を指定しない場合、BLOB はダウンロードされません。If you do not specify option --recursive, no blob will be downloaded.

指定したプレフィックスの BLOB をダウンロードするDownload blobs with specified prefix

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --include "a" \
    --recursive

指定されたコンテナーに以下の BLOB があるとします。Assume the following blobs reside in the specified container. プレフィックス a で始まるすべての BLOB がダウンロードされます。All blobs beginning with the prefix a are downloaded.

abc.txt
abc1.txt
abc2.txt
xyz.txt
vd1\a.txt
vd1\abcd.txt

ダウンロード操作後に、フォルダー /mnt/myfiles には以下のファイルがあります。After the download operation, the folder /mnt/myfiles includes the following files:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt

プレフィックスは仮想ディレクトリに適用され、BLOB 名の最初の部分に付けられます。The prefix applies to the virtual directory, which forms the first part of the blob name. 前述の例では、仮想ディレクトリは指定されたプレフィックスと一致しないので、BLOB は一切ダウンロードされません。In the example shown above, the virtual directory does not match the specified prefix, so no blob is downloaded. さらに、オプション --recursive が指定されていない場合、AzCopy では BLOB はダウンロードされません。In addition, if the option --recursive is not specified, AzCopy does not download any blobs.

エクスポートしたファイルの最終変更時刻をソース BLOB と同時刻に設定するSet the last-modified time of exported files to be same as the source blobs

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination "/mnt/myfiles" \
    --source-key <key> \
    --preserve-last-modified-time

最終変更時刻に基づいてダウンロード操作の対象から BLOB を除外することもできます。You can also exclude blobs from the download operation based on their last-modified time. たとえば、対象ファイルの最終変更時刻以降の BLOB を除外する場合、 --exclude-newer オプションを追加します。For example, if you want to exclude blobs whose last modified time is the same or newer than the destination file, add the --exclude-newer option:

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --preserve-last-modified-time \
    --exclude-newer

または、対象ファイルの最終変更時刻以前の BLOB を除外する場合、 --exclude-older オプションを追加します。Or if you want to exclude blobs whose last modified time is the same or older than the destination file, add the --exclude-older option:

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --preserve-last-modified-time \
    --exclude-older

BLOB: アップロードBlob: Upload

1 つのファイルをアップロードするUpload single file

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer/abc.txt \
    --dest-key <key>

存在しない宛先コンテナーを指定すると、AzCopy によってコンテナーが作成され、そのコンテナーにファイルがアップロードされます。If the specified destination container does not exist, AzCopy creates it and uploads the file into it.

1 つのファイルを仮想ディレクトリにアップロードするUpload single file to virtual directory

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer/vd/abc.txt \
    --dest-key <key>

存在しない仮想ディレクトリを指定すると、アップロードされるファイルの BLOB 名に仮想ディレクトリが含められます ( vd/abc.txt 例: 上記の例の)。If the specified virtual directory does not exist, AzCopy uploads the file to include the virtual directory in the blob name (e.g., vd/abc.txt in the example above).

stdin からリダイレクトするRedirect from stdin

gzip myarchive.tar -c | azcopy \
    --destination https://myaccount.blob.core.windows.net/mycontainer/mydir/myarchive.tar.gz \
    --dest-key <key>

すべてのファイルをアップロードするUpload all files

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --recursive

オプション --recursive を指定すると、指定したディレクトリの内容が再帰的にアップロードされます。つまり、すべてのサブフォルダーと、それらのサブフォルダーに含まれるファイルも BLOB ストレージにアップロードされます。Specifying option --recursive uploads the contents of the specified directory to Blob storage recursively, meaning that all subfolders and their files are uploaded as well. たとえば、フォルダー /mnt/myfiles に以下のファイルがあるとします。For instance, assume the following files reside in folder /mnt/myfiles:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/subfolder/a.txt
/mnt/myfiles/subfolder/abcd.txt

アップロード操作後に、コンテナーには以下のファイルがあります。After the upload operation, the container includes the following files:

abc.txt
abc1.txt
abc2.txt
subfolder/a.txt
subfolder/abcd.txt

オプション --recursive を指定しなかった場合、次の 3 つのファイルだけがアップロードされます。When the option --recursive is not specified, only the following three files are uploaded:

abc.txt
abc1.txt
abc2.txt

指定したパターンに一致するファイルをアップロードするUpload files matching specified pattern

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --include "a*" \
    --recursive

フォルダー /mnt/myfilesに以下のファイルがあるとします。Assume the following files reside in folder /mnt/myfiles:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/xyz.txt
/mnt/myfiles/subfolder/a.txt
/mnt/myfiles/subfolder/abcd.txt

アップロード操作後に、コンテナーには以下のファイルがあります。After the upload operation, the container includes the following files:

abc.txt
abc1.txt
abc2.txt
subfolder/a.txt
subfolder/abcd.txt

オプション --recursive を指定しなかった場合、サブディレクトリ内のファイルはスキップされます。When the option --recursive is not specified, AzCopy skips files that are in sub-directories:

abc.txt
abc1.txt
abc2.txt

コピー先の BLOB の MIME コンテンツの種類を指定するSpecify the MIME content type of a destination blob

既定では、AzCopy はコピー先の BLOB のコンテンツの種類を application/octet-streamに設定します。By default, AzCopy sets the content type of a destination blob to application/octet-stream. ただしコンテンツの種類は、オプション --set-content-type [content-type] を使用して明示的に指定できます。However, you can explicitly specify the content type via the option --set-content-type [content-type]. この構文は、アップロード操作におけるすべての BLOB のコンテンツの種類を設定します。This syntax sets the content type for all blobs in an upload operation.

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/myContainer/ \
    --dest-key <key> \
    --include "ab" \
    --set-content-type "video/mp4"

オプション --set-content-type で値を指定しない場合、AzCopy は各 BLOB またはファイルのコンテンツの種類をそのファイルの拡張子に応じて設定します。If the option --set-content-type is specified without a value, then AzCopy sets each blob or file's content type according to its file extension.

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/myContainer/ \
    --dest-key <key> \
    --include "ab" \
    --set-content-type

MIME コンテンツの種類のマッピングのカスタマイズCustomizing the MIME content type mapping

AzCopy は、ファイル拡張子とコンテンツの種類のマッピングが含まれる構成ファイルを使用します。AzCopy uses a configuration file that contains a mapping of file extension to content type. このマッピングをカスタマイズし、必要に応じて新しいペアを追加できます。You can customize this mapping and add new pairs as needed. マッピングは /usr/lib/azcopy/AzCopyConfig.json に配置されます。The mapping is located at /usr/lib/azcopy/AzCopyConfig.json

BLOB: コピーBlob: Copy

ストレージ アカウント内の 1 つの BLOB をコピーするCopy single blob within Storage account

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-key <key> \
    --dest-key <key>

--sync-copy オプションを指定せずに 1 つの BLOB をコピーすると、サーバー側でコピー操作が実行されます。When you copy a blob without --sync-copy option, a server-side copy operation is performed.

複数のストレージ アカウントに 1 つの BLOB をコピーするCopy single blob across Storage accounts

azcopy \
    --source https://sourceaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://destaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-key <key1> \
    --dest-key <key2>

--sync-copy オプションを指定せずに 1 つの BLOB をコピーすると、サーバー側でコピー操作が実行されます。When you copy a blob without --sync-copy option, a server-side copy operation is performed.

1 つの BLOB をセカンダリ リージョンからプライマリ リージョンにコピーするCopy single blob from secondary region to primary region

azcopy \
    --source https://myaccount1-secondary.blob.core.windows.net/mynewcontainer1/abc.txt \
    --destination https://myaccount2.blob.core.windows.net/mynewcontainer2/abc.txt \
    --source-key <key1> \
    --dest-key <key2>

地理冗長ストレージに対応する読み取りアクセス権を持っている必要があります。Note that you must have read-access geo-redundant storage enabled.

複数のストレージ アカウントに 1 つの BLOB とそのスナップショットをコピーするCopy single blob and its snapshots across Storage accounts

azcopy \
    --source https://sourceaccount.blob.core.windows.net/mycontainer1/ \
    --destination https://destaccount.blob.core.windows.net/mycontainer2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --include "abc.txt" \
    --include-snapshot

コピー操作後、ターゲット コンテナーには BLOB とそのスナップショットが含まれます。After the copy operation, the target container includes the blob and its snapshots. このコンテナーには、次の BLOB とそのスナップショットが含まれます。The container includes the following blob and its snapshots:

abc.txt
abc (2013-02-25 080757).txt
abc (2014-02-21 150331).txt

複数のストレージ アカウントに複数の BLOB を同期的にコピーするSynchronously copy blobs across Storage accounts

既定では、AzCopy は 2 つのストレージ エンドポイント間で非同期でデータをコピーします。AzCopy by default copies data between two storage endpoints asynchronously. そのため、コピー操作は、BLOB のコピー速度に関する SLA のない予備の帯域幅容量を使用してバックグラウンドで実行されます。Therefore, the copy operation runs in the background using spare bandwidth capacity that has no SLA in terms of how fast a blob is copied.

--sync-copy オプションは、コピー操作が一定の速度になるようにします。The --sync-copy option ensures that the copy operation gets consistent speed. AzCopy は、指定されたソースからローカル メモリにコピーして BLOB をダウンロードし、これを BLOB ストレージのコピー先にアップロードすることで同期コピーを実行します。AzCopy performs the synchronous copy by downloading the blobs to copy from the specified source to local memory, and then uploading them to the Blob storage destination.

azcopy \
    --source https://myaccount1.blob.core.windows.net/myContainer/ \
    --destination https://myaccount2.blob.core.windows.net/myContainer/ \
    --source-key <key1> \
    --dest-key <key2> \
    --include "ab" \
    --sync-copy

--sync-copy では、非同期コピーと比較すると、追加の送信コストが発生する可能性があります。--sync-copy might generate additional egress cost compared to asynchronous copy. この送信コストが発生しないように、このオプションは、ソース ストレージ アカウントと同じリージョンにある Azure VM で使用することをお勧めします。The recommended approach is to use this option in an Azure VM, that is in the same region as your source storage account to avoid egress cost.

ファイル: ダウンロードFile: Download

1 つのファイルをダウンロードするDownload single file

azcopy \
    --source https://myaccount.file.core.windows.net/myfileshare/myfolder1/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key>

指定されたソースが Azure ファイル共有の場合は、厳密なファイル名 (: abc.txt) を指定して単一ファイルをダウンロードするか、オプション --recursive を指定して共有内の全ファイルを再帰的にダウンロードする必要があります。If the specified source is an Azure file share, then you must either specify the exact file name, (e.g. abc.txt) to download a single file, or specify option --recursive to download all files in the share recursively. ファイル パターンとオプション --recursive の両方を同時に指定しようとすると、エラーになります。Attempting to specify both a file pattern and option --recursive together results in an error.

すべてのファイルをダウンロードするDownload all files

azcopy \
    --source https://myaccount.file.core.windows.net/myfileshare/ \
    --destination /mnt/myfiles \
    --source-key <key> \
    --recursive

空のフォルダーはダウンロードされないことに注意してください。Note that any empty folders are not downloaded.

ファイル: アップロードFile: Upload

1 つのファイルをアップロードするUpload single file

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.file.core.windows.net/myfileshare/abc.txt \
    --dest-key <key>

すべてのファイルをアップロードするUpload all files

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.file.core.windows.net/myfileshare/ \
    --dest-key <key> \
    --recursive

空のフォルダーはアップロードされないことに注意してください。Note that any empty folders are not uploaded.

指定したパターンに一致するファイルをアップロードするUpload files matching specified pattern

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.file.core.windows.net/myfileshare/ \
    --dest-key <key> \
    --include "ab*" \
    --recursive

ファイル: コピーFile: Copy

ファイル共有間でコピーするCopy across file shares

azcopy \
    --source https://myaccount1.file.core.windows.net/myfileshare1/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

ファイル共有をまたがってファイルをコピーすると、サーバー側でコピー操作が実行されます。When you copy a file across file shares, a server-side copy operation is performed.

ファイル共有から BLOB にコピーするCopy from file share to blob

azcopy \ 
    --source https://myaccount1.file.core.windows.net/myfileshare/ \
    --destination https://myaccount2.blob.core.windows.net/mycontainer/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

ファイル共有から BLOB にファイルをコピーすると、サーバー側でコピー操作が実行されます。When you copy a file from file share to blob, a server-side copy operation is performed.

BLOB からファイル共有にコピーするCopy from blob to file share

azcopy \
    --source https://myaccount1.blob.core.windows.net/mycontainer/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

BLOB からファイル共有にファイルをコピーすると、サーバー側でコピー操作が実行されます。When you copy a file from blob to file share, a server-side copy operation is performed.

ファイルを同期的にコピーするSynchronously copy files

オプション --sync-copy を指定すると、File Storage から File Storage に、File Storage から Blob Storage に、Blob Storage から File Storage にデータを同期的にコピーすることができます。You can specify the --sync-copy option to copy data from File Storage to File Storage, from File Storage to Blob Storage and from Blob Storage to File Storage synchronously. この操作は、AzCopy がソース データをローカル メモリにダウンロードし、それを宛先に再度アップロードすることによって実行されます。AzCopy runs this operation by downloading the source data to local memory, and then uploading it to destination. その場合は、標準的な送信コストが適用されます。In this case, standard egress cost applies.

azcopy \
    --source https://myaccount1.file.core.windows.net/myfileshare1/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive \
    --sync-copy

File Storage から Blob Storage にコピーするときの既定の BLOB タイプはブロック BLOB ですが、ユーザーはオプション --blob-type page を指定して宛先 BLOB タイプを変更できます。When copying from File Storage to Blob Storage, the default blob type is block blob, user can specify option --blob-type page to change the destination blob type. 使用可能なタイプは page | block | append です。Available types are page | block | append.

ただし --sync-copy では、非同期コピーと比較すると、追加の送信コストが発生する可能性があります。Note that --sync-copy might generate additional egress cost comparing to asynchronous copy. この送信コストが発生しないように、このオプションは、ソース ストレージ アカウントと同じリージョンにある Azure VM で使用することをお勧めします。The recommended approach is to use this option in an Azure VM, that is in the same region as your source storage account to avoid egress cost.

その他の AzCopy 機能Other AzCopy features

宛先に存在しないデータのみをコピーするOnly copy data that doesn't exist in the destination

--exclude-older パラメーターを指定すると古いソース リソースを、--exclude-newer パラメーターを指定すると新しいソース リソースをコピー対象から除外できます。The --exclude-older and --exclude-newer parameters allow you to exclude older or newer source resources from being copied, respectively. 宛先に存在しないソース リソースのみをコピーする場合は、AzCopy コマンドに両方のパラメーターを指定します。If you only want to copy source resources that don't exist in the destination, you can specify both parameters in the AzCopy command:

--source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --exclude-older --exclude-newer

--source /mnt/myfiles --destination http://myaccount.file.core.windows.net/myfileshare --dest-key <destkey> --recursive --exclude-older --exclude-newer

--source http://myaccount.blob.core.windows.net/mycontainer --destination http://myaccount.blob.core.windows.net/mycontainer1 --source-key <sourcekey> --dest-key <destkey> --recursive --exclude-older --exclude-newer

コマンド ライン パラメーターを指定するための構成ファイルの使用Use a configuration file to specify command-line parameters

azcopy --config-file "azcopy-config.ini"

構成ファイルには、任意の AzCopy コマンド ライン パラメーターを含めることができます。You can include any AzCopy command-line parameters in a configuration file. AzCopy は、ファイルの内容に直接置換することで、ファイルのパラメーターをコマンド ラインで指定されているかのように処理します。AzCopy processes the parameters in the file as if they had been specified on the command line, performing a direct substitution with the contents of the file.

copyoperation という名前の構成ファイルに、以下の行が含まれているとします。Assume a configuration file named copyoperation, that contains the following lines. 各 AzCopy パラメーターは 1 行に指定できます。Each AzCopy parameter can be specified on a single line.

--source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --quiet

また、別の行に指定することもできます。or on separate lines:

--source http://myaccount.blob.core.windows.net/mycontainer
--destination /mnt/myfiles
--source-key<sourcekey>
--recursive
--quiet

--source-key パラメーターの場合、次の例のようにパラメーターが 2 行に分かれていると、AzCopy は失敗します。AzCopy fails if you split the parameter across two lines, as shown here for the --source-key parameter:

http://myaccount.blob.core.windows.net/mycontainer
/mnt/myfiles
--sourcekey
<sourcekey>
--recursive
--quiet

共有アクセス署名 (SAS) の指定Specify a shared access signature (SAS)

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-sas <SAS1> \
    --dest-sas <SAS2>

コンテナー URI に対して SAS を指定することもできます。You can also specify a SAS on the container URI:

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/?SourceSASToken \
    --destination /mnt/myfiles \
    --recursive

ジャーナル ファイル フォルダーJournal file folder

AzCopy にコマンドが発行されるたびに、AzCopy は既定のフォルダーまたはこのオプションで指定されたフォルダーにジャーナル ファイルが存在するかどうかを確認します。Each time you issue a command to AzCopy, it checks whether a journal file exists in the default folder, or whether it exists in a folder that you specified via this option. どちらの場所にもジャーナル ファイルがない場合は、AzCopy は新しい操作であると認識し、新しいジャーナル ファイルを作成します。If the journal file does not exist in either place, AzCopy treats the operation as new and generates a new journal file.

既存のジャーナル ファイルがある場合は、AzCopy は入力されたコマンド ラインがジャーナル ファイルのコマンド ラインと一致するかどうかを確認します。If the journal file does exist, AzCopy checks whether the command line that you input matches the command line in the journal file. 2 つのコマンド ラインが一致する場合、AzCopy は未完了の操作を再開します。If the two command lines match, AzCopy resumes the incomplete operation. 一致しない場合は、ジャーナル ファイルを上書きして新しい操作を開始するか、現在の操作を取り消すかをたずねるメッセージが表示されます。If they do not match, AzCopy prompts user to either overwrite the journal file to start a new operation, or to cancel the current operation.

ジャーナル ファイルに既定の場所を使用する場合:If you want to use the default location for the journal file:

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --resume

前に示したように、オプション --resume を省略するか、フォルダー パスなしでオプション --resume を指定すると、AzCopy は既定の場所である ~\Microsoft\Azure\AzCopy にジャーナル ファイルを作成します。If you omit option --resume, or specify option --resume without the folder path, as shown above, AzCopy creates the journal file in the default location, which is ~\Microsoft\Azure\AzCopy. 既存のジャーナル ファイルがある場合、このジャーナル ファイルに基づいて AzCopy が操作を再開します。If the journal file already exists, then AzCopy resumes the operation based on the journal file.

ジャーナル ファイルにカスタムの場所を指定する場合:If you want to specify a custom location for the journal file:

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key key \
    --resume "/mnt/myjournal"

この例では、既存のジャーナル ファイルがない場合に、これを作成します。This example creates the journal file if it does not already exist. 既存のファイルがある場合、AzCopy はこのジャーナル ファイルに基づいて操作を再開します。If it does exist, then AzCopy resumes the operation based on the journal file.

AzCopy の操作を再開するには、同じコマンドをもう一度実行します。If you want to resume an AzCopy operation, repeat the same command. AzCopy on Linux から確認のメッセージが表示されます。AzCopy on Linux then will prompt for confirmation:

Incomplete operation with same command line detected at the journal directory "/home/myaccount/Microsoft/Azure/AzCopy", do you want to resume the operation? Choose Yes to resume, choose No to overwrite the journal to start a new operation. (Yes/No)

詳細ログの出力Output verbose logs

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --verbose

開始する同時操作の数の指定Specify the number of concurrent operations to start

オプション --parallel-level を使用して同時コピー操作の数を指定します。Option --parallel-level specifies the number of concurrent copy operations. 既定では、AzCopy はデータ転送のスループットを向上するために一定数の同時操作を開始します。By default, AzCopy starts a certain number of concurrent operations to increase the data transfer throughput. 同時実行操作の数は、所有するプロセッサ数の 8 倍になります。The number of concurrent operations is equal eight times the number of processors you have. 低帯域幅のネットワークで AzCopy を実行している場合は、--parallel-level に少ない数を指定することで、リソースの競合で生じる失敗を回避できます。If you are running AzCopy across a low-bandwidth network, you can specify a lower number for --parallel-level to avoid failure caused by resource competition.

ヒント

AzCopy の全パラメーターを一覧表示するには、"azcopy --help" メニューを確認してください。To view the complete list of AzCopy parameters, check out 'azcopy --help' menu.

AzCopy 7.1 以前のバージョンのインストール手順Installation Steps for AzCopy 7.1 and earlier versions

AzCopy on Linux (v7.1 以前のみ) には、.NET Core Framework が必要です。AzCopy on Linux (v7.1 and earlier only) requires the .NET Core framework. インストール手順については、.NET Core のインストールに関するページをご覧ください。Installation instructions are available on the .NET Core installation page.

たとえば、Ubuntu 16.10 への .NET Core のインストールから開始します。For example, begin by installing .NET Core on Ubuntu 16.10. 最新のインストール ガイドについては、.NET Core on Linux のインストール ページを参照してください。For the latest installation guide, visit .NET Core on Linux installation page.

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list' 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-sdk-2.0.0

.NET Core をインストールしたら、AzCopy をダウンロードしてインストールします。Once you have installed .NET Core, download and install AzCopy.

wget -O azcopy.tar.gz https://aka.ms/downloadazcopyprlinux
tar -xf azcopy.tar.gz
sudo ./install.sh

抽出したファイルは、AzCopy on Linux のインストール後、削除してかまいません。You can remove the extracted files once AzCopy on Linux is installed. スーパーユーザーの特権がない場合は、抽出したフォルダー内のシェル スクリプト azcopy を使用して azcopy を実行することもできます。Alternatively if you do not have superuser privileges, you can also run azcopy using the shell script azcopy in the extracted folder.

既知の問題とベスト プラクティスKnown issues and best practices

AzCopy のインストール中のエラーError Installing AzCopy

AzCopy のインストールで問題が発生した場合は、抽出した azcopy フォルダーにある bash スクリプトを使って AzCopy を実行してみてください。If you encounter issues with AzCopy installation, you may try to run AzCopy using the bash script in the extracted azcopy folder.

cd azcopy
./azcopy

データのコピー中の同時書き込みの制限Limit concurrent writes while copying data

AzCopy を使用して BLOB またはファイルをコピーする場合は、コピー中に別のアプリケーションがそのデータを変更している可能性があることに注意してください。When you copy blobs or files with AzCopy, keep in mind that another application may be modifying the data while you are copying it. 可能な場合は、コピーしているデータがコピー操作中に変更されないようにしてください。If possible, ensure that the data you are copying is not being modified during the copy operation. たとえば、Azure 仮想マシンに関連付けられている VHD をコピーしている場合は、その VHD に別のアプリケーションが書き込まないようにします。For example, when copying a VHD associated with an Azure virtual machine, make sure that no other applications are currently writing to the VHD. これを行う適切な方法は、コピーされるリソースをリースすることです。A good way to do this is by leasing the resource to be copied. または、最初に VHD のスナップショットを作成してからそのスナップショットをコピーします。Alternately, you can create a snapshot of the VHD first and then copy the snapshot.

コピーしている BLOB またはファイルに対する他のアプリケーションによる書き込みを回避できない場合は、ジョブが終了した時点で、コピー対象のリソースがソース リソースとの間に完全なパリティを保持していない可能性があることを覚えておいてください。If you cannot prevent other applications from writing to blobs or files while they are being copied, then keep in mind that by the time the job finishes, the copied resources may no longer have full parity with the source resources.

複数の AzCopy プロセスの実行Running multiple AzCopy processes

異なるジャーナル フォルダーを使用している場合は、単一のクライアント上で複数の AzCopy プロセスを実行できます。You may run multiple AzCopy processes on a single client providing that you use different journal folders. 複数の AzCopy プロセスに対して単一のジャーナル フォルダーを使用することはサポートされていません。Using a single journal folder for multiple AzCopy processes is not supported.

最初のプロセス:1st process:

azcopy \
    --source /mnt/myfiles1 \
    --destination https://myaccount.blob.core.windows.net/mycontainer/myfiles1 \
    --dest-key <key> \
    --resume "/mnt/myazcopyjournal1"

2 番目のプロセス:2nd process:

azcopy \
    --source /mnt/myfiles2 \
    --destination https://myaccount.blob.core.windows.net/mycontainer/myfiles2 \
    --dest-key <key> \
    --resume "/mnt/myazcopyjournal2"

次の手順Next steps

Azure Storage および AzCopy の詳細については、以下のリソースを参照してください。For more information about Azure Storage and AzCopy, see the following resources:

Azure Storage のドキュメント:Azure Storage documentation:

Azure Storage に関するブログの投稿:Azure Storage blog posts: