ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

ニフティクラウドストレージにファイルをバックアップ!

>>>>>> こちらはゲストによる寄稿記事になります

こんにちは。ニフティクラウドストレージの開発を担当しているK池と言います。今回ご紹介するのは、ニフティクラウドのサーバから、この度リリースしたニフティクラウドストレージにファイルをバックアップする方法です。

ニフティクラウドストレージはREST APIをインターフェースとしているため、アプリケーション開発者は理解しやすいものの、技術者が汎用的に利用するにはハードルが高いと思います。
特にAPI認証に必要な認証ヘッダ(Authorization header)を生成する部分は、アプリケーション開発者も一筋縄ではいかないところだと思います。
そこで今回ご提供する内容は、コマンドライン(シェル)からバックアップするという非常に簡単な方法です。
一読すればあっという間にニフティクラウドストレージにファイルをバックアップすることができますので、是非お試しください!

用意するもの

・Linux サーバ
・Java SE Development Kit 6
・SDK for Java/CLI
・ニフティクラウドストレージのAccessKeyとSecretAccessKey

※AccessKeyとSecretAccessKeyは、ニフティクラウドに申込みが完了されている方であれば、自動的に付与されています。ニフティクラウドのコントロールパネルから「利用状況 API認証」をご覧下さい。また、SDK for Java/CLIにつきましては、同じくコントロールパネルからクラウドストレージエクスプローラをご覧いただき、右上にあるSDK for Java/CLIのリンク先からダウンロードをお願いします。

事前に準備すること

今回利用するサーバはニフティクラウドから払い出したCentOS 5.3のサーバです。
ニフティクラウドサーバの作成方法についてはこちらをご覧ください。
以下はニフティクラウドサーバにログイン後の手順となります。

また、利用するアプリケーションはSDK for Java/CLIに含まれているコマンドラインインターフェース(CLI)ですので、事前にJava SE Development Kit 6以上をインストールしておきます。
※SDK for Java/CLIに含まれているCLIは、Javaのライブラリを読み込んでシェルで動作するように実装しています。

Java SE Development Kit 6のインストール画面
Java_install_2

Java SE Development Kit 6が正しくインストールされているかを確認します。
Java_check_2

次にニフティクラウドストレージのSDK for Java/CLIをダウンロードしておきます。
Sdk_file_check

SDK for Java/CLIはzipで圧縮されていますので展開します。
Sdk_unzip

展開後は以下のようにNiftyCloudStorage-SDK-CLIというディレクトリが作成されます。
Sdk_unzip_check

NiftyCloudStorage-SDK-CLIディレクトリ配下にncs_cli.shというシェルスクリプトとcredentials.propertiesが
存在していることがわかります。
Sdk_below_list

ncs_cli.shがコマンドライン(CLI)、credentials.propertiesが認証キーを設定する定義ファイルになります。

認証キーを設定しよう

ニフティクラウドストレージはAccessKeyとSecretAccessKeyの2つを認証キーとして利用します。
これはAccessKeyがID、SecretAccessKeyがPASSWORDと似た意味合いになりますので、なくさないように注意してください。
セットする定義ファイルはNiftyCloudStorage-SDK-CLI配下にあるcredentials.propertiesになります。
Credentials_properties

手元にある認証キーを以下のようにセットします。
accessKey =***************
secretKey =+++++++++++++++

準備完了!ここからが本番です!まずは疎通確認!

これでバックアップを行う準備が整いました。まずはこれから利用するCLIの使い方について確認しておきましょう。
ncs_cli.shの引数に「-h」をつけるとヘルプが出力されます。
Cli_help

また、SDKを展開したディレクトリにcliというディレクトリがありますので、cli配下にあるREADMEに詳細が記載されています。

では最初にニフティクラウドストレージとの疎通確認を行います。
引数にlsをつけると、GetServiceという機能を使い、現在の自分が保有するバケット一覧を取得することができます。
Cli_get_service

"HTTP/1.1 200 OK[r][n]" と出力されていますので、ちゃんと通信ができています。
初回アクセスではバケットを1つも作成していない状態ですので、Bucketsの中身は何も表示されていません。
ちなみに初期設定はDEBUG出力を出すようにしていますので、HTTPリクエストやHTTPレスポンスの詳細が必要ない場合は
SDK展開ディレクトリ/cli/log4j.propertiesの中にある「log4j.logger.org.apache.http.wire=DEBUG」をコメントアウトすると簡易出力表示になります。お好みに合わせて修正するとよいでしょう。

バケットを作成してみよう!

疎通確認が取れたので、次にバケットを作成してみましょう。ここで作成するバケットはバックアップするファイルの格納先となります。
バケットを作成する場合は「ncs_cli.sh mb ncss:バケット名」となります。
Cli_putbucket

最終行にバケットが作成できたと出力されています。作成できたバケットを先ほどのバケット一覧取得でもう1度確認してみましょう。

Cli_samplebucket_check

Nameの箇所にsample-bucket-10とありますので、先ほど作成したバケットが出来ていることが確認できました。

ファイルバックアップ!

ファイルをバックアップする格納先(バケット)が出来たので、そちらにファイルをアップロードしてみましょう。
今回は/var/tmp/backupディレクトリの下にtest.txtを用意しておいたので、こちらをニフティクラウドストレージにアップロードします。
File_check

ファイルアップロードは「ncs_cli.sh ファイルパス ncss://バケット名/ファイル名」です。
Cli_putobject

成功したようです。最後に確認しましょう。

バケット配下のオブジェクトリストを見よう!

先ほどバックアップしたtest.txtを確認するにはGet Bucket (List Object)という機能を使います。
これは指定したバケット配下のオブジェクトの一覧を取得する機能です。
使い方は「ncs_cli.sh ls ncss://バケット名」です。
Cli_getbucketlist

Keyの箇所にtest.txtがあり、Sizeの箇所に50とありますので、50byteのtest.txtが置かれていることがわかります。

ファイルをリカバリしてみよう!

最後に、先ほどバックアップしたtest.txtをダウンロードしてみましょう。
ダウンロードはGet Objectという機能を利用します。
今回はリカバリ先のディレクトリを/var/tmp/backup/recoverとしました。
使い方は「ncs_cli.sh get ncss://バケット名/オブジェクト名 ファイルパス」です。
Cli_getobject

ちゃんとリカバリができていますね。ファイルサイズもファイルの中身も問題ありません。

おまけ

以上で基本的なバックアップ手順は終わりになりますが、READMEを見て頂くとわかる通りACLという
権限設定をバケットやオブジェクトに付与することもできます。また、デフォルトはhttps通信ですが
速度を重視する場合はhttpを指定することもできます。
もう少し応用すると、ncs_cli.shを改修しサーバのディレクトリ配下を1ファイルずつ再帰的に
バックアップし、ニフティクラウドストレージと同期することもできると思います。

ファイルを暗号化して送るなど、様々な利用方法が考えられますので、色々試して頂きたいと思います。