lsyncによるファイル同期・小規模のバックアップ。すごく便利。
lsyncによるファイル同期システムの構築方法をメモがてらに。
エンドユーザが使うサービスdropboxのように非常に小規模のバックアップシステムとして利用が可能です。その他、大規模なシステムのコンテンツ共有の手段としても非常に有効です。
30分もあれば構築ができてしまいます。
下記はDebian 5.0.2 Kernel 2.6.26-2-686 で動かしました。
(debianのバージョンは/etc/debian_versionに書いてあります。)
lsyncはaptで見当たらなかったのでソースのコンパイルから入れました。こっちのほうが早いよ。きっと。
本システムは一台の中でデータのバックアップを取ることを前提にしています。ホストはすべてlocalhostになります。
バックアップのポリシーは次のとおりです。
バックアップ元(FROM) ここから: /root/
バックアップ先(TO) ここへ: /var/tmp/copy
概念としてはrsyncというデーモンを立ち上げてlsyncというプログラムに同期したいもののリストを投げていくという感じです。そのためにrsyncがデーモンで起動していないとlsyncはウンともスンともいいません。
1.lsyncをダウンロード(プログラム本体)
http://sourceforge.jp/projects/freshmeat_lsycnd/resources/
# wget http://freshmeat.net/urls/9db4884fc3b0840e60d3e5fcc95e4a57
2.アーカイブを解凍しconfigure & make & make install
# tar zxvf lsyncd-1.xx.tar.gz # cd lsyncd-1.xx # ./configure # make # make install
makeでエラーが出ることがある。私の場合はlibxml2とlibxml2-devが足りませんでした。
その場合は apt-get install libxml2; apt-get install libxml2-dev で対処してみてください。
3./etc/rsyncd.conf の作成
/var/tmp/copyにバックアップを取る設定になっています。
uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/log/rsyncd.pid [data] comment = rsync server path = /var/tmp/copy hosts allow = localhost read only = false
詳しく説明するのはしっかりと動いてからのほうがよいように思いますがとりあえずrsync.confの詳細設定はコチラです。
4.rsyncの起動
# rsync --daemon
-
- daemon オプションを与えてあげてください。
# ps ax | grep rsync などで起動を確認してください。起動していない場合はrsync.confに間違いがある場合があります。
5.lsyncにバックアップ元の登録
# lsync /root/ localhost::data
上記の意味は /root/ のディレクトリをrsync.confで設定した[data]セクションの設定でバックアップを取るという意味です。rsync.confの設定にできることはコチラに書かれています。
6.やりたかったらどうぞ設定。起動コマンド /etc/init.d/rsync スクリプト
マシンが再起動したりした際にrsyncが動くようにするための第一ステップです。
これは動く最低限度のスクリプトです。改良してください。
#! /bin/bash start() { /usr/bin/rsync --daemon echo "Start rsync." } stop() { if [ `pidof rsync` ]; then /bin/kill `pidof rsync` fi echo "Stop rsync." } restart(){ stop start echo "Restart rsync."; } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: rsync [ start|stop|restart ]" exit 1 esac exit $?
lsyncの設定もこのスクリプトの中に投げてやればよいでしょう。そんなに難しくないです。
/etc/lsyncd.conf.xmlを書いて実行する方法もありますので上記の方法を軸にして最適な方法を見つけ出してください。