rsnapshot push на сервер ОТ клиента
Я обнаружил, что rsnapshot - отличный инструмент для резервного копирования моих файлов для локальной файловой системы. Теперь мне нужно сделать файл rsnapshot_push.conf, в котором я передаю параметры серверу rsync. Как правильно это сделать? Могу ли я использовать rsync для /rsnapshot-backups/localhost/ синхронизировать его с сервером rsync.
2 ответа
Rsnapshot основывается на дизайне. Сила Rsnapshot заключается в использовании жестких ссылок, и это работает только для локальных файловых систем. (Можно использовать nfs, поскольку он поддерживает жесткие ссылки, но не, например, sshfs).
В сценарии push лучшее решение - просто передать в каталог резервного копирования на сервере с помощью rsync, а затем разрешить rsnapshot обрабатывать моментальные снимки из этого каталога, как это было задумано. Rsnapshot не заботится, были ли внесены изменения с помощью rsync или путем сохранения файла.
В FAQ по rsnapshot есть причудливое решение, которое запускает rsnapshot после rsync, но это может быть излишним. Просто запуск rsnapshot из заданий регулярного cron тоже работает.
Альтернативное решение - это rdiff-backup, однако это не дает хорошего представления каталога каждого снимка и требует запуска команд для восстановления файлов, что может усложнить быстрое восстановление.
Другой вариант - использовать обратный ssh-туннель, а затем "дистанционно" тянуть со стороны получателя:
#!/bin/bash -x
IVAL=${1:-hourly}
ssh -vNR 1998:localhost:22 example.com &
ssh example.com "rsnapshot -c pull-from-sender-rsnapshot.conf ${IVAL}"
где pull-from-sender-rsnapshot.conf
может содержать строку вроде:
backup localhost:1998/etc/ desktop-1
Это может быть вызвано cron на стороне отправителя, вызывая удаленный rsnapshot локально.
Я разработал rsnappush специально для решения той же проблемы, с которой вы столкнулись, и фактически наткнулся на ваш пост, потому что я искал предварительно построенное решение (которого еще не было).
СИНТАКСИС
rsnappush [-h] [-r RSYNC_OPT] [-q] SOURCE_PATH [ACCOUNT:]DEST_PATH
ОПИСАНИЕ
rsnappush - это оболочка для rsync(1), которая помогает в добавочных моментальных снимках на уровне файлов, которые передаются в место назначения. Неизмененные файлы жестко связаны. Файлы просто размещаются в каталоге для каждого снимка: DEST_PATH/backup-YYYYmmdd-HHMM/ для легкого доступа и восстановления.
SOURCE_PATH - это любой локальный путь.
DEST_PATH - это локальный или удаленный путь. В случае удаленного ACCOUNT указывает описание учетной записи, совместимое с ssh(1), например, USER@HOST.
Кроме того, в DEST_PATH существует каталог permissions/, который имеет сжатый вывод из getfacl(1). setfacl(1) может быть использован для восстановления прав доступа к этому файлу после его распаковки.
ПРИМЕР
rsnappush --rsync-opt=--partial-dir=/home/user2/rsync-partial \
/home/user user2@remotehost:backups/