lsyncdというリアルタイムでの同期の
ソフトがあると聞いて
とあるプロジェクトにいれてみた
マスタ → スレブの構成です
双方にすると削除の時にリスクがあるみたいなので
やめました
1・インストール
標準だとリポジトリがないので追加する
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install lsyncd --enablerepo=epel
yum install rsync
2・設定ファイル作成
フォルダをつくって、ファイルを作成する
mkdir /etc/lsyncd
vim /etc/lsyncd/lsyncd.conf
以下設定内容
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd-status.log", -- 最新の処理結果が書かれる
pidfile = "/var/log/lsyncd/lsyncd.pid",
maxProcesses = 2, -- 同時にsyncを走らせる数
nodaemon = false, -- falseだとdaemonになる。デフォルトはtrue
insist = 1, -- 起動時に接続に失敗しても再接続を試み続ける
}
sync {
default.rsync,
source = "/var/www/Project_st/datas/", -- 監視対象のディレクトリ。rsyncのSRCに相当
target = "192.169.1.2:/var/www/Project_st/datas/", -- 同期先のホスト名+ディレクトリ。rsyncのDESTに相当
exclude={"/logs/","cache"}, -- 監視対象外のディレクトリ(ソースからみたディレクトリを記載する。相対パスになる)
rsync = {
archive = true,
links = true,
update = true,
verbose = false,
rsh = "/usr/bin/ssh -p 22 -i /var/opt/192.169.1.2.sshkey.txt", -- 接続時に使うsshコマンド。ポートや鍵のファイルはここで指定できる
_extra = {
"--bwlimit=10000"
}
}
}
sync {
default.rsync,
source = "/var/www/Project_st/public/pf/", -- 監視対象のディレクトリ。rsyncのSRCに相当
target = "192.169.1.2:/var/www/Project_st/public/pf/", -- 同期先のホスト名+ディレクトリ。rsyncのDESTに相当
rsync = {
archive = true,
links = true,
update = true,
verbose = false,
rsh = "/usr/bin/ssh -p 22 -i /var/opt/192.169.1.2.sshkey.txt", -- 接続時に使うsshコマンド。ポートや鍵のファイルはここで指定できる
_extra = {
"--bwlimit=10000"
}
}
}
sync {
default.rsync,
source = "/var/www/Project/datas/", -- 監視対象のディレクトリ。rsyncのSRCに相当
target = "192.169.1.2:/var/www/Project/datas/", -- 同期先のホスト名+ディレクトリ。rsyncのDESTに相当
exclude={"/logs/","cache"}, -- 監視対象外のディレクトリ(ソースからみたディレクトリを記載する。相対パスになる)
rsync = {
archive = true,
links = true,
update = true,
verbose = false,
rsh = "/usr/bin/ssh -p 22 -i /var/opt/192.169.1.2.sshkey.txt", -- 接続時に使うsshコマンド。ポートや鍵のファイルはここで指定できる
_extra = {
"--bwlimit=10000"
}
}
}
sync {
default.rsync,
source = "/var/www/Project/public/pf/", -- 監視対象のディレクトリ。rsyncのSRCに相当
target = "192.169.1.2:/var/www/Project/public/pf/", -- 同期先のホスト名+ディレクトリ。rsyncのDESTに相当
rsync = {
archive = true,
links = true,
update = true,
verbose = false,
rsh = "/usr/bin/ssh -p 22 -i /var/opt/192.169.1.2.sshkey.txt", -- 接続時に使うsshコマンド。ポートや鍵のファイルはここで指定できる
_extra = {
"--bwlimit=10000"
}
}
}
-- exclude="/subdir**", ワイルドカードによる指定も可能
-- exclude="/*/", サブディレクトリすべて
-- exclude={"*.log", "/*/"}, ファイル名にも指定可能
--除外指定を行なうと logs(ファイル) , /logs/ (ディレクトリ)が除外対象となる。
--つまり /test/logs/ はマッチするので除外対象となるが /logss/ は除外対象にはならない。
-- 同期したいフォルダが複数ある場合はsyncを作っていく
3・起動停止
#デーモンの起動
lsyncd -log scarce /etc/lsyncd/lsyncd.conf
#デーモンを停止する場合
kill -KILL $(cat /var/log/lsyncd/lsyncd.pid)
簡単にできた!!
実際に動かしてみると1秒から2秒ほど
若干タイムラグがあります
5・再起動の設定(2016/09/26追記)
上記の設定だと再起動時に同期されません
再起動は以下のファイルを修正する
vi /etc/rc.local
最後の行に下記を追加する
lsyncd -log scarce /etc/lsyncd/lsyncd.conf