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 -s laptopJob -m rsync」の実行を試したときには、しばらくしてからリモートの「/home/fkereki/Images」と「/home/fkereki/Documents」の各ディレクトリが見事に「/root/backup」にコピーされた。スクリーンショットに撮ったHTML画面を参照してもらえれば、以前バックアップに失敗したときと最終的に成功したときの結果が表示されているのがわかる。
このようにSynbakは多くの可能性を秘めた興味深いパッケージだが、ドキュメントが貧弱なのが難点だ。だが、じっくりと時間をかけて、わずかなヒントを頼りに試行錯誤をいとわずに取り組めば、満足のいく使い方ができるだろう。Synbakの作者Ugo Viti氏は、私がメールでいくつかの質問をした際、大いに力になってくれただけでなく、まだ公開されていないバージョン1.0.12まで送ってくれた。
Federico Kerekiはウルグアイ在住のシステムエンジニア。20年以上に及ぶシステム開発の経験を持ち、現在はコンサルティング業と大学での教育に従事。