Rsync はファイルやディレクトリーの同期をとるプログラムです。これを使うと、バックアップする時に便利です。今回は2つのFreeBSDマシン(ns,ns2)を使って、nsのディレクトリをns2のディレクトリにバックアップする想定で進めていきます。
1.NFS Server
nsマシンをNFS Server にします。これにより、ns2マシンからnsマシンのディレクトリをマウントできます。
nsマシンのrc.confに以下の部分を書き加えます。 # ee(vi) /etc/rc.conf ----- nfs_server_enable="YES" nfs_server_flags="-u -t -n 4" mountd_flags="-r" nfs_reserved_port_only="NO" ----- さらにexportsに以下の部分を加えます。 # ee /etc/exports ----- / -alldirs -maproot=root ns2 -----
これは、ルートディレクトリ(/)以下のすべてのディレクトリを、ルート権限(読み書き自由)で、ns2マシンにのみexportを許可するする、という意味です。ns2の部分は、-network=192.168.1 のようにIP address で指定しても構いません。exportがうまくいっているかどうかは、nsマシンを再起動後、
% showmount -e Exports list on localhost: / ns2.fujie.org
となり確かめられます。
2.AMD
マシンを起動する度にNFSマウントしてもいいのですが、面倒くさいので、AMDで自動マウントできるようにします。まず、AMDが起動するようにns2マシンのrc.confに下記を書き足します。
amd_enable="YES" amd_flags="-l syslog /host /etc/amd.map"
次に/etc/amd.mapを書き換えます。デフォルトでは
/defaults type:=host;fs:=${autodir}/${rhost}/host;rhost:=${key} * opts:=rw,grpid,resvport,vers=2,proto=udp,nosuid,nodev
となっていると思いますが、これを
/defaults type:=host;fs:=${autodir}/${rhost}/host;rhost:=${key} * opts:=ro,grpid,resvport,vers=2,proto=udp,nosuid,nodev
とします。これは、サーバーのファイルを読み込みだけ可能にするものです。rwだと読み書き自由になるので危険です。これで、/host/ns以下のディレクトリに自動マウントされます。あとはrsyncで同期をとります。たとえば、
# rsync -az --delete --exclude root /host/ns/var/ /var/
これは、再帰的(-a)に圧縮しながら(-z)、バックアップ元にないファイルは削除し(--delete)、rootというファイルは例外的に同期はとらず(--exclude)、/host/ns/var を /var ディレクトリにバックアップします。cron で定期的にやらせると便利です。
例: 0 5 * * * rsync -az --delete --exclude root /host/ns/var/ /var/ 0 6 * * * rsync -az --delete --exclude lost+found /host/ns/usr/ /usr/ 0 7 * * * rsymc -az --delete --exclude rc.conf /host/ns/etc/ /etc/