- blogs:
- cles::blog

さくらのクラウド API を使ってローカルにバックアップを取る





さくらのクラウドにはREST API*1がついていて、コントロールパネルから行える作業については、APIからも行うことができるようになっています。
クラウドはある程度多重化されているとは言っても、1つくらいはローカルにバックアップを持っておきたいもの。
今回はさくらのクラウド API をつかってローカルにイメージバックアップを取るスクリプトを書いてみました。
サーバについているディスクはそのままでは FTP できないので、一旦アーカイブを作成し、FTPを有効にしてから、ファイルを FTP 転送し、最後にアーカイブを削除するという一連の流れをスクリプト化してみました。Node.js を使うとかいろいろ方法は考えられたのですが、単純に bash で curl*2 と json コマンドを駆使しているだけという単純なものです。API ということでちょっと取っつきづらいイメージがありましたが、API リファレンスには curl コマンドのサンプルもついているので楽ちんでした。
† 全てのディスクのイメージを取るスクリプト
実行にあたっては、APIキー(ACCESS TOKEN と ACCESS SECRET) が必要になります。
取得方法についてはAPIキーの作成方法*3を参考にしてください。
起動すると全てのディスクのバックアップをローカルに取ります。
エラーハンドリングはちょっと甘いところがありますが、たまに使うくらいなら大丈夫でしょう。
† 2015/2/3 追記
さくらのクラウドの中の人から以下のツッコミをいただいたので、スクリプトを修正しました。
スクリプト内:95~98行の部分で’available’となるまで繰り返す仕様となっておりますが、アーカイブ作成時に’failed’(失敗)となった場合に無限ループに陥る事象が発生しております。当該箇所にて無限ループとならないよう繰り返し回数の上限を設けていただくなどの修正や、記事中に当該箇所が無限ループにつながることを注意喚起をいただけませんでしょうか?
ソースコートは GitHub に移動していますので、以下からご利用ください。
† 2013/12/10 追記
転送中のステータスが表示されるようにアップデート。
† 2013/12/12 追記
curl の引数に --keepalive-time 60 を追加 ( curlのバージョンによっては上手く動かないかも)。
CentOS5.x に付属のcurl ではなぜかうまく動きませんでした。
こんなエラーが出ます。
curl を自分でビルドしたら動くようになりました。うーむ。
† 2013/12/14 追記
続編として、日次でアーカイブをとるスクリプトを書いてみました。
- *1: さくらのクラウド API v1.1 ドキュメント
- *2: curl and libcurl
- *3: コマンドライン操作ツール「sacloud CLI」とNode.js用モジュールを公開しました | さくらのクラウドニュース
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6323
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
- crontab -r とやってしまった... (2)
- Jawbone Companion (beta) (1)
- GPS ロガーを自作 (1)
- MPC-HC で連続再生を行う(解... (1)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112931)
3 . 年次の人間ドックへ(112359)
4 . 2023 年分の確定申告完了!(1つめ)(111928)
5 . 三菱鉛筆がラミーを買収(111802)