Synbakで簡単バックアップ

 最近は定期的なバックアップが広く一般的に行われているが、Synbakを使うとその作業はずっと簡単になる。

 Synbakには何種類ものバックアップ手法が用意されており、強力なレポートシステムによってあらゆる作業の詳細が確認できる。バックアップ機能についてはSSH(Secure Shell)、SMB(Server Message Block)、またはCIFS(Common Internet File System)経由でrsyncを利用でき、tarアーカイブの作成、あるいはCDやDVDの焼き付け(設定では時代錯誤的に“laserdisc”という表記を用いる)が可能だ。また、MySQLやOracleデータベース、それにLDAP(Lightweight Directory Access Protocol)サーバへのアクセスやそれらのバックアップも行える。レポート機能では、バックアップの詳細なレポートを電子メールで受け取ったり、同様の情報が記されたHTMLとRSSによるWebページを作成したりすることができる。

 SynbakはGNU GPLバージョン2以降の下で利用できる。現行のバージョン1.0.11がリリースされたのは約1年前だが、作者によるとバージョン1.0.12の準備がほぼ整っていて間もなく公開予定だという。

インストール

 SynbakはopenSUSEリポジトリから入手可能だが、私がそのインストールを終えて実行したときには、ファイルが足りないというエラーメッセージが表示された。確かにSynbakは多数のシェルスクリプトで構成されているので、公式ダウンロードサイトからソースパッケージをダウンロードし、rootになって次のように実行したほうがよさそうだ。

tar zxf synbak-1.0.11.tar.gz
cd synbak-1.0.11
./configure
make
make install

 これですべてのスクリプトが瞬時にインストールされる。ただし、リモートシステムに接続するためのrsyncやssh、CDの焼き付けを行うmkisofsやcdrecordなど、実行可能なすべてのコマンドを利用するには、いくつか追加パッケージが必要になる。また、mailコマンドを使ったメール送信もできるようにしておくとよいだろう。残念ながら必要なパッケージのすべてがわかる詳しいリストは存在しないが、何が足りないのかを知ることはできる。そのためには、テスト実行のときに何かポップアップメッセージが表示されないか注意しておけばよい。

 なお、ダウンロードされたディレクトリの中にあるFAQファイルには、特にしっかりと目を通しておくこと。サンプルの設定ファイルexample.conf内のコメントを別にすれば、それが入手可能な唯一のドキュメントだ。

バックアップ処理の定義

 通常、バックアップ作業は、出力データの作成、各種デバイスへのアクセス、メールの送信などが行えるようにrootユーザとして実行する。以降でもこの方針で作業を行うという前提で話を進める。Synbakでは、あらゆる設定内容がホームディレクトリ内の隠しディレクトリ.synbakに保存される。synbakコマンドを初めて実行すると、必要なすべてのものが作成されるほか、そうした設定ファイルを用意するように促される。たとえば、rsyncを使用するfirstJobというバックアップ処理を定義するために「synbak -s firstJob -m rsync」を実行すると、次のように表示される。

synbak -s firstJob -m rsync
ERROR: '/root/.synbak/rsync' directory doesn't exist or it isn't accessible
(エラー:'/root/.synbak/rsync'ディレクトリが存在しないかアクセスできません)
i just created it for you.
(上記のディレクトリはこちらで作成しておきました)

 新規のバックアップ作業の場合、次のように「/root/.synbak/example.conf」という設定ファイルを「/root/.synbak/rsync」ディレクトリにコピーしておけば一から作成する手間が省ける。

cp /root/.synbak/example.conf /root/.synbak/rsync/firstJob.conf

 先ほどのsynbakコマンドでは、-sオプションの後にジョブの名前が、-mオプションの後にバックアップ手法がそれぞれ指定されていた。以下の表に、指定可能なバックアップ手法を示す。

rsync rsyncを使ってリモートマシンにアクセスする
mysql MySQLデータベースのバックアップを行う
oracle Oracleデータベースのバックアップを行う
ldap LDAPデータベースのバックアップを行う
tape テープバックアップを実行する
laserdisc CDまたはDVDへの焼き付けを行う
tar アーカイブ(tar)ファイルを作成する

 最初の4つはデータを外部のソースから取得する手法、残り3つはデータをどこか別の場所に保存するものである。バックアップ対象については、設定ファイルの編集によって細かく指定する必要がある。その指定に必要なパラメータを以下の表に示す。

バックアップのオプション
backup_source = ディレクトリのリスト バックアップを行うリモートディレクトリ群
backup_destination = マシン内のディレクトリ 取り込んだデータの保存先ディレクトリ
backup_exclude = ディレクトリの除外リスト バックアップを行わないリモートディレクトリ群
backup_incremental = yesまたはno 差分バックアップ(変更されたファイルのみ)か完全バックアップ(すべてのファイル)かを指定する。私の設定はnoなので全ファイルがバックアップされるが、データサイズが巨大になる場合はyesにするとよい
backup_erase_after = バックアップの保存件数 保存されているバックアップ件数がこの数を超えると最も古いものが消去される
backup_no_make_destdir = yesまたはno 保存先ディレクトリが存在しない場合にSynbakによる自動作成を行うかどうかを指定する。このオプションはおそらくバックアップ手法がrsyncの場合のみ有効(その他の手法では自分で作成する必要あり)だが、私のテストではうまく作成されなかった
backup_erase_always = yesまたはno バックアップ実行時にエラーが発生しても古いバックアップの消去(上記参照)を行うかどうかを指定する
backup_remote_uri = リモートデータの参照先 この指定は「method://yourUser:yourPassword@theRemoteHost/aPathInIt」の形式で行い、methodにはssh、rsync、smb、cifs、mysql、oracle、ldapのいずれかが入る。データベースのバックアップではデータベースにアクセスするためのユーザ名とパスワードが必要になる
report_remote_uri_down = yesまたはno リモートマシンのダウン時にレポートを作成するかどうかを指定する
backup_device_changer = バックアップデバイス テープドライブか、CDまたはDVDライタを「/dev/cdrom」のように指定する
backup_verify = yesまたはno 書き込んだデータのベリファイを行うかどうかを指定する。バックアップが目的ならyesにする必要があるだろう
backup_device_eject = yesまたはno 書き込み終了後にバックアップメディアのイジェクトを行うかどうかを指定する

 適切なパラメータの設定は自己責任で行う。たとえば、取得したバックアップデータをCDに焼き付ける場合はCDライタを指定する必要がある。また、以下のような出力オプションの指定も必要になるだろう。

出力オプション
report_stdout = yesまたはno レポートの出力先を標準出力にするかどうかを指定する。レポートの処理を手動で行う場合はyesを、cron経由で行う場合はnoを指定する。後者の場合は以下のパラメータも指定しないと情報が得られない
report_stdout_on_errors = yesまたはno エラーに関するレポートだけを出力するかどうかを指定する
report_email = yesまたはno レポートをメールで送るかどうかを指定する。自動バックアップを行う場合はyesにするとよいだろう
report_email_on_errors = yesまたはno エラー発生時のメールである点を除き同上
report_email_rcpt = 送信先メールアドレス Synbakからのメールを受け取るアドレス
report_html = yesまたはno SynbakによってHTMLレポートを生成するかどうかを指定する。yesが好ましい
report_html_on_errors = yesまたはno Synbakによってエラー発生時のHTMLレポートを生成するかどうかを指定する。個人的にはやはりyesをお勧めする
report_html_destination = Webサーバのパス Synbakによって生成されるすべてのファイルにとってのルートパス。ほとんどのディストリビューションでは「/var/www/html/synbak」、openSUSEでは「/srv/www/htdocs/synbak」になる。私の場合は一括で削除しやすいように生成されたすべてのファイルを1つのSynbakディレクトリにまとめて置いている
report_html_uri = レポートのURL レポートを参照するのに必要なURL。上記のパス設定では「http://localhost/synbak」とすればよいだろう
report_html_logo = yesまたはno HTMLレポートにロゴを表示するかどうかを指定する
report_html_logo_image = ロゴファイルのパス 上記のオプションをyesにした場合に指定するロゴファイルのパス
report_html_logo_link = ロゴファイルのURL ロゴファイルへのアクセスに必要なURL

 なお、先述のドキュメントには情報が少なくデフォルト値の説明がないので、パラメータの指定は省略しないほうが無難である。

 参考までに、私がノートPC(192.168.0.200)のドキュメントや画像をデスクトップマシンにバックアップするために用意している簡単な設定内容を示す。

backup_source   = /home/fkereki/Images /home/fkereki/Documents
backup_destination  = /root/backup
backup_exclude  =
backup_incremental  = no
backup_erase_after  = 10
backup_no_make_destdir  = yes
backup_erase_always = no
backup_method_opts  =
backup_remote_uri   = ssh://root@192.168.0.198/
report_remote_uri_down  = yes

report_info_support = fkereki@gmail.com
report_stdout   = yes
report_stdout_on_errors = yes
report_email= no
report_email_on_errors  = no
report_email_rcpt   = fkereki@gmail.com

report_html = yes
report_html_on_errors   = yes
report_html_destination = /srv/www/htdocs/backups
report_html_uri = http://127.0.0.1/backups
report_html_logo= no
report_html_logo_image  =
report_html_logo_link   =

synbak_thumb.png
Synbak

 改めて「synbak -s laptopJob -m rsync」の実行を試したときには、しばらくしてからリモートの「/home/fkereki/Images」と「/home/fkereki/Documents」の各ディレクトリが見事に「/root/backup」にコピーされた。スクリーンショットに撮ったHTML画面を参照してもらえれば、以前バックアップに失敗したときと最終的に成功したときの結果が表示されているのがわかる。

 このようにSynbakは多くの可能性を秘めた興味深いパッケージだが、ドキュメントが貧弱なのが難点だ。だが、じっくりと時間をかけて、わずかなヒントを頼りに試行錯誤をいとわずに取り組めば、満足のいく使い方ができるだろう。Synbakの作者Ugo Viti氏は、私がメールでいくつかの質問をした際、大いに力になってくれただけでなく、まだ公開されていないバージョン1.0.12まで送ってくれた。

Federico Kerekiはウルグアイ在住のシステムエンジニア。20年以上に及ぶシステム開発の経験を持ち、現在はコンサルティング業と大学での教育に従事。

Linux.com 原文