azcopy - BLOB へファイルをやったり取ったり
GUI と CLI
Windows のローカルファイルシステムと Windows Azure BLOB ストレージ間でのファイルやり取り、どうしてますか? CloudBerry Explorer や CloudXplorer 等、いろいろ便利なツールがありますが、意外と無かったのが「コマンドラインで使える」ツールではないでしょうか。
実は、我らが 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" してください。
次、EULA の文言を良く見てください!そう。このコマンドは HPC 野郎s からの贈り物です。
デフォルト設定では、 "C:\Program Files\Microsoft AzCopy" へ AzCopy.exe がインストールされます。
※ 注目ポイントをしつこく赤で囲んでおきました。
使ってみる
使い方はとても簡単です。コマンドの書式はこんな感じ:
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__