”lsyncd”を使えば、メインファイルサーバー上でファイルが修正・追加・削除が行われたら、すぐにレプリケートサーバーに転送する設定は行えます。
ただ、まだしっかりと”lsyncd”の設定方法を振り返り・検証を行っていませんので、とりあえず、cronでスクリプトを定期的に動かして、メインファイルサーバー上のファイルシステムを定期的に複製する事にしました。
【注*1】
- 小生の健忘禄、兼作業記録になっていますことをお詫び申し上げます🙇♂️
昔、”Vine Linux4.2”と"FreeBSD8.4"で”lsyncd”を試したことがありますが、当時は、”FreeBSD”上ではlsyncdを動かすことが出来なかったので、途中で検証をやめてしまいました😅。。。。
現在は、FreeBSDで"lsyncd"を使うことが出来る様ですが、設定方法を完全に忘れているのと、動作の確認を終えていません😅。
”lsyncd”の検証を終えるまでの間、メインファイルサーバーのファイルシステムのバックアップは定期的に取っておきたいところですので、とりあえず、手前勝手なスクリプトとcrontabで最低限のバックアップを取るようにしておくことにしました(*2)😅。
1. スクリプト作成(参考)
各種サーバーで使うことを前提に、共通化できる部分を1つのスクリプトにし、各サーバー固有の設定は、共通化スクリプトにパラメータを与えて実行することで、メンテナンス性を考慮してみました。
(1)共通スクリプト
まずは、各サーバーで共通のスクリプトを作成します。
| root@mainsv:# vi /share/scripts/common/rsync_sv2sv.sh |
下記の内容で作成します。
|
#!/bin/sh RSYNC=/usr/local/bin/rsync if [ "$RHOST" == "" ]; then if [ "$RDIR" == "" ]; then if [ $PARAMFLAG -eq 1 ]; then SERVNET=`/usr/bin/netstat -nr | /usr/bin/grep -q 192.168.[aaa+1].0` $RSYNC -avhz $RSYNCOPTS --rsync-path='sudo /usr/local/bin/rsync' -e "ssh -i /root/rsync/.ssh/rsync" _rsync@$RHOSTNAME:/$RDIR/ /Replicate/$RHOST/$RDIR/ |
|
rsyncの”--delete”オプション(*3)はあえて、必要に応じて”3つ目のパラメータ”で与えることにして、ハードコーディングはしないことにしました🤔。
結果的に、3つ目のパラメータを与えない場合、コピー元で削除されたファイルが、コピー先で削除されないので、レプリケートサーバー側のディスクがひっ迫することもあり得ます😅。
ただし、誤って、メインファイルサーバーで削除したファイルも、レプリケートサーバー上に残っているので、回復できるメリットもあります😀。
運用しながら、レプリケートサーバー側のディスクがひっ迫してきらたら、手動でスクリプトを”--delete”オプションを与えて実行して整理する事にしました😀。
(2)Replicateサーバー用スクリプト
Replicateサーバー専用のスクリプトを作ります。
| root@mainsv:# vi /share/scripts/replsv/rsync_mainsv2replsv.sh |
下記の内容で作成します。
(3)スクリプトのテスト
スクリプトが機能するか確認します。
| root@replsv:# /share/scripts/ares/rsync_mainsv2replsv.sh |

スクリプトで--delete”オプションを与えた行については、メインファイルサーバー上で削除されたフォルダはrsyncによってコピー先でも削除されています😀。
2. crontabの設定
crontabを設定します。
| root@replsv:# crontab -e |
下記の内容で作成します。
|
0 * * * * /share/scripts/replsv/rsync_mainsv2replsv.sh |
毎時0分に実行。
|
”/var/log/cron”を確認して、スクリプトが起動されたかを確認しておきます。
| root@replsv:# tail -f /var/log/cron |

【次回に続く予定】