環境
- CentOS 7系
- SELinux
準備
- プロキシの指定方法 - Qiita
- Extra Packages for Enterprise Linux (EPEL) 導入
yum install epel-release
sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
説明のために、同期元のディレクトリを`/tmp/original`として同期先のディレクトリを`/tmp/target`とする
# インストール
```bash
yum --enablerepo=epel install lsyncd
- lsyncd.conf の編集
cp -ip /etc/lsyncd.conf{,.org}
vi /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync{
default.rsync,
source = "/tmp/origin",
target = "/tmp/target",
rsync = {
archive = true,
compress = true
},
delete = false
}
詳しくは、作者作成の Manual を参照
/etc/sysconfig/lsyncdの編集(任意)
lsyncdのログレベルを変更するために、起動時のオプションを変更する
cp -ip /etc/sysconfig/lsyncd{,.org}
vi /etc/sysconfig/lsyncd
LSYNCD_OPTIONS="-log Inotify"
ログファイル用準備
mkdir -m 700 /var/log/lsyncd && chcon -R -u system_u "/var/log/lsyncd"
systemctl restart rsyslog
デーモンに登録
systemctl start lsyncd
systemctl enable lsyncd
トラブル対応
ログは/var/log/lsyncd/lsyncd.log
に保存されているので、トラブルがある時は眺めてみる
Error: Terminating since out of inotify watches.
inotifyで監視しているディレクトリ数が上限に達しているのが原因
/etc/sysctl.conf
を修正しサービスを再起動する。/var/log/lsyncd/lsyncd.status
にinotifyが現在監視しているディレクトリ数が出力されています。
cp -ip /etc/sysctl.conf{,.org}
vi /etc/sysctl.conf
fs.inotify.max_user_watches = 819200
sysctl -p
SELinux関連
CentOS 6系だとSELinux関連のセキュリティ保護が働いていたので、備忘のために。
SELinuxの設定を変更
Red Hat Enterprise Linuxの製品マニュアル第12章 rsyncを参考にした
-
ラベルの適用
chcon -R -t public_content_rw_t '/tmp/target'
2. Booleanの変更
```bash
setsebool -P allow_rsync_anon_write on
rsync: Permission denied (13)
rsync によるNFSおよびCIFSのエクスポートを許可する(どちらか片方で良いかも…)
-
SELinuxのBooleanを変更をする
setsebool -P rsync_export_all_ro on
- rsync によるCIFSのエクスポートを許可する
```bash
setsebool -P rsync_use_cifs on