amanda
、bacula
、BackupPC
などの多くのプログラムが存在します。これらは多くの機能を備えるクライアント/サーバシステムで、その設定はかなり難しいです。いくつかのプログラムは難しさを和らげるためのユーザフレンドリーなウェブインターフェースを提供しています。しかし Debian には、すべての考え得る使用事例に対応できる、他の数多くのバックアップソフトウェアが含まれています。ソフトウェアを確認するには apt-cache search backup
を使ってください。
rsync
コマンド (同名のパッケージに含まれます) が使われています。
rsync
コマンドは今回のバックアップの内容を前回のバックアップの内容へのハードリンクの形で複製します。このおかげで、ハードドライブ領域を無駄に消費することがなくなります。そして rsync
プロセスは前回のバックアップ以降に変更されたファイルだけを置き換えていきます。このメカニズムにより、多くのバックアップを少ない領域に保存することが可能です。すべてのバックアップは即座に利用できる上に即座にアクセスできるので (たとえば、ネットワーク共有されたディレクトリの中に置かれるので)、ある日付同士の違いを素早く比較できます。
dirvish
プログラムを使えば、このバックアップメカニズムを簡単に実現できます。dirvish
プログラムはバックアップストレージ領域 (dirvish 用語で「bank」) を使い、「bank」の中に一連のバックアップファイルのタイムスタンプを付けたコピー (dirvish の文書ではこれらを「vault」と呼びます) を置きます。
/etc/dirvish/master.conf
ファイルに書かれています。/etc/dirvish/master.conf
ファイルでは、バックアップストレージ領域の場所、管理する「vault」のリスト、バックアップの保存期限のデフォルト値を定義します。残りの設定、すなわち vault でバックアップするファイルセットに固有の設定は bank/vault/dirvish/default.conf
ファイルに書かれています。
例 9.3 /etc/dirvish/master.conf
ファイル
bank: /backup exclude: lost+found/ core *~ Runall: root 22:00 expire-default: +15 days expire-rule: # 分 時 日 月 曜日 保存期限 * * * * 1 +3 months * * 1-7 * 1 +1 year * * 1-7 1,4,7,10 1
bank
設定はバックアップが保存されるディレクトリを表します。exclude
設定を使うと、バックアップからファイル (またはファイルタイプ) を除外することが可能です。Runall
はタイムスタンプを付けてバックアップするファイルセットのリストです。これにより、万が一割り当てられた時間に正確にバックアップが実行されない場合でも、バックアップコピーに正確な時刻を割り当てることが可能です。ここで指定する時刻は実際の実行時刻の直前の時刻でなければいけません (/etc/cron.d/dirvish
によれば、Debian では実際の実行時間はデフォルトで午後 10 時 4 分です)。最後に expire-default
と expire-rule
設定でバックアップ保存期限ポリシーを定義します。上の例は、各四半期の最初の日曜日に作成されたバックアップを永久に保存し、それに当てはまらない各月の最初の日曜日に作成されたバックアップを 1 年経過後に削除し、それに当てはまらない日曜日に作成されたバックアップを 3 カ月経過後に削除します。その他の日次バックアップは 15 日間保存されます。ルールが適用される順番が問題です。Dirvish は最後にマッチしたルールを使い、expire-rule
にマッチするものがなければ expire-default
を使います。
例 9.4 /backup/root/dirvish/default.conf
ファイル
client: rivendell.falcot.com tree: / xdev: 1 index: gzip image-default: %Y%m%d exclude: /var/cache/apt/archives/*.deb /var/cache/man/** /tmp/** /var/tmp/** *.bak
hostname
の出力するローカルマシンの名前を指定します) にあるルートツリーの内容 (tree: /
) から exclude
で指定したものを除外したファイルです。さらに、バックアップ対象は tree
と同一のファイルシステムの内容 (xdev: 1
) に制限されます。他のマウントポイントのファイルはバックアップされません。保存されたファイルのインデックス (index: gzip
) が生成され、イメージには現在の日付に関連する名前 (image-default: %Y%m%d
) が付けられます。
dirvish --vault vault --init
コマンドを使って、各ファイルセットを初期化します。ここまでが済むと、毎日の dirvish-runall
実行時に期限切れになったバックアップコピーが削除され、その直後に自動的に新しいバックアップコピーが作成されます。