1) Настраиваете авторизацию рута по ключу на том сервере, с которого будете заливать бэкап (хорошая инструкция «для чайников» тут: http://lib.clodo.ru/linux-security/security-basics/ )
2) На том компьютере, на который будете заливать бэкап, открываете рутовский крон (sudo crontab -e)
3) Собственно команда (возможно, не идеальна по параметрам — но у меня работает и бэкапит с сохранением прав) бэкапа ежедневного в 2 часа ночи:
00 02 * * * rsync -h --progress --stats -r -tgo -l -p -D --delete-after -e ssh root@IP_servera:/директория/которую/надо/бэкапить/ /директория/в/которую/бэкапим/
Авторизация по ключам(т.е. без паролей) настроена между этими двумя серверами. Если запустить команду из п.3 - rsync попытается зайти на резервный сервер(s2) по ssh с правами root, а так как доступ к руту напрямую закрыт("PermitRootLogin no" в sshd_config), то и забекапить с сервера s1 на s2 - не получится.
В том-то и вопрос, чтобы зайти рсинком по ссш обычным юзером(имеющий права сделаться рутом) и забекапить информацию уже с правами рута.
Пользователь решил продолжить мысль 11 Мая 2011, 17:14:21:
cp -p делает тоже самое
можно и через rsync
только тут я вам 1-у команду не скажу.
там надо потратить время на настрйоку демона.
Про настройку демона почитал и как понял, в его настройках прописываются директории, куда будут складироваться бэкапы, но там же выставляются и права/владелец на эти "опубликовнанные" директории. Если же у меня в /var/mail - два ящика с разными владельцами - получается, на каждого нужно в rsyncd.conf писать отдельный модуль:
/etc/rsyncd.conf
[company-1]
comment = maildb company-1
path = /var/mail/company-1
use chroot = true
uid = company-1
gid = company-1
log file = /var/log/rsyncd/backl_company-1.log
read only = false
write only = false
hosts allow = s1 s2
hosts deny = *
transfer logging = false
[company-2]
comment = maildb company-2
path = /var/mail/company-2
use chroot = true
uid = company-2
gid = company-2
log file = /var/log/rsyncd/backl_company-2.log
read only = false
write only = false
hosts allow = s1 s2
hosts deny = *
transfer logging = false
Так получается?