普段使っているノート PC は pdumpfs でバックアップをとっている。 任意のスナップショットから簡単にファイルを復元できるので、バックアップ用HDDを別に用意できる場合はこれが便利。
会社で使っている Windows デスクトップは、rsync でWindowsファイルサーバへ同期。 1世代しかバックアップが無い。 少なくとも数世代前のファイルが復元できるようにしておきたい。
某 Linux サーバはバックアップ無し! マズイ。 現状、たまに手動で tarball にして保存しているぐらい。
DAR というバックアップコマンドの紹介を見て興味をひかれた。 シンプルながらも使い勝手の良さそう。 Linux でも Windows でも動くというのも嬉しい。
Linux 上で試してみる。
/tmp の下にテスト用ディレクトリ dar を作成。 その下に home ディレクトリと var ディレクトリを作成する。
mkdir -p /tmp/dar/home/naney mkdir -p /tmp/dar/var/lib/dar echo 'abc' > /tmp/dar/home/naney/file1.txt
/tmp/dar/home 以下バックアップ対象として /tmp/dar/var/lib/dar 以下にバックアップファイルを作成してみることにする。
最初はフルバックアップ:
dar -c /tmp/dar/var/lib/dar/home-full \ -y9 \ -R /tmp/dar \ home
/tmp/dar/home をフルバックアップした home-full.1.1.dar が /tmp/dar/var/lib/dar にできる。
ファイルを1つ追加。
echo 'def' > /tmp/dar/home/naney/file2.txt
ここで差分バックアップをとる:
dar -c /tmp/dar/var/lib/dar/home-diff-1 \ -A /tmp/dar/var/lib/dar/home-full \ -y9 \ -R /tmp/dar \ home
home-full.1.dar に対する差分バックアップファイル home-diff-1.1.dar ができる。
もう1つファイルを追加。それから最初にあったファイルを削除してみる。
echo 'ghi' > /tmp/dar/home/naney/file3.txt rm /tmp/dar/home/naney/file1.txt
ここで差分バックアップ(2回目):
dar -c /tmp/dar/var/lib/dar/home-diff-2 \ -A /tmp/dar/var/lib/dar/home-full \ -y9 \ -R /tmp/dar \ home
home-full.1.dar に対する差分バックアップファイル home-diff-1.2.dar ができる。
またインクリメンタルバックアップもとってみる
dar -c /tmp/dar/var/lib/dar/home-inc-2 \ -A /tmp/dar/var/lib/dar/home-diff-1 \ -y9 \ -R /tmp/dar \ home
差分バックアップファイル home-diff-1.1.dar に対する差分バックアップファイル home-diff-2.1.dar ができる。
dar -x /tmp/dar/var/lib/dar/home-full
を実行。
home/naney/file1.txt
が復元される。
dar -x /tmp/dar/var/lib/dar/home-full dar -x /tmp/dar/var/lib/dar/home-diff-1
を実行。
home/naney/file1.txt home/naney/file2.txt
が復元される。
dar -x /tmp/dar/var/lib/dar/home-full dar -x /tmp/dar/var/lib/dar/home-diff-2
を実行。
home/naney/file2.txt home/naney/file3.txt
が復元される。
dar -x /tmp/dar/var/lib/dar/home-full dar -x /tmp/dar/var/lib/dar/home-diff-1 dar -x /tmp/dar/var/lib/dar/home-inc-2
を実行。
home/naney/file2.txt home/naney/file3.txt
が復元される。
後ろの席の人、Dell Precision 470 に iPod shuffle を挿したら、ファンが掃除機並みの音を立てるようになりそのまま亡くなった。
ヨドバシカメラであわてて買ってきた HDD ケースに、ぶち抜いた HDD を入れてデータをコピーしている(確認しないで最初 IDE タイプを買ってきて、もう一度店舗にいって SATA タイプに交換。そしたら部品欠品があり再度店舗に交換してもらいにいったというのは秘密)。
斜め向こうの人も Windows を再インストール中。
不吉だ。 自分も何台かバックアップを怠っているので、それぞれバックアップを再検討することにした。
特に気になっているのが Red Hat Linux 8.0 BOX のバックアップ。 以前は pdumpfs で毎日バックアップしていたのだが、バックアップ用 USB 外付け HDD がクラッシュ。新しいものを手配したのだがうまく認識できなくてバックアップに使えていない。 TeraStation PRO にそのディスクを接続してネットワーク経由でバックアップする予定つもりではいる。 で、バックアップには DAR を使おうと思ったのだが、Red Hat Linux 8.0 上でビルドできなかったのでそこで止まっていた。忙がしいこともあってその後ずっとほったらかし。
ビルドが通るようにコンパイラやライブラリのバージョン上げるのも大変なので、今回は別のホストでビルドしたものを使うことにした。 DAR はもともとリカバリ用に必要なライブラリを静的リンクした dar_static が作られるようになっている。これなら別環境でビルドしても動くはず。
Linux kernel 2.4 系の Debian GNU/Linux BOX があるので、そこで apt-get build-dep dar してから、dar-2.3.8.tar.gz をとってきて展開。
./configure --prefix=/tmp/dar make make install-strip
できあがった dar_static を dar として Red Hat Linux 8.0 BOX にコピーしてテスト。 うまく動いている感じ。
そういえば最初に DAR をいじってみたのは2005年4月なのだが、開発が進んでコマンドライン引数の指定の仕方がかわったようだ。 その時はバックアップ対象ディレクトリを直接引数として渡せたのだが、現バージョンではオプション引数として渡す必要があるようになっている。
DAR のスケジューリングとローテーションを提供する SaraB ( http://sarab.sourceforge.net/ ) もちょっと気になっている。 要チェック。
直付け HDD なら pdumpfs にするところだが、ネットワーク上の別の HDD (TeraStation PRO) 上に保存したいので、DAR でバックアップすることにしてみた。
公式サイトから Windows 版バイナリをとってきて展開。 インストール無しにすぐ使える。
Cygwin ベースなのでパスの指定はちょっと変態的だが、問題なく動作。試した範囲では日本語のファイル名も OK だった。
バックアップ先を G: としてネットワークドライブ割り当てして、C: ドライブのホームディレクトリをバックアップ。
dar -c /cygdrive/g/var/DAR/mypc/mypc-home-2009-01-13 \ -P var/Dropbox \ -P var/TrueCrypt \ -y9 -s 1G \ -R /cygdrive/c/home/naney
dar -c /cygdrive/g/var/DAR/Dine/dine-home-2009-01-13.2009-01-14 \ -A /cygdrive/g/var/DAR/mypc/dine-home-2009-01-13 \ -P var/Dropbox \ -P var/TrueCrypt \ -y9 -s 1G \ -R /cygdrive/c/home/naney
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。