AzCopy–Windows Azure Blob用のファイルアップロード・ダウンロードツールがリリース

MSDNブログ「AzCopy – Uploading/Downloading files for Windows Azure Blobs」を抜粋意訳した投稿です。

Windows Azure Blobストレージとローカルファイルシステム間のファイルのダウンロードやアップロードを簡単にできるようにしたいとの要望は、Windows Azure Storageチームがよく受ける要望の一つです。

Windows Azure Storageチームは、コマンドラインツールであるAzCopy(ベータ版)をリリースしました。このツールは、Windows Azureストレージアカウントの内外にデータを転送するタスクを観覧にできるようにするために設計されました。
このツールはスタンドアロンツールとしても、既存のアプリケーションに統合することもできます。

このツールは、Githubからダウンロードできます。

使ったことがあるかもしれませんがrobocopyのようなMicrosoftの他のファイルコピーツールにとても似ています。構文は次のようになっています。

AzCopy <Source> <Destination> [filepattern [filepattern…]] [Options]

特徴

効率的で柔軟性のあるツール

AzCopyは、コピーするデータを選択しやすくなっています。
再起モードを使用すると、ネストさえたディレクトリ配下にあるファイルをコピーすることができます。

ファイルパターンを指定できます。
WindowsファイルシステムやWindows Azure Blobストレージのプレフィックスからワイルドカードで選択できます。さらに、アーカイブ属性を持っているファイルをコピーするというオプションを設定することもできます。

とても多くのファイルをコピーするとき、ネットワークやほかの問題でコピーに失敗するかもしれません。再開オプションは、まだコピーしていない、コピーに失敗したところからコピー処理を再開できます。

Windows Azure ストレージデータ型のサポート

AzCopyは、ストレージアカウントで、ブロックBlobかページBlobかをdestination dataオプションで指定することができます。デフォルトでは、ブロックBlobに設定されています。
ページBlobオプションを賜与王すると、Blobは512バイトごとに0詰めされます。

ネーミングルール

URIフォーマット(httpやhttps)はBlobストレージパスの指定に、NTFS Windows ファイルフォルダーパスはWindows ファイルシステムで使用されています。
Blob名の中には、そのままWindows ファイルシステムに転送できないものもあります。AzCopyはWindowsファイルシステム名に変換するときに、独自のルールを使用します。

Windowsファイル名としてBlob名が使用できない場合は、次のルールを使用します。
「.」は「dot」
「..」は「dotdot」
「/」は「slash」
他には、重複を回避するためにファイル名やBlob名に、文字列「(n)」を追加します。

ロギング

AzuCopyは冗長モードで、ファイルとディレクトリの一覧や、コピーに失敗したファイル一覧を表示します。進捗状況も表示します。

サンプル

例1 再起モードでローカルファイルをBlobストレージコンテナーにコピーする

AzCopy C:\blob-data https://myaccount.blob.core.windows.net/mycontainer/ /destkey:key /S

c:\blob-dataとサブディレクトリにある全てのファイルをストレージアカウント「myaccount」のコンテナー名「mycontainer」のブロックBlobにコピーします。
blob-dataフォルダーには「subfolder1」サブディレクトリがあります。

C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

は、「mycontainer」BlobコンテーにBlobを格納します。

car1.docx
car2.docx
car3.docx
train1.docx
subfolder1/car_sub1.docx
subfolder1/car_sub2.docx

例2 Blobからローカルに冗長と式モードでコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data /sourceKey:key /S /V

冗長モードでは次のような表示があります。

Finished Transfer: car1.docx
Finished Transfer: car2.docx
Finished Transfer: car3.docx
Finished Transfer: train1.docx
Finished Transfer: subfolder1/car_sub1.docx
Finished Transfer: subfolder1/car_sub2.docx
Transfer summary:
—————–
Total files transferred: 6
Transfer successfully: 6
Transfer failed: 0
After the copy operation, c:\blob-data folder will contain the files listed below:
C:\blob-data\car1.docx
C:\blob-data\car2.docx
C:\blob-data\car3.docx
C:\blob-data\train1.docx
C:\blob-data\subfolder1\car_sub1.docx
C:\blob-data\subfolder1\car_sub2.docx

例3 再開モードでローカルからBlobにコピーする

AzCopy c:\blob-data https://myaccount.blob.core.windows.net/mycontainer /destkey:key /Z:restart.log /S

再開をするために、進捗状況を記録するログファイル「azcop.log」がカレントディレクトリに作成されます。

例4 ファイルパターンを使用して、ストレージBlobコンテナーのファイルを選択しローカルにコピーする

AzCopy https://myaccount.blob.core.windows.net/mycontainer c:\blob-data car /sourceKey:key /Z /S

パフォーマンス

Windows Azureデータセンター内で(同じDC内のコンピュートインスタンスとストレージアカウント)、ファイルのアップロード、ダウンロードに50MB/sぐらいの速度になります(エクストラLargeインスタンスの場合)。