2 つのホスト間でデータを同期するように lsyncd をセットアップしました。ssh 接続は、id_rsa ID ファイルが一致するユーザー tomcat を使用するように構成されています。何らかの理由で、リモートでの追加/作成は正常に機能しますが、削除は機能しません。rsync がファイルを削除しようとすると、Tomcat ユーザー (作成/追加に使用される) ではなく、root ユーザーが宛先ホストへの接続に使用されます。
ログ ( /var/log/lsyncd/lsyncd.log ) には次のように表示されます。
Wed Feb 15 13:48:24 2017 Normal: Rsyncing list
/test.txt
Wed Feb 15 13:48:26 2017 Normal: Finished (list): 0
Wed Feb 15 13:48:34 2017 Normal: Deleting list
/myfolder//test.txt
Received disconnect from 10.29.146.78: 2: Too many authentication failures for root
Wed Feb 15 13:48:41 2017 Normal: Retrying (list): 255
以下の構成 ( /etc/lsyncd.conf )を使用します。
settings{
pidfile = "/var/run/lsyncd.pid",
statusFile = "/var/tmp/lsyncd.status",
logfile = "/var/log/lsyncd/lsyncd.log",
statusInterval = 60,
logfacility = "user",
logident = "lsyncd",
inotifyMode = "CloseWrite",
maxProcesses = 10,
}
sync {
default.rsyncssh,
source = "/myfolder/",
delete = true,
host = "remote-host",
targetdir = "/myfolder/",
excludeFrom = "/etc/lsyncd/lsyncd.exclude",
delay = 5,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
owner = true,
compress = true,
_extra = { "--bwlimit=50000", "--delete-after" },
rsh = "/usr/bin/ssh -l tomcat -i /usr/share/tomcat6/.ssh/id_rsa",
}
}
回避策として、/root/.ssh/configファイルを次のように使用できます。
Host remote-host
Hostname remote-host
User tomcat
IdentityFile /usr/share/tomcat6/.ssh/id_rsa
もちろん、lsyncd.conf 構成で動作するはずなので、これを使用する必要はありません。
lsyncd バージョン 2.1.4を使用しています