lsyncd
inotify と rsync を C言語とlua で結合した軽量ミラーリングシステム(デーモン)
inotifyでファイルの変更を検知し、rsyncで同期処理を行う
大規模なファイル同期システムとして bfsync 等がある
install)
Fedora系)
sudo yum install lua lua-devel rsync
sudo yum install lsyncd
Ubuntu系)
sudo apt-get install lsyncd
lsyncd.conf)
設定ファイルは luaファイルなので -- がコメント行
-- lsyncd.conf sample
-- lsyncd -log all lsyncd.conf
-- sudo cp lsyncd.conf /etc
--
settings {
logfile = "/var/log/lsyncd.log",
statusFile = "/tmp/lsyncd.status",
nodaemon = false,
maxProcesses = 4,
statusInterval = 1
}
sync {
default.rsync,
source = "/home/proj/",
target = "/opt/Backup/proj/",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
ipv6 = false,
compress = false
}
}
sync {
default.rsync,
source = "/home/data/",
target = "dac72::Soft/",
excludeFrom = "/home/data/Lsyncd/exclude_files.txt",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
ipv6 = false,
whole_file = false,
compress = false
}
}
sync { ...
---------
exclude_files.txt の例
/Mail/
/tmp/
使い方
rsync サーバーが起動している事を確認
同一ホスト内でだけ使用する場合にはサーバー起動の必要はない
デーモンを起動するのが一般的だが
コマンドラインからも使用出来る
lsyncd -rsync /Data2/Backup/data/ /home/data/
lsyncd -log all lsyncd.conf
rsyncd サーバーの設定
max connections = 12
lsyncd.conf のsyncの数より大きい事、または
lsyncd のプロセス数を maxProcesses で制限する
lsyncd.conf で
maxProcesses = 6,
inotify の設定
inotifyは監視できるファイル数の上限が max_user_watches で設定されています。
デフォルトでは8192個までしか監視できないので、sysctl でパラメータを変更する。
確認)
sysctl -a | grep fs.inotify
fs.inotify.max_user_watches = 8192
変更)
edit /etc/sysctl.conf (/etc/sysctl.d/xxx.conf)
fs.inotify.max_user_watches=524288
sudo sysctl -p
lsyncd デーモンを起動する
Fedora系)
sudo cp lsyncd.conf /etc
sudo systemctl enable lsyncd.service
sudo systemctl start lsyncd.service
Ubuntu系)
sudo mkdir /etc/lsyncd
sudo cp lsyncd.conf /etc/lsyncd/lsyncd.conf.lua
sudo edit /etc/default/rsync
RSYNC_ENABLE=true
sudo edit /etc/init/lsyncd.conf
------------------------------------------------------
description "lsyncd file syncronizer"
start on (starting network-interface
or starting network-manager
or starting networking)
stop on runlevel [!2345]
expect fork
respawn
respawn limit 10 5
exec /usr/bin/lsyncd /etc/lsyncd/lsyncd.conf.lua
-----------------------------------------------------------
デーモン設定の確認
sudo initctl check-config lsyncd
sudo initctl start lsyncd