Сохранение права собственности на файл с помощью Lsyncd

У меня есть два сервера: исходный сервер и целевой сервер. Я хочу использовать lsyncd для синхронизации файлов в каталоге на исходном сервере с другим каталогом на целевом сервере.

В моем ssh-демоне на обоих серверах у меня отключены root-логины (PermitRootLogin no) поэтому я не могу использовать пользователя root для запуска lsyncd через ssh.

Я создал пользовательский "синхронизатор" на обоих серверах, у которого есть пара ключей, позволяющая входить по ssh без пароля с исходного сервера на целевой. Так что это работает:

[syncer@source-server]$ ssh syncer@target-server

Мой lsyncd.conf выглядит так:

settings = {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd.stat",
    statusInterval = 2
}


sync {
    default.rsync,
    source="/var/www/html/",
    target="target.server.ip:/backup/",
    rsync = {
        rsh ="/usr/bin/ssh -l syncer -i /home/syncer/.ssh/id_rsa",
        compress = true,
        acls = true,
        xattrs = true,
        archive = true
    }
}

И это работает, за исключением того, что владелец реплицированных файлов на целевом сервере всегда является "синхронизатором". Разрешения источника соблюдаются и корректно реплицируются на цель. Я просто не могу найти способ сохранить владельца (и группу) реплицированных файлов. (то есть, если файл в источнике принадлежит 'deknuth', я бы хотел, чтобы синхронизированный файл в целевом объекте также принадлежал 'deknuth', а не 'syncer').

ТИА

1 ответ

Чтобы закрыть это, использование пользователя без полномочий root всегда будет перемещать файл с тем пользователем без полномочий root, который является владельцем в месте назначения, независимо от того, кто владел им в источнике. Это может быть приемлемым. Если нет, запустите lsyncd от имени пользователя root и разрешите вход в систему с парой ключей.

Другие вопросы по тегам