Назад | Перейти на главную страницу

Как проверить успешность резервного копирования с помощью rsync?

я использую rsync -a сделать полную резервную копию файловой системы. Его вывод на stderr пуст. Должен ли я сделать дополнительную проверку, чтобы убедиться, что резервное копирование прошло успешно?

Например, как мне проверить это с помощью контрольной суммы?

Когда я делаю инкрементное резервное копирование, используя rsync в следующий раз будет ли такой же способ проверки по контрольной сумме? Инкрементная резервная копия будет иметь жесткие ссылки на неизмененные файлы в полной резервной копии, и будет ли это отличать контрольные суммы исходного и инкрементного резервных копий, хотя добавочное резервное копирование выполнено успешно?

Моя ОС - Ubuntu 12.04. Спасибо.

Если вы проверите код выхода из rsync и он вернул 0 (успех), ошибок не должно было возникнуть. В сценарии оболочки сразу после выполнения rsync он будет в $? для борн-лайков и $status для [t] csh. Отсутствие вывода на stderr также является хорошим знаком, но я доверяю ему меньше, чем коду выхода.

В зависимости от сбоя резервное копирование с использованием --link-dest возможно, не было создано жестких ссылок, но сканирование контрольной суммы обнаружит это. Если жесткая ссылка создается во время rsync, он уже определил, что файлы идентичны, и не передавал данные файла вообще. Невозможно, чтобы контрольная сумма файла с жесткой связью могла отличаться от инкрементной и полной резервной копии.

Если полное резервное копирование не удалось, все инкрементальные копии, основанные на этом полном резервном копировании, являются подозрительными. Вообще говоря, rsync достаточно умен, чтобы выявить различия независимо от завершения полного резервного копирования, и в этом случае ваши последующие инкременты будут значительно больше, чем обычно. Я все равно был бы очень обеспокоен любой ошибкой в ​​процессе резервного копирования.

Слово предостережения, -c (контрольная сумма) заставит полностью перечитать каждый выбранный файл как в исходной, так и в целевой системе, независимо от отметки даты или размера файла, и значительно увеличит время и системный io, требуемый на обоих концах.


редактировать: Чтобы ответить на ваш последующий вопрос, time передаст код возврата из дочерней программы в родительскую, если не возникла ошибка. time, например, пользователь SIGTERM'd time.

DIAGNOSTICS
       The time command returns when the program exits, stops, or is terminated by a
       signal. If the program exited normally, the return value of time is the
       return value of the program it executed and measured. Otherwise, the return
       value is 128 plus the number of the signal which caused the program to stop
       or terminate.