rsync でディレクトリ間の同期を(バックアップ)とる

rsyncとは

rsync は、サイズがすぐ大きくなるファイルの転送に適したオープンソースのユーティリティです。

backup をとるだけならばディレクトリをtarなどで固めて移動させたり ftp や scp などを使って network 越しにコピーしても同じ効果が得られますが内容の少しの変更でもファイル全体をコピーさせなければならず効率的ではありません。

rsync ならば前回の copy から差分を計算して変更のある部分のみの copy で済むのでnetwork資源を効率よく利用できます。

今回は2台のホスト間でバックアップをとります。 2つのホストには rsyncd を install しておきます。 FreeBSD であれば portinstall コマンドで一発でok。

# portsintall net/rsync

今回は backup 元側で rsyncd をデーモンとして起動します。

設定はユーザ hoge のディレクトリと設定ファイルのあるディレクトリ /usr/local/etc をbackup する設定にします。

access できる rsync クライアントも local ip 192.168.0.0/24 に制限します。 またサーバ側では rsync 接続を受け付けるための port 873 も予め開放しておく必要があります。

設定

backup側

設定ファイル

/usr/local/etc/rsyncd.conf

uid = root
gid = wheel
#use chroot = yes
#max connections = 4
#syslog facility = local5

hosts allow=192.168.0.0/24

[hogebackup]
path = /home/hoge

[usr_local_etc]
path = /usr/local/etc

起動準備

rc.confに以下を追加する

rsyncd_enable="YES"

起動

# /usr/local/etc/rc.d/rsyncd start

これでサーバ側の設定は終わりです。

クライアント側

クライアント側からrsyncクライアントを実行して同期をとります。

hogebackup の実行

# rsync -azv rsync://hostname/hogebackup /home/backup/hoge/

上記コマンドをクライアント側で実行すると rsyncd サーバにある /home/hoge の内容がクライアント側の /home/backup/hoge/ にコピーされます。初めての場合は全てのファイルをコピーするのでファイルの量によっては時間がかかります。

次に usr_local_etc の実行

# rsync -azv rsync://hostname/usr_local_etc /home/backup/etc/

上記コマンドで サーバ側 /usr/local/etc の内容が /home/backup/etc/ にコピーされます。

オプションの意味

  • -a, --archive -rlptgoD と同じです。再帰的に全ての情報を維持する手っ取り早い方法です。
  • -v, --verbose 転送の間の情報を詳しく表示します。
  • -z, --compress 受信側に送信されるファイルのデータを圧縮します。

他にも沢山オプションがあります。通常はファイル内容を暗号化しませんが他のネットワークをまたぐ場合などは -e ssh オプションで 送信内容を暗号化することもできます。

オプションの詳しくはココを見てください。

http://www.infoscience.co.jp/technical/rsync/rsync.html

created:

Back to top