lsyncで所有ユーザー・グループを保持したまま同期させる方法
lsync+rsyncでファイルを同期する際に、使用するユーザーを指定することができる。
対象のサーバにパスフレーズなしの鍵でSSHログインできることが前提で、以下のように設定する。
広告
$ cat /etc/lsyncd.conf
settings{
insist = true,
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/tmp/lsyncd.stat",
statusInterval = 1,
}
sync{
default.rsyncssh,
source="/home/kusanagi/dacelo_space/DocumentRoot/wp-content/uploads/",
host="dacelo@dacelo.space",
targetdir="/home/kusanagi/dacelo_space/DocumentRoot/wp-content/uploads/",
rsync = {
archive = true,
compress = false,
whole_file = false,
rsh = "/usr/bin/ssh -l dacelo -i /home/dacelo/.ssh/id_rsa"
},
ssh = {
port = 22
}
}
ただしこれだと、WordPressなどWebアプリがアップロードしたファイルを動悸した際に、ユーザー権限になってしまい、片方では操作できないなどの不具合が生じる。そんな場合は、ユーザーを指定せず、root権限で同期させよう。
sync{
default.rsyncssh,
source="/home/kusanagi/dacelo_space/DocumentRoot/wp-content/uploads/",
host="dacelo.space",
targetdir="/home/kusanagi/dacelo_space/DocumentRoot/wp-content/uploads/",
rsync = {
archive = true,
compress = false,
whole_file = false,
owner = true,
group = true
},
ssh = {
port = 22
}
}
ただしその場合、今度はファイルがroot:rootになってしまう。そこで上記オプション「owner = true, group = true」の出番だ。この設定を入れれば、オーナー、グルーオプ情報を保持した同期をしてくれる。