Что произойдет, если rsnapshot / rdiff-backup будет прерван во время передачи?

20

Вопрос говорит сам за себя:

Что произойдет, если rsnapshot или rdiff-backup прервется во время передачи?

Я знаю, что rsnapshot пытается сделать полный снимок вашей системы поочередно, а rdiff-backup создает дифференциальное резервное копирование, которое будет основано на файлах, ранее сохраненных за ним.

Итак: что произойдет, если это будет прервано в середине?

Это приводит к «неполному снимку»?

Будут ли повреждены другие снимки, которые зависят от этого? (Конечно, нет, но ...?)

э.д.с.
источник
1
Разве не было бы намного яснее, если бы вы разделили этот вопрос на два отдельных вопроса?
Андол
2
@andol Если бы он искал информацию о том, как оправиться от прерванного перевода, я думаю, что было бы лучше, если бы он был в двух вопросах. Я интерпретировал, что это скорее запрос на сравнение того, сколько проблем вы бы испытали, если бы использовали каждую утилиту, хотя, как будто это вариант «помогите мне решить, какой использовать».
rndrük 15.10.10
Спасибо Андол; но нет, я думаю, что это один вопрос. По сути, «что произойдет, если rsnapshot / rsync прервется в середине передачи?», И я думаю, что инструменты охватывают одну конкретную нишу, так что это не требует ИМО двух отдельных вопросов. Я поставил вопрос о «неполном снимке» как один из потенциальных результатов для разъяснения.
EMF

Ответы:

22

Я понимаю, что ...

rdiff-backup обнаружит неполное приращение при следующем запуске. Он удалит неполное приращение, так что место резервного копирования будет таким же, как если бы прерванная попытка резервного копирования никогда не запускалась.

rsnapshot немного сложнее, потому что его процедура более пошаговая и варьируется в зависимости от использования параметров sync_firstи use_lazy_deletes.

  • Если вы используете sync_firstи rsnapshot syncполучаете прерывание, вы можете просто запустить rsnapshot syncснова, чтобы все уладить. Если вы случайно запустите rsnapshot <backup level>этот момент, последняя точка резервного копирования останется неполной и будет перенесена через повороты.
  • Если вы не используете sync_first, вы просто застряли с неполной резервной точкой, которая является гибридом старой и новой версий файлов. Если вы вручную не поверните в обратном порядке каждую точку резервного копирования, неполная точка резервного копирования будет перенесена через повороты.
  • В обоих случаях выполнение rsnapshot <backup level>приведет к потере самой старой точки резервного копирования, если use_lazy_deletesона не включена.

Обратите внимание, sync_firstи use_lazy_deletesза счет использования большего дискового пространства.


Напоминание / отказ от ответственности: это само собой разумеется, но никогда не следует слепо доверять советам других в Интернете. Если вы планируете использовать rdiff-backup или rsnapshot для чего -то критически важного , прочитайте каждое слово руководства и протестируйте, протестируйте, протестируйте все сами!

ændrük
источник
1
Заметное напоминание и хорошая практика, чтобы идти в ногу с такой культурой «правильных методов», мы не хотим, чтобы linux превратился в тупую страну потребителей. Спасибо за примечание.
EMF
Итак, правильное понимание: наличие неполной резервной копии, «проведенной через ротации» для rsnapshot, будет означать две вещи: 1. Этот моментальный снимок будет неполным, если вернуться к нему позже 2. Любые снимки более высокого уровня будут по- прежнему завершены , но не будет должным образом ссылаться на предыдущие жестко связанные файлы, которые были пропущены в неполном снимке. Это верно?
EMF
1

Это только что случилось со мной. мой внешний диск заполнился на полпути через инкрементное резервное копирование rsnapshot:

rsync: write failed on "<path>": No space left on device (28) 

Теперь я хотел бы поделиться несколькими вещами, которые я узнал из этого. т.е. отремонтировать и значительно ограничить шансы на то, чтобы в таком случае меня откусить;)

Возобновить прерванную резервную копию Rsnapshot

Я знаю два способа откатить это безопасно.

Вручную

  1. Удалить последний каталог (например, daily.0)
  2. Переименование последовательных каталогов (daily.1 -> daily.0, ...); возможный сценарий 1
  3. Запустите резервное копирование как обычно (снова).

Автоматически

У rsnapshot нет функций паузы / остановки и возобновления (за исключением ограниченного « пропущено из-за плана отката » 2 ), поэтому мы должны использовать оболочку для обработки этих функций.

rsnapshot-once3 Philipp C. Heckel - это оболочка для rsnapshot в PHP, которая:

  • работает без изменения настроек вашего rsnapshot
  • убедитесь, что ежедневные, еженедельные и ежемесячные задачи выполняются только один раз за соответствующий период времени через cron (хорошо для ноутбуков)
  • откат неудачного резервного копирования (проверяет, было ли завершено последнее резервное копирование; если не последний каталог удален, и последовательные каталоги переименовываются, например, daily1. -> daily.0, ...)

Используя его в течение года, я счастливый пользователь: я отредактировал php.ini openbase_dirдля своей резервной копии и вуаля, счастливый день ^ _ ^ Более гладкий и безопасный, чем мое предыдущее решение на основе сырого rsnapshot.

Примечание: slm связал меня здесь с повторяющимся вопросом: Rsnapshot - полный пункт назначения - как безопасно выполнить повторный запуск?

tuk0z
источник