本文へジャンプします。

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

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

こんにちは。ニフティクラウドストレージの開発を担当している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ファイルずつ再帰的に
バックアップし、ニフティクラウドストレージと同期することもできると思います。

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

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています