lsyncdでファイルを同期してみよう
こんにちは、熊谷です。
最近、複数のサーバでファイルを同期しなければいけないということがありました。出来るだけ手軽で簡単にそれを行いたいということで、何か良い方法がないものか、聞いたり調べたりしたところ、lsyncdなるものがあるのでそれを使用してみるのも良いのではないかと、アドバイスを受けました。
そんなことで、こちらのサイトを参考に実際に使ってみました。
例として、同期元は192.168.1.10、同期先は192.168.1.20とします。
まずは、同期元(192.168.1.10)にてlsyncdをダウンロードしてきてインストールです。makeするなりパッケージを作るなりしてインストールします。
設定ファイルは/etc/lsyncd.conf.xmlとしてこんな感じで記述しました。
同期先(192.168.1.20)ではrsyncをデーモンとして起動させます。
rsyncの設定ファイルは/etc/rsyncd.confとしてこんな感じで記述しました。
で、同期元である192.168.1.10にてlsyncdを起動すると、その同期元の指定されたディレクトリ内でファイルの書き込みがあるたび192.168.1.20の指定されたディレクトリにファイルがrsyncされていきます。素晴らしい!
ちなみに、lsyncdの起動スクリプトはこんな感じに
このように、lsyncdを使用すると実に簡単手軽にファイルの同期をすることが出来るようになります。是非試してみてはいかがでしょうか。
最近、複数のサーバでファイルを同期しなければいけないということがありました。出来るだけ手軽で簡単にそれを行いたいということで、何か良い方法がないものか、聞いたり調べたりしたところ、lsyncdなるものがあるのでそれを使用してみるのも良いのではないかと、アドバイスを受けました。
そんなことで、こちらのサイトを参考に実際に使ってみました。
例として、同期元は192.168.1.10、同期先は192.168.1.20とします。
まずは、同期元(192.168.1.10)にてlsyncdをダウンロードしてきてインストールです。makeするなりパッケージを作るなりしてインストールします。
設定ファイルは/etc/lsyncd.conf.xmlとしてこんな感じで記述しました。
- <lsyncd
version="1"> <settings> <logfile filename="/var/log/lsyncd.log"/> <binary filename="/usr/bin/rsync"/> <pidfile filename="/var/run/lsyncd.pid"/> <callopts> <option text="-lt%r"/> <exclude-file/> <source/> <destination/> </callopts> </settings> <directory> <source path="/var/www/project/data"/> <target path="192.168.1.20::backup"/> </directory> - </lsyncd>
同期先(192.168.1.20)ではrsyncをデーモンとして起動させます。
rsyncの設定ファイルは/etc/rsyncd.confとしてこんな感じで記述しました。
- uid
= hoge - gid
= developer - log
file = /var/log/rsyncd.log - pid
file = /var/log/rsyncd.pid - [backup]
comment = rsync backup server path = /var/rsync/backup/ hosts allow = 192.168.1.10 read only = false
で、同期元である192.168.1.10にてlsyncdを起動すると、その同期元の指定されたディレクトリ内でファイルの書き込みがあるたび192.168.1.20の指定されたディレクトリにファイルがrsyncされていきます。素晴らしい!
ちなみに、lsyncdの起動スクリプトはこんな感じに
- #!/bin/bash
- DAEMON=/usr/bin/lsyncd
- USER=root
- NAME=lsyncd
- CONF=/etc/lsyncd.conf.xml
- PID=/var/run/lsyncd.pid
- case
"$1" in start) echo -n "Starting lsyncd: " start-stop-daemon --start --quiet --pidfile $PID --user $USER --name $NAME --startas $DAEMON -- --conf=$CONF --pidfile $PID echo "" ;; stop) echo -n "Stopping lsyncd: " start-stop-daemon --stop --quiet --pidfile $PID --user $USER --name $NAME echo "" ;; restart) echo -n "Restarting lsyncd: " start-stop-daemon --stop --quiet --pidfile $PID --user $USER --name $NAME start-stop-daemon --start --quiet --pidfile $PID --user $USER --name $NAME --startas $DAEMON -- --conf=$CONF --pidfile $PID echo "" ;; *) echo "Usage: lsyncd [ start | stop | restart ]" exit 1 - esac
- exit
$?
- #!/bin/bash
- DAEMON=/usr/bin/rsync
- USER=root
- NAME=rsyncd
- PID=/var/log/rsyncd.pid
- case
"$1" in start) echo -n "Starting rsync daemon: " start-stop-daemon --start --quiet --pidfile $PID --user $USER --name $NAME --startas $DAEMON -- --daemon echo "" ;; stop) echo -n "Stopping rsync daemon: " kill -9 `cat $PID` rm -f $PID echo "" ;; restart) echo -n "Restarting rsync daemon: " #start-stop-daemon --stop --quiet --pidfile $PID --user $USER --name $NAME kill -9 `cat $PID` rm -f $PID start-stop-daemon --start --quiet --pidfile $PID --user $USER --name $NAME --startas $DAEMON -- --daemon echo "" ;; *) echo "Usage: rsync [ start | stop | restart ]" exit 1 - esac
- exit
$?
このように、lsyncdを使用すると実に簡単手軽にファイルの同期をすることが出来るようになります。是非試してみてはいかがでしょうか。
コメントフォーム
トラックバック
最近の記事
- Symfony 2のアプリケーション構成を読む [2010年03月04日 : 小川雄大]
- サーバサイドJavaScriptの「node.js」を試してみました [2010年03月03日 : 中川善樹]
- お初の山梨旅行 [2010年02月26日 : 阿部恵]
- OpenVPNで拠点間VPN [2010年02月25日 : 門脇優児]
- OracleでのLIMITの記述あれこれ [2010年02月24日 : 松田惇]
- symfony DoctrineのTIPS その2 [2010年02月18日 : 牧野克俊]
- KeyRemap4MacBookで自分好みにキーをリマッピング [2010年02月15日 : 熊谷裕志]
- 株式会社アシックス社向け、ランナーのためのゲイトアナリシス・ソフトウェアの共同開発 [2010年02月12日 : 小林有佳]
- symfonyのFormで確認画面を実装する方法 [2010年02月10日 : 笹亀弘]
- 【AS3】「ActionScript3の、こんなときどうするの??」 [2010年02月09日 : 橋本章史]



最近のコメント