Sacback

Sacbackはさくらのクラウドのディスクをローカルホストにバックアップするツールです。 (Sakura Cloud Backup tool)

以下の一連の処理を一気に実行します。また、それぞれの処理を個別に実行することもできます。

  1. さくらのクラウド上でディスクのアーカイブを作成
  2. アーカイブをローカルホストにダウンロード
  3. さくらのクラウド上のアーカイブを削除
  4. ローカルのアーカイブファイルを圧縮

セットアップ

$ gem install sacback

さくらのクラウドの認証情報とゾーン名を以下の環境変数にセットします。

  • SACLOUD_TOKEN: アクセス・トークン

  • SACLOUD_SECRET: アクセス・トークン・シークレット

  • SACLOUD_ZONE: ゾーン名(石狩第1: is1a, 石狩第2: is1b)

使い方

$ sacback
Commands:
  sacback a DISK_NAME [LOCAL_DIR_PATH]   # Run all through with the disk (def...
  sacback c DISK_NAME                    # Create an archive from the disk
  sacback g ARCHIVE_ID [LOCAL_DIR_PATH]  # Get the archive (default path: /tmp)
  sacback help [COMMAND]                 # Describe available commands or one...
  sacback r ARCHIVE_ID                   # Remove the archive
  sacback z LOCAL_DIR [FILE_NAME]        # Compress the local file (default f...

Options:
  -s, [--silent], [--no-silent]  # Not write log messages
      [--curl], [--no-curl]      # Use curl command for downloading
      [--ftpblocksize=N]         # Block size on FTP transfer (KB) (not used on curl mode)
                                 # Default: 512

コマンド

  • a: すべての処理を一気に実行します。(以降のc, g, r, z)

例: sacback a disk1 /backup

  • c: さくらのクラウド上でディスクからアーカイブを作成します。

アーカイブ名:ディスク名-YYMMDD-HHMM

  • g: アーカイブをローカルホストにダウンロードします。

デフォルトファイル名:archive.img

  • r: さくらのクラウド上でアーカイブを削除します。

  • z: ローカルホストのファイルを圧縮します。(gzip)

圧縮ファイル名:アーカイブ名.gz

オプション

-s, --silent: ログメッセージを表示しません。cronなどで実行する場合はこのオプションを指定してください。

--curl: アーカイブのダウンロードをcurlで行います。デフォルトでは DoubleBagFTPS を使用しますが非常に遅いため、curlが使える環境ではこのオプションの使用をお勧めします。

--ftpblocksize=N: アーカイブダウンロード時のブロックサイズを指定します(KB単位)。curlモードの場合は影響しません。

注意事項

a, cコマンドのパラメーターで指定する「ディスク名」は部分一致となります。複数のディスク名が該当した場合は最初のものが使用されるため、ユニークに決まる名称を指定した方が良いでしょう。

アーカイブのダウンロード時に、さくらのクラウドのコンソール上では、ステータスが「アップロード」と表示されます。今のところ原因がわかりませんが、動作上は問題ありません。

さくらのクラウド側でたまに HttpServiceUnavailableException が発生することがあります。aコマンドで実行していた場合は、失敗した処理から個別に実行して継続することができます。

Contributing

  1. Fork it ( https://github.com/shimotori/sacback/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request