On Tue, Jun 23, 2015 at 09:59:09AM +0300, tarasca wrote:
> 06/23/2015 12:10 AM, Dmitri V. Ivanov пишет:
> >>2. Ну и общесистемное: чем неприятным грозят инкрементальные бэкакпы
> >>средствами tar, если за пределы наитивных ФС я выходить не планирую?
> >--listed-incremental=SNAPSHOTFILE и --level=N читайте в info tar.
> Совет про --listed-icremental не понял совсем (очевидно, я его
> использую). что касается level - читал в мане и на
> http://www.gnu.org/software/tar/manual/, но ничего полезного, кроме
> "level=0 нужен, чтобы игнорировать снапшот" не нашел.
> 
> >Работает сие естественно на posix-совместимых ФС. На ntfs например работает
> >вряд ли.
> вроде и про это написал.

Так. Я позволю себе кратко напомнить эту историю. Исаак родил Авраама. Авраам 
родил....

В posix предусмотрен timestamp файла CTIME, который помечается для
обновления в текущее время при всех изменениях будь то: запись/усечение, 
изменение timestamps,
прав доступа, создание/удаление ссылок (не символьных). Единственное место, где 
в стандарте
не очевидно обновление CTIME это переименование/перемещение файла. В linux на 
ext3 обновляется.

Кроме того предусмотрено, что у каждого файла есть уникальный идентификатор 
(помимо имен), который
за ним сохраняется пока количество ссылок на файл не обнулится (inode number).

В итоге можно определить менялся ли файл с некоторого момента, глядя на 
значение CTIME за исключением
одного момента: переименования файла (в linux этого исключения нет), или 
каталога, содержащего файл
(а вот оно в полный рост).

Чтобы определить, что каталог тот же и используется snapshot file (в нем 
хранятся имена и соответствующие
inode numbers). Если при сравнении актульного значения с сохраненным совпадения 
нет - нет и гарантии, что
каталог тот же самый, и его содержимое нельзя считать неизменным с указанного 
момента при любых значениях
CTIME.

Соответственно с tar вы при создании полного архива указываете 
--listed-incremental=file, где file не
существует, или дополняете --level=0, если file существует, но его нужно 
игнорировать. При создании
инкрементального архива вы указываете --listed-incremental=file, где file - с 
прошлого раза (tar его
перепишет в процессе использования, и следующий инкремент будет от предыдущего 
инкремента).

При распаковке из архивов такого формата вы также указываете 
--listed-incremental=file, где file в примерах
/dev/null, и при распаковке инкрементальных архивов tar будет удалять файлы, 
которые не существовали на момент
создания инкрементов (в архивах хранится список файлов).

Занудствую уже. Пересказываю 
http://www.gnu.org/software/tar/manual/html_chapter/tar_5.html#SEC95



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: https://lists.debian.org/[email protected]

Ответить