先月末になるが deferred-sync v13.05 をリリースした。

これはプラグイン形式で拡張が可能ないわゆるバックアップスクリプトだ。システム管理者なら誰しもサーバーにシェルスクリプトを仕込んでバックアップする仕掛けを作ったことがあるだろう。しかしこれを各々が毎回手作業でゴリゴリと実装していたのではとてもダルい。この deferred-sync はそのようないわゆる自動バックアップソリューションから生まれたひとつのフレームワークである。

安定版 (v13.05) zip ダウンロード
https://github.com/id774/deferred-sync/archive/v13.05.zip

最新のソースコード
https://github.com/id774/deferred-sync

設定ファイルには日本語でコメントも書かれているのでさほど迷うこともないと思うが、詳細はドキュメントプラグインの解説を読んで欲しい。

まずはホームディレクトリに展開し install.sh を起動する。引数無しでこれを実行すると /opt/deferred-sync に本体が配置され /etc/cron.daily/deferred-sync も配置される。ログは /var/log/deferred-sync に作られログローテーションも自動設定される。あとは設定ファイル /opt/deferred-sync/config/sync.conf をお使いの環境にあわせて編集するだけで日次でバックアップする準備は完了となる。

いくつか利用例を紹介しよう。

たとえば host1 host2 がウェブサーバー、 host3 がバックアップ先だったとする。バックアップしたいディレクトリは /var/www と /home であり、過去三世代は戻せるようにしておきたい。この場合設定ファイルをこう書けば良い。リモートサーバーにバックアップを取る場合、 host1 及び host2 から ssh backup@host3 が通るようにしておく必要がある。

# 利用するプラグイン名を個別に指定 (複数指定可)
PLUGINS="
incremental_backup
backup_to_remote
"

# 世代バックアップの対象とするディレクトリ (複数指定可)
BACKUPDIRS="
/var/www
/home
"

# 履歴を何日間まで残すか
EXPIREDAYS=3

REMOTE_HOSTS="host3"
# リモートサーバーのディレクトリ名
REMOTE_DIR=/home/remote/$HOST
# リモートサーバーのユーザーアカウント
BACKUPUSER=backup

稼働中のデータベースサーバー host4 から MySQL のダンプを取得、 host5 に自動転送しておきたいときはこうなる。

# 利用するプラグイン名を個別に指定 (複数指定可)
PLUGINS="
dump_mysql
backup_to_remote
"

# MySQL のデータベース名 (複数指定可)
MYSQL_DBS="database_name"
# MySQL のユーザー/パスワード
MYSQL_USER=your_username
MYSQL_PASS=your_password

# MySQL ダンプを取得して保管するディレクトリ
MYSQLDUMP=/home/backup/mysqldump

# 履歴を何日間まで残すか
EXPIREDAYS=3

REMOTE_HOSTS="host5"
# リモートサーバーのディレクトリ名
REMOTE_DIR=/home/remote/$HOST
# リモートサーバーのユーザーアカウント
BACKUPUSER=backup

バージョン管理サーバーのホストである host6 の SVN ダンプを毎日取得したいときはこうだ。

# 利用するプラグイン名を個別に指定 (複数指定可)
PLUGINS="
dump_svn
"

# SVN のリポジトリ名 (複数指定可)
SVN_REPOS="
railsapp01
railsapp02
project_common
"

# SVN のパス
SVN_PATH=/var/lib/svn

# SVN ダンプを取得して保管するディレクトリ
SVNDUMP=/home/backup/svndump

リモートバックアップサーバー host7 に仕込んだ deferred-sync で上記 host6 のダンプを自動回収したい場合はこう。

# 利用するプラグイン名を個別に指定 (複数指定可)
PLUGINS="
get_remote_dir
"

# バックアップ取得元のサーバー (複数指定可)
GET_HOSTS="host6"
# バックアップ対象のディレクトリ (複数指定可)
GET_REMOTE_DIRS="/home/backup/svndump"
# バックアップの取得先
GET_TARGET_DIR="/home/remote/host6"
# リモートサーバーのユーザーアカウント
REMOTE_USER=svnuser

このように利用したい機能が実装されたプラグイン名を指定し、あとはそれに対する設定を記述すれば良い。実装はシェルスクリプトなのでプラグインを作りたい時も単にシェルスクリプトを書けば OK である。利用する変数は環境設定ファイルで予め定義するようにしておけば利用者が設定を変更できるようになる。

投稿日: 作成者: 774