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

Удалить файлы из rdiff-backup

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

Я обнаружил несколько файлов, которые мы можем удалить *, но мне интересно, как мне это сделать. Первым шагом, конечно же, будет удаление файлов из реальной файловой системы. Однако в следующий раз мне нужно будет удалить его из резервных копий (именно там нам нужно место), но я понятия не имею, как это сделать. Кто-нибудь знает, как это сделать?

* кто-то, давно отсутствующий на работе, у которого в домашнем каталоге были игры и личные фотографии, несколько копий виртуальных жестких дисков

Процесс удаления, когда у вас заканчивается свободное место, описан в неофициальный FAQ под Как удалить файлы из резервного набора. Повторяем здесь только для полноты.


Этот метод очень опасен и не должен использоваться, если только файлы, которые вы хотите удалить, не вызывают нехватку места на резервном диске, и единственная альтернатива удалению этих файлов - удаление целых приращений.

ВАЖНО: Собственно говоря, вы должны выполнить шаг 4 для каждый приращение mirror_metadata. Rdiff-backup до 1.1.1 не возражает против наличия дополнительных записей mirror_metadata для файлов, которые удаляются из резервной копии таким образом, за исключением самой последней версии mirror_metadata. Однако в 1.1.1 обработка mirror_metadata изменилась - теперь rdiff-backup сравнивает файлы метаданных, и неизвестно, повлияет ли наличие дополнительных записей в этих файлах diff на операции восстановления. (Техническое примечание: различия mirror_metadata НЕ используют тот же метод, что и файлы diff. Это не файлы дельты rdiff, а простые текстовые файлы (и нет, они также не являются обычными текстовыми различиями). Из-за этого их можно безопасно использовать -отредактируйте их, так что, если вам нужно, вы можете выполнить шаг 4 с этими различиями.)

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

  2. Перейдите в целевой каталог зеркала и удалите там файл или каталог.

  3. Перейдите в rdiff-backup-data / increments на цели и удалите все следы файла / каталога там. Важный! Если вы удаляете каталог, убедитесь, что вы нашли и удалили для него все файлы * .dir! Если это файл, убедитесь, что вы нашли и удалили все отсутствующие файлы *. (Если они есть). Будьте осторожны и не удаляйте ничего, что не связано с тем, что вы пытаетесь удалить, иначе вы можете потерять возможность восстановления других файлов.

  4. Важный шаг! (и ВНИМАНИЕ, это не тестировалось с rdiff-backup 1.1.1 или новее). Вернитесь к rdiff-backup-data и заархивируйте последний файл метаданных зеркала. Отредактируйте файл mirror_metadata в удобном текстовом редакторе (ВНИМАНИЕ! Не используйте pico или nano или что-либо еще, что может автоматически переносить строки!) И удалите все ссылки на файл или каталог, который вы удалили. Будьте очень осторожны, чтобы не испортить формат файла.

похоже, кто-то создал сценарий, выполняющий вышеуказанные шаги https://www.eugenemakerspace.com/wiki/Sites/Rdiff-backup-delete

Я не тестировал это, но выбрал «заставку», удалив все файлы, которые уже пропали за 2 недели, запустив

rdiff-backup --remove-older-than 2W host.net::/remote-dir

еще пример http://www.nongnu.org/rdiff-backup/examples.html

В официальном репозитории github для rdiff-backup теперь есть скрипт для этого:

https://github.com/rdiff-backup/rdiff-backup/blob/master/src/rdiff-backup-delete

Сценарий, упомянутый в других ответах, больше не доступен.