lsync + rsync で同期する

概要

rsyncはlinuxでよく利用されるディレクトリを同期させるコマンド
lsync(Live Syncing Daemon)はリアルタイムで同期ができる(Luaを利用して拡張可能)コマンド
ディレクトリを監視し、ファイルが増えたらそのファイルを送る

hostsyn:sync元のホスト
hosttarget:sync先のホスト
/var/sync: 同期するフォルダ
イメージ:
2014-08-24_221740

設定-hostsyn-

root@hostsyn:/home/shimizu# aptitude install lsyncd rsync
以下の新規パッケージがインストールされます:
  lsyncd lua5.1{a} rsync
root@hostsyn:/home/shimizu# /etc/init.d/lsyncd start # 反応がないため確認すると
root@hostsyn:/home/shimizu# lv /etc/init.d/lsyncd # config(/etc/lsyncd/lsyncd.conf.lua)がないため、静かに終了していた
root@hostsyn:/home/shimizu# mkdir /etc/lsyncd
root@hostsyn:/home/shimizu# cp /usr/share/doc/lsyncd/examples/lrsync.lua /etc/lsyncd/lsyncd.conf.lua
root@hostsyn:/home/shimizu# vi /etc/lsyncd/lsyncd.conf.lua
=====
----
-- 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="/var/sync/",
        target="(hosttargetのIPアドレス)::lsyncdModule",
}
=====
root@hostsyn:/home/shimizu# /etc/init.d/lsyncd start
root@hostsyn:/home/shimizu# ps afx | grep "[l]sync"
18578 ?        Ss     0:00 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua
18595 ?        S      0:00  \_ /usr/bin/rsync --delete --ignore-errors -lts -r /var/sync/ 54.178.255.7::lsyncdModule/

デフォルトで完全同期(rsync –delete)する
避けたい場合は、設定ファイルに delete = false を記載する

設定-hosttarget-

root@hosttarget:/home/shimizu# aptitude install rsync
以下の新規パッケージがインストールされます:
  rsync
root@hosttarget:/home/shimizu# vi /etc/default/rsync
=====
RSYNC_ENABLE=true
=====
root@hosttarget:/home/shimizu# /etc/init.d/rsync start
[FAIL] Starting rsync daemon: rsync[....] missing or empty config file /etc/rsyncd.conf ... failed!
 failed!
root@hosttarget:/home/shimizu# cp -p /usr/share/doc/rsync/examples/rsyncd.conf /etc/
root@hosttarget:/home/shimizu# vi /etc/rsyncd.conf
====
uid = root
gid = root

[lsyncdModule]
    path = /var/sync/
    hosts allow = (hostsyncのIPアドレス)
    read only = no
====
root@hosttarget:/home/shimizu# /etc/init.d/rsync start
[ ok ] Starting rsync daemon: rsync.
root@hosttarget:/home/shimizu# netstat -anp | grep "rsync"
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      23433/rsync
tcp6       0      0 :::873                  :::*                    LISTEN      23433/rsync
unix  2      [ ]         DGRAM                    70600    23433/rsync

その他設定

同期するファイルが多い場合は設定を変更する
カーネルの inotify が同期するファイルを監視しており、監視するファイル数は設定値による(デフォルト8192)

root@hostsyn:/var/sync# sysctl -a | grep fs.inotify.max_user_watches
fs.inotify.max_user_watches = 8192
root@hostsyn:/var/sync# vi /etc/sysctl.conf
====
fs.inotify.max_user_watches=524288
====
root@hostsyn:/var/sync# sysctl -p
fs.inotify.max_user_watches = 524288

参考URL

lsync公式ドキュメント
https://code.google.com/p/lsyncd/

設定がわかりやすくかかれているサイト
http://www.very-cute.net/wp/lsyncd-rsyncd/

とても詳細までかかれているサイト
http://server-setting.info/centos/lsyncd-rsync-realtime.html

同期のタイミングと注意点
http://www.hiratti.com/server/unix/lsync_rsync_mirroring_caution

1件のコメントがあります

  1. memo

    ・sync先のホストでrenameしたらそのまま残る、削除されたりしない
    ・sync元のホストで更新したらsync先で上書きされる
    ・sync先のホストでrenameした後、sync元のホストでそのファイルを更新すると、sync先で新しくファイルが作成される

コメントは受け付けていません。