こんにちは。ニフティクラウドストレージの開発を担当している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 SE Development Kit 6が正しくインストールされているかを確認します。
次にニフティクラウドストレージのSDK for Java/CLIをダウンロードしておきます。
SDK for Java/CLIはzipで圧縮されていますので展開します。
展開後は以下のようにNiftyCloudStorage-SDK-CLIというディレクトリが作成されます。
NiftyCloudStorage-SDK-CLIディレクトリ配下にncs_cli.shというシェルスクリプトとcredentials.propertiesが 存在していることがわかります。
ncs_cli.shがコマンドライン(CLI)、credentials.propertiesが認証キーを設定する定義ファイルになります。
認証キーを設定しよう
ニフティクラウドストレージはAccessKeyとSecretAccessKeyの2つを認証キーとして利用します。
これはAccessKeyがID、SecretAccessKeyがPASSWORDと似た意味合いになりますので、なくさないように注意してください。
セットする定義ファイルはNiftyCloudStorage-SDK-CLI配下にあるcredentials.propertiesになります。
手元にある認証キーを以下のようにセットします。
accessKey =*****
secretKey =+++++++++++++++
準備完了!ここからが本番です!まずは疎通確認!
これでバックアップを行う準備が整いました。まずはこれから利用するCLIの使い方について確認しておきましょう。
ncs_cli.shの引数に「-h」をつけるとヘルプが出力されます。
また、SDKを展開したディレクトリにcliというディレクトリがありますので、cli配下にあるREADMEに詳細が記載されています。
では最初にニフティクラウドストレージとの疎通確認を行います。
引数にlsをつけると、GetServiceという機能を使い、現在の自分が保有するバケット一覧を取得することができます。
"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:バケット名」となります。
最終行にバケットが作成できたと出力されています。作成できたバケットを先ほどのバケット一覧取得でもう1度確認してみましょう。
Nameの箇所にsample-bucket-10とありますので、先ほど作成したバケットが出来ていることが確認できました。
ファイルバックアップ!
ファイルをバックアップする格納先(バケット)が出来たので、そちらにファイルをアップロードしてみましょう。
今回は/var/tmp/backupディレクトリの下にtest.txtを用意しておいたので、こちらをニフティクラウドストレージにアップロードします。
ファイルアップロードは「ncs_cli.sh ファイルパス ncss://バケット名/ファイル名」です。
成功したようです。最後に確認しましょう。
バケット配下のオブジェクトリストを見よう!
先ほどバックアップしたtest.txtを確認するにはGet Bucket (List Object)という機能を使います。
これは指定したバケット配下のオブジェクトの一覧を取得する機能です。 使い方は「ncs_cli.sh ls ncss://バケット名」です。
Keyの箇所にtest.txtがあり、Sizeの箇所に50とありますので、50byteのtest.txtが置かれていることがわかります。
ファイルをリカバリしてみよう!
最後に、先ほどバックアップしたtest.txtをダウンロードしてみましょう。 ダウンロードはGet Objectという機能を利用します。
今回はリカバリ先のディレクトリを/var/tmp/backup/recoverとしました。 使い方は「ncs_cli.sh get ncss://バケット名/オブジェクト名 ファイルパス」です。
ちゃんとリカバリができていますね。ファイルサイズもファイルの中身も問題ありません。
おまけ
以上で基本的なバックアップ手順は終わりになりますが、READMEを見て頂くとわかる通りACLという権限設定をバケットやオブジェクトに付与することもできます。また、デフォルトはhttps通信ですが速度を重視する場合はhttpを指定することもできます。
もう少し応用すると、ncs_cli.shを改修しサーバのディレクトリ配下を1ファイルずつ再帰的にバックアップし、ニフティクラウドストレージと同期することもできると思います。
ファイルを暗号化して送るなど、様々な利用方法が考えられますので、色々試して頂きたいと思います。
本コラムは、ニフティ株式会社HPに掲載されている「ニフティクラウド ユーザーブログ」より転載したものです。