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]

