Rsync & Amd

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/

TOP PAGE