azcopy - BLOB へファイルをやったり取ったり

GUI と CLI

Windows のローカルファイルシステムと Windows Azure  BLOB ストレージ間でのファイルやり取り、どうしてますか? CloudBerry ExplorerCloudXplorer 等、いろいろ便利なツールがありますが、意外と無かったのが「コマンドラインで使える」ツールではないでしょうか。

実は、我らが HPC Azure コミュニティでは、  "hpcpack" というコマンドが良く使われております。これは HPC Pack に含まれるツールで、 BLOB とのファイルやり取りをスクリプト化する際など非常に便利です。

というわけで本日は hpcpack コマンドのご紹介を、、、しようかと思ったのですがやめました。HPC Pack をインストールせずとも使える、手軽で汎用的なコピーコマンド、 "azcopy" というのが登場したからです。

githubにあります

今回ご紹介する azcopy ですが、 最新の Windows Azure SDK 1.8 に入っていません。github からダウンロードしてください。
これ → AzCopy.zip

 

とりあえずインストール

AzCopy.zip を Windows マシンへダウンロードして、どこか適当なフォルダで展開してください。中に AzCopy.Msi というのが入っていますから、これを実行します。

最初の画面は何も考えずに "Next" してください。

image

 

次、EULA の文言を良く見てください!そう。このコマンドは HPC 野郎s からの贈り物です。

image

 

デフォルト設定では、 "C:\Program Files\Microsoft AzCopy"  へ AzCopy.exe がインストールされます。

※ 注目ポイントをしつこく赤で囲んでおきました。

image

使ってみる

使い方はとても簡単です。コマンドの書式はこんな感じ:

azcopy {コピー元フォルダ(コンテナ)} {コピー先フォルダ(コンテナ)} {コピー対象ファイル名(のパターン)} [/sourceKey:コピー元BLOBのキー] [/destKey:コピー先BLOBのキー]

実際にやってみましょう。私の PC 上にある c:\work\kstest.vhd というファイルを、 https://ksasaki.blob.core.windows.net/vhds というコンテナにコピーする場合、コマンドは次のようになります。(ストレージのキーは仮に "longlongstoragekey" とします。)

 

azcopy c:\work https://ksasaki.blob.core.windows.net/vhds kstest.vhd /destKey:longlongstoragekey

若干気を付ける必要があるのは、コピー元を指定する第1引数はあくまでフォルダ(あるいはコンテナ)名を指定する必要があるということです。ファイル名を指定すると、

Error parsing source location "c:\work\kstest.vhd": ディレクトリ名が無効です。

のように怒られます。ま、これはあれです。 robocopy と一緒です。

 

また、先の例では「地上 → クラウド」方向のコピーでしたが、逆に「クラウド → 地上」も可能です。この場合は、"/sourceKey:" オプションでコピー元 BLOB のキーを指定してください。

一つだけ残念なのは、「コピー元とコピー先の双方に BLOB を指定することはできない」、というところです。 Windows Azure SDK 1.7 で追加された cross account  copy に対応した BLOB to BLOB コピーができれば最高だったのですが。

ともあれ、現状でも十分便利なのでぜひお試しください。

 

__END__