Я реализовал многосерверную систему резервного копирования, которая работает достаточно эффективно.
У меня есть резервный сервер с большим дисковым массивом, и каждую ночь он запускает rsnapshot для резервного копирования соответствующих данных на всех серверах в локальной сети (linux / windows). Подключение к серверу осуществляется через обычные ssh-соединения.
Это соответствующая (упрощенная) часть моего rsnapshot.conf:
...
backup user@server-one:/etc/ backup-server-one/
backup user@server-one:/opt/ backup-server-one/
backup user@server-two:/etc/ backup-server-two/
backup user@server-two:/var/ backup-server-two/
backup user@server-three:/etc/ backup-server-three/
backup user@server-three:/home/user/ backup-server-three/
...
Все идет нормально. Проблема в том, что, когда по какой-то причине происходит сбой одной резервной копии (обычно из-за того, что этот сервер не работает ...), весь процесс rsnapshot умирает, и все последующие снимки не выполняются ...
Вопрос в следующем: можно ли убедить rsnapshot перейти к следующему «бэкапу» даже в случае ошибки?
Я реализовал решение ... В подпрограмме handle_rsync_error
Я изменил
if (0 == $retval) { bail('retval == 0 in handle_rsync_error() ('.$$bp_ref{'src'}.')'); }
с участием
if (0 == $retval) {
print_err ("$config_vars{'cmd_rsync'} error 0 on $$bp_ref{'src'} (check host is up and accepting ssh connections...)", 2);
syslog_err("$config_vars{'cmd_rsync'} error 0 on $$bp_ref{'src'} (check host is up and accepting ssh connections...)");
}
Сейчас тестирую, но уверенно ... :-)
@MarcoS: приятно ;-)
Я написал себе rsnapshot-обертка и иметь один файл конфигурации для одного хоста, поэтому даже если один запуск rsnapshot завершится неудачно, он будет продолжен со следующим.