LinuxForum.Fans
Тема

инкрементальный бекап tar

Автор: drozel 8 сообщений 3667 просмотров
#284526

Здравствуйте.
Встала задача организовать инкрементальный бэкап файловой системы. Нашел красивое решение - использовать tar с параметром --listed-incremental.

Однако, возникло 2 проблемы. Во первых, в мануале (http://alex-at.ru/linux/tar-linux) описано использование параметров --listed-incremental и --preserve-order, а у меня tar выдает ошибку о том, что эти параметры несовместимы.

Во-вторых, допустим, создали бэкап папки

text
 /bin/tar --create --ignore-failed-read --one-file-system --preserve-permissions --recursion  --sparse --totals --verbose --gzip --file=bk.tar.gz --listed-incremental=meta files/

Затем добавили в папку пару файлов и удалили пару других. Потом сделали инкрементальный бэкап

text
 /bin/tar --create --ignore-failed-read --one-file-system --preserve-permissions --recursion  --sparse --totals --verbose --gzip --file=bk2.tar.gz --listed-incremental=meta files/

Архив 2 действительно содержит только 2 новых файла.
Зато после восстановления

text
/bin/tar --extract --ignore-failed-read --preserve-permissions --listed-incremental=/dev/null --recursion --sparse --verbose --gzip --file=bk.tar.gz --directory=files_restore

И последующего аналогичного развертывания второго бэкапа

text
/bin/tar --extract --ignore-failed-read --preserve-permissions --listed-incremental=/dev/null --recursion --sparse --verbose --gzip --file=bk2.tar.gz --directory=files_restore

Новая папка содержит файлы и новые, и удаленные.
Одним словом, не происходит удаления файлов, которые на момент создания инкрементального бэкапа были удалены.

Не могу найти проблему

#284530

Ну, tar - это всего лишь архиватор, для резервного копирования нужно писать "надстройку" - скрипт, который сравнит содержимое двух архивов, затем извлечет только нужное. Вот, man tar на русском, на всякий пожарный.

#284537

Хм, верно. Вот там и надо внимательно прочитать о работе с архивом. Внимание на ключик --level.

#284557

This archive is called a level 1 backup. Notice that ‘/var/log/usr.snar’ will be updated with the new data

Все же, насколько я понимаю, в случае, если файл метаданных найден (а при втором, инкрементальном, архивировании он найден), то это и зовется "левел 1" иначе - уровень 0.
Если мы хотим создать полный, а не инкрементальный бэкап, мы

You can force ‘level 0’ backups either by removing the snapshot file before running tar, or by supplying the ‘--level=0’ option,

либо удаляем метаданные, либо форсируем ключем, о котором Вы говорите.

Собственно, бэкап то делается. Вот только при восстановлении не удаляет файлы, которых уже нет в инкрементальном.

#284609
drozel написал:
Здравствуйте.
Встала задача организовать инкрементальный бэкап файловой системы. Нашел красивое решение - использовать tar с параметром --listed-incremental.

Я в свое время нашел не менее красивое решение - не изобретать велосипед, а воспользоваться уже готовыми наработками. Коих много. Например, fsbackup. Можно и BackupPC заюзать.
Ну а если надо какую-то интеграцию с файловыми процессорами иметь, то что пешает воспользоваться тем же DejaDup'ом? С него можно версионно файлы из архива поднимать...

Неужели заняться больше нечем?

#284610
"drozel" написал:
Вот только при восстановлении не удаляет файлы, которых уже нет в инкрементальном.

А если ключик --compare добавить?

#284934
"Cruiser78" написал:
Я в свое время нашел не менее красивое решение - не изобретать велосипед, а воспользоваться уже готовыми наработками

Вы правы, просто первое, что нашел по запросу "инкрементальный бэкап" было - tar.
Действительно, поставил fsbackup, настроил без проблем.
Всем спасибо за помощь)

Войдите или зарегистрируйтесь, чтобы ответить.