lsync ver 2 †lsyncの説明 †詳細は下記のver1と同じなので省略 また、以下のlsyncd-2.1.4からlsyncdのオプションが大きく変わってしまっている。 環境 †OS:CentOS release 6.4 (Final) 64bit インストール・設定 †インストール †CentOS6.4には標準パッケージで用意されていないので、rpmforgeからインストールする。 # yum -y install lsync # rpm -ql lsyncd-2.1.4-1.el6.rf.x86_64 一緒にインストールされた*.luaと言うのがサンプルの様なもの。
設定 †ミラー元とミラー先の設定を行う。 1. 設計をする。 ローカルのディレクトリを常にnfs先のディレクトリに同期させたい、という設計。 2. 設定ファイルを/etcに置く。 3.設定をする。 # cp -p /usr/share/doc/lsyncd-2.1.4/examples/lrsync.lua /etc/lsyncd.conf # vim /etc/lsyncd.conf ---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings = { logfile = "/var/log/lsyncd.log" statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="/home/hogehoge/mydir", target="/mnt/nfs_storage" } # /etc/init.d/lsyncd start TIPS: 22 if [ -e /etc/sysconfig/lsyncd ]; then 23 /etc/sysconfig/lsyncd 24 fi この部分をまんまコメントアウトしてあげた。 ファイル数の上限 †lsyncdで監視出来るファイルの上限はkernelで管理しているらしく、defaultの設定では8192になっている。 lsyncd: Error, Terminating since out of inotify watches.#012Consider increasing /proc/sys/fs/inotify/max_user_watches max_user_watchesが現在の最大監視ファイル数になる、 変更は # vim /etc/sysctl.conf kernelを再読み込み # /sbin/sysctl -p # cat /proc/sys/fs/inotify/max_user_watches ログ設定 †どのファイルを作成(同期)して、どのファイルを削除したのかをログから確認したい場合、デフォルトの設定だと分かりにくい。 # vim /etc/init.d/lsyncd OPTIONS="-log Inotify -pidfile /var/run/lsyncd.pid /etc/lsyncd.conf" OPTION行に-logと記述する。 オプションについて †lsyncdのオプションについて冒頭でも簡単に説明したが、以前のバージョンとかなり変わってしまっているため、以下に補足する。 具体例 settings = { logfile = "/var/log/lsyncd.log" statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="/home/hogehoge/mydir", target="/mnt/nfs_storage" rsync={ owner=true, group=true, perms=true, }, } 以前は"rsyncOps"と書いていた部分が上記の様に変更されていて、 ここではowner,group,permsのそれぞれをtrueにした。 テスト †lsyncがうまく動いていくれるか、どれくらいの時間で同期が完了するかテストをしたので、その時のスクリプトを記述。 lsync ver 1 †lsyncの説明 †lsyncは割と単純なので一つのページで説明。 lsyncはリアルタイムでリモート先ディレクトリとデータの同期を取る等に使用する。 lsyncの同期方法をググるとxinet経由で使用しているものがあるが、今回はxinetを使用しない。
最後に書いた太線部分は、ftp等で間違ってアップロードされた場合、大きな問題になるかもしれないので注意が必要。 設定方法 †rsync(クライアント側) †最後にlsyncを立ち上げたときにわかりやすいので、クライアント側から設定する。 # rpm -qa | grep rsync 設定ファイル:rsyncd.conf gid = users read only = true use chroot = true transfer logging = true log format = %h %o %f %l %b log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = trusted.hosts slp refresh = 300 use slp = false #[Example] # path = /home/Example # comment = An Example # auth users = user # secrets file = /etc/rsyncd.secrets 編集後 # more /etc/rsyncd.conf #gid = users #read only = true #use chroot = true transfer logging = true log format = %h %o %f %l %b log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid #hosts allow = trusted.hosts slp refresh = 300 use slp = false hosts allow =* use chroot =no max connections=5 [rsync] path=/home/hogehoge/public_html uid = root gid = root read only = false 説明 [rsync] path=/home/hogehoge/public_html uid = root gid = root read only = false []で括られた部分がモジュール名。lsync側の設定で必要になる。 最後にrsyncを起動させる。 # /etc/init.d/rsyncd restart # ps -ef | grep rsyncd lsync(サーバ側) †基本的にyumやyastなどのレポジトリには含まれていないのでソースからダウンロードしてくる。 # cd /usr/local/src # wget http://code.google.com/p/lsyncd/downloads/detail?name=lsyncd-1.37.tar.gz&can=2&q= # tar zxvf lsyncd-1.37.tar.gz # cd lsyncd-1.37 # ./configure # make # make install 特に依存関係でエラーは出なかった(OpenSuSE11.2)。 # more /etc/lsyncd.conf.xml <lsyncd version="1"> <settings> <logfile filename="/var/log/lsyncd"/> <binary filename="/usr/bin/rsync"/> <pidfile filename="/var/run/lsyncd.pid"/> </settings> <directory> <source path="/home/hogehoge"/> <target path="192.168.0.1::rsync/"/> </directory> </lsyncd> 色々調べてみると、上記の設定ファイルで必要な箇所が決まっているので、別に設定ファイルを用意するようにした。 # more /etc/lsyncd.conf /home/hogehoge/public_html 192.168.0.1 rsync 同期させたいディレクトリ リモートホスト リモートホスト側のrsyncモジュール名(クライアント側で説明したもの) 上記のlsyncd.confファイルを作成してしまえば、特にxmlファイルは必要ない(?) lsyncdの起動スクリプトを作成し起動させる。 # chmod +x /etc/init.d/lsyncd # /etc/init.d/lsyncd start # ps -ef | grep lsyncd 注意点としては、rynscしているクライアント側とsyncが出来ていないとプロセスが上がらない可能性があること。 参考 †http://wadap.hatenablog.com/entry/20100123/1264211202 |