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秒ほど
若干タイムラグがあります
4・参考URL
インストールなどで参考にした
http://qiita.com/ftakao2007/items/41c5c0653892d1454c39
双方向同期について参考にしてやめた・・・
https://blog.cloudpack.jp/2015/03/03/use-running-as-delete-parameter-to-sync-bi-directionally-with-using-lsyncd/
sshdが立っていればrsyncdは必要がないっていう所でもっとも参考にした
http://ikm.hatenablog.jp/entry/2013/05/27/140336
excludesの部分に注意!!
excludeが正しいみたい
複数の設定で参考にした
http://www.shift-the-oracle.com/linux/utility/lsyncd-local.html
5・再起動の設定(2016/09/26追記)
上記の設定だと再起動時に同期されません
再起動は以下のファイルを修正する
vi /etc/rc.local
最後の行に下記を追加する
lsyncd -log scarce /etc/lsyncd/lsyncd.conf