1

В инкрементной резервной копии tar не может добавлять новые файлы:

$ tar -cvzf test.tar.gz -g test.snar a.txt
a.txt
$ tar -cvzf test2.tar.gz -g test.snar a.txt b.txt

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

2 ответа2

1

Вы смотрели на использование опции «–listed-incremental» для tar? Это позволит вам постепенно добавлять определенные папки и помогает обеспечить сжатие только тех файлов, которые были изменены с момента их последнего добавления в tar, с параметром --list-incremental.

Более общая опция - просто добавлять новые файлы, используя опцию -a или append, которая помещает файл в конец архива.

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

1

Файл снимка содержит файл a.txt в первой команде tar. На втором tar снимок не знает о b.txt . a.txt не изменился, поэтому добавочный архив пуст.

Если инкрементный архив находится на уровне каталога, он обнаружит изменение (b.txt), поскольку b.txt существует в иерархии каталога.

Если файл снимка существует, он определяет, какие файлы будут изменены.

См. Ссылочные инкрементные резервные копии GNU Tar

Опция '--listed-incremental' указывает tar работать с инкрементным архивом с дополнительными метаданными, хранящимися в отдельном файле, который называется файлом моментального снимка. Цель этого файла - помочь определить, какие файлы были изменены, добавлены или удалены со времени последней резервной копии, поэтому следующая инкрементная резервная копия будет содержать только измененные файлы. Имя файла снимка задается в качестве аргумента опции:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .