ここしばらく自分のノート PC (Linux)のバックアップを怠っていたので、今日バックアップをとった。 いつもは
#tar zxvf /MO/home-yyyymmdd.tar.gz -C / home #tar zxvf /MO/etc-yyyymmdd.tar.gz -C / etc
と tar を使ってバックアップとっていた(圧縮する前で100MB ちょい)。 バックアップ先は 640MB MO (/MO にマウント)。 毎回フルバックアップとなるのでそれなりに時間がかかるし、容量も結構になる。 また、変更されていないファイルも多く、これらを毎回アーカイブするのも悔しい。 そこでこれからは差分バックアップの方がいいな、と考えたわけだが名案がないので、とりあえずしばらく単純に rsync でミラーリングすることにした。
#rsync -av --delete --exclude '*~' --exclude '.netscape/cache/' /home /MO #rsync -av --delete --exclude '*~' /etc /MO #rsync -av --delete --exclude '*~' /var/spool /MO/var
rsync はリモートとの転送/同期を目的としたものだが、もちろんローカル間での同期にも使える。ただしこの方法だと本当にミラーリングなので、なにかあった時に古い世代のファイルがとりだせない。 やはりきちんとしたバックアップ方法を考えなくては。
しかし何が面倒かって、物理的な準備なんだよね。ノート PC の場合。 MO ドライブと SCSI PC カードひっぱりだしてきて、接続するのが面倒。 でついつい、おっくうになってしまう。 大学でネットワークに接続した時についでにリモートの MO にバックアップするように習慣づけた方がいいかもしれぬ。
普段使っているノート 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
が復元される。
直付け 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 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。