さくらのクラウドのディスクをローカルにバックアップするツールを作ってみました
さくらのクラウドのディスクをローカルホストにバックアップするツールを作ってみましたので公開します。
バックアップツール Sacback
バックアップツールの名称は Sakura Cloud Backup を縮めて「Sacback」としました。
Rubygems: https://rubygems.org/gems/sacback
Sacbackは以下の一連の処理を順番に実行します。
また、それぞれの処理を単独で実行することもできます。
セットアップ
まず、gemをインストールします。
$ gem install sacback
さくらのクラウドの認証情報とゾーン名を環境変数にセットしておきます。
- SACLOUD_TOKEN: アクセス・トークン
- SACLOUD_SECRET: アクセス・トークン・シークレット
- SACLOUD_ZONE: ゾーン名(石狩第1: is1a, 石狩第2: is1b)
※トークンとシークレットは APIキー のものを指定します。
使い方
すべての処理を一気に実行:
$ sacback a DISK_NAME [LOCAL_DIR_PATH]
さくらのクラウド上でディスクからアーカイブを作成:
$ sacback c DISK_NAME
アーカイブをローカルホストにダウンロード:
$ sacback g ARCHIVE_ID [LOCAL_DIR_PATH]
さくらのクラウド上でアーカイブを削除:
$ sacback r ARCHIVE_ID
ローカルホストのファイルを圧縮:
$ sacback z LOCAL_DIR [FILE_NAME]
オプションや注意事項などもありますが、詳細は GitHubのREADME を見てください。
さくらのクラウドへのアクセス
さくらのクラウドへのアクセスには、主に Saklient のRubyライブラリを使用しています。
ただし、Saklientにはアーカイブを削除する機能がまだ含まれていないため、その処理だけREST APIを使用しています。
Saklientが対応したら、Saklientで置き換える予定です。
※追記(2014/11/26): id:cloud_hobby さんから教えていただき、すべてSaklientで実装できました。
その他
アーカイブのダウンロードは、当初は DoubleBagFTPS で実装していたのですが、あまりに遅いため、curl
コマンドを使うオプションも追加しました。
この辺はよくわからないのですが、Rubyだとこんなものなのか、もしくはFTPS実行時の注意点があるのでしょうか?
また、アーカイブのダウンロード時に、どういう訳かさくらのクラウドのコンソール上でステータスが「アップロード」と表示されてしまいます(ダウンロードはうまくいきます)。
これもまだ謎です。
こういった部分も含めてまだまだざっくりした実装ですが、改善できる部分がありましたら、Pull Request をいただけると助かります。