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」の出番だ。この設定を入れれば、オーナー、グルーオプ情報を保持した同期をしてくれる。
広告