Сохранение права собственности на файл с помощью 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 и разрешите вход в систему с парой ключей.