Не знаю, как задать этот вопрос без объяснения. Скажем, я использую rsync для резервного копирования с диска a на диск b. Диск-a выходит из строя, и все данные теряются, когда rsync отключился, он увидел, что диск-a был стерт, поэтому он стер диск-b.
Я пытаюсь написать сценарий rsync, чтобы этого не произошло. это на самом деле случилось с кем-то, кого я знал, так что это возможно.
Вы можете попробовать использовать rsnapshot. Это использует rsync для создания резервной копии на основе жестких ссылок. На сервере можно получить доступ к нескольким резервным копиям без потери места. Таким образом, когда ваш диск A стирается, данные будут «стерты» только в самой последней резервной копии, но старые снимки по-прежнему будут содержать данные.
Другое дело - использовать параметры --backup
и --backup-dir
непосредственно с rsync
:
-b, --backup
С помощью этого параметра существующие файлы назначения переименовываются при передаче или удалении каждого файла. Вы можете контролировать, куда будет помещен файл резервной копии и какой суффикс (если есть) будет добавлен, с помощью параметров --backup-dir и --suffix.
Обратите внимание: если вы не укажете --backup-dir, (1) будет подразумеваться параметр --omit-dir-times, и (2) если --delete также действует (без --delete-excluded) , rsync добавит правило фильтра lqprotectrq для суффикса резервного копирования в конец всех существующих исключений (например, -f "P ~ "). Это предотвратит удаление ранее зарезервированных файлов. Обратите внимание, что если вы предоставляете свои собственные правила фильтрации, вам может потребоваться вручную вставить собственное правило исключения / защиты где-нибудь выше в списке, чтобы оно имело достаточно высокий приоритет, чтобы быть эффективным (например, если ваши правила определяют конечное включение / исключение oqcq, правило автоматического добавления никогда не будет достигнуто).
--backup-dir = DIR
В сочетании с параметром --backup это указывает rsync хранить все резервные копии в указанном каталоге на принимающей стороне. Это можно использовать для инкрементного резервного копирования. Вы можете дополнительно указать суффикс резервного копирования с помощью параметра --suffix (в противном случае файлы, резервные копии которых находятся в указанном каталоге, сохранят свои исходные имена).
О, вы можете настроить rsync, чтобы не удалять посторонние файлы. По умолчанию это не так. Так что, если все файлы исчезли с диска-a, все должно быть в порядке.
https://unix.stackexchange.com/questions/5451/delete-extraneous-files-from-dest-dir-via-rsync
В описанном вами сценарии (отказавший исходный диск) rsync будет не удалите что угодно, потому что:
Если отправляющая сторона обнаруживает какие-либо ошибки ввода-вывода, удаление любых файлов в месте назначения будет автоматически отключено. Это сделано для предотвращения временных сбоев файловой системы (таких как ошибки NFS) на отправляющей стороне, вызывающих массовое удаление файлов в месте назначения. Вы можете изменить это с помощью опции --ignore-errors.
Единственный способ получить очищенную цель после сбоя источника - это:
В любом случае, я поддерживаю предложение использовать жесткие ссылки rsnapshot +. Я использую эту настройку для резервного копирования, и это очень удобно.