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

広告

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *