Спустя 8 месяцев с момента прошлого выпуска представлен (http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00033.html) новый стабильный релиз архиватора GNU Tar 1.24 (http://www.gnu.org/software/tar/). Из интересных новшеств можно отметить:
- Реализован более надежный метод обхода директорий при создании архива. В частности, tar теперь обрабатывает ситуации, когда элементы файловой системы были модифицированы в процессе создания архива. Новый метод подразумевает сохранения кэша файловых дескрипторов для директорий. Кроме, того tar теперь также отслеживает и факты модификации файловой системы в процессе распаковки данных из архива.- При распаковке символических ссылок, tar теперь восстанавливает дополнительные атрибуты, такие как время модификации и права доступа к ссылке, если операционная системы поддерживает данные возможности;
- Добавлена новая опция "--full-time", которая указывает выводить полное время для файлов;
- Опция "--dereference" теперь применяется ...
URL: http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00033.html
Новость: http://www.opennet.me/opennews/art.shtml?num=28404
А ведь это "всего-лишь" tar...>В опциях "--record-size" и "--tape-length" (-L), теперь можно использовать указывающие на размерность суффиксы. Например, 10k вместо 10240;
Ура! :)
Rar и zip нервно курят в форточку.
Только, к сожалению, rar - WINrar, и формат его в ряде случаев уникален. Сделанные им архивы не всегда корректно разворачиваются даже 7zip в Win.
Так что он не курит, а нахально использует невоспроизводимые другими архиваторами фичи...
Чего? 0_оНи разу такого не было, учитывая что библиотека для распаковки RAR в 7-zip предоставлена самим Рошалем. Единственный минус - не поддерживает исправление битых архивов.
> Так что он не курит, а нахально использует невоспроизводимые другими архиваторами фичи...Не знаю как там насчет фичей, но по основной фиче ака степени сжатия почему-то 7zip с его LZMA оказывается зачастую лучше.
А вы ещё сравните 7zip с gzip.Формат Rar (2.9) не менялся уже почти 10 лет.
и это должно доказывать, что рар лучше?
рар ещё и медленнее.
и судя по версиям и вики 3-ий формат давно уж как является головной болью админов почтовиков.
причем тут админы почтовиков?
> Rar и zip нервно курят в форточку.Простите, а как связаны архиватор и программы для сжатия?
наверное тем, что данный архиватор давно уже является и программой сжатия.
и не одним методов кстати.
> наверное тем, что данный архиватор давно уже является и программой сжатия.
> и не одним методов кстати.Ащет он дергает внешние утилиты. От классики отличает, только наличие опций -z, -Z, -j, -J и т.п. чтобы дернуть gzip/compress/bzip2/xz и т.д., а ведь какова была мантра:
gzip -dc file.tar.gz | tar xf -
:-)а отличие... ну самое явное в том, что я не смогу посмотреть листинг файлов в архиве, пока он полностью не разожмется программой-(рас)паковщиком. В этом пожалуй единственный плюс комбинированных архиваторов-паковщиков перед связками архиватор+компрессор.
Если ошибаюсь - прошу указать где
>а отличие... ну самое явное в том, что я не смогу посмотреть листинг файлов в архиве, пока он полностью не разожмется программой-(рас)паковщиком.бред, например less file.tar.gz, это скорее GUI вам попался кривой.
>>а отличие... ну самое явное в том, что я не смогу посмотреть листинг файлов в архиве, пока он полностью не разожмется программой-(рас)паковщиком.
> бред, например less file.tar.gz, это скорее GUI вам попался кривой.Ну, вы ведь понимаете, что к концу получения списка файлов он полностью разожмётся, не так ли?
>>а отличие... ну самое явное в том, что я не смогу посмотреть листинг файлов в архиве, пока он полностью не разожмется программой-(рас)паковщиком.
> бред, например less file.tar.gz, это скорее GUI вам попался кривой.ну давайте без личностей? во первых gui не использую, ибо когда начинал, их не было ещё, во вторых, что сделает твоя команда? правильно выдаст предупреждение о просмотре бинарных данных :) Ну и третье, даже если ты имел ввиду zless, будет просмотр самого tar как файла данных (при этом он полностью разожмется). А вот ответь теперь на вопрос: как вытянуть один единственный файл из tar.gz что бы перед этим полностью не отработал gzip?
Подсказка мантра типа tar -tvzf file.tar.gz перед тем как напечатать подробный список с содержимым архива - ПОЛНОСТЬЮ его распакует (в смысле сначала отработает gzip в потоке). А вот zip/rar что бы отобразить листинг файлов, вытянуть один единственный - полная _распаковка_ не требуется.
>ну давайте без личностей?Даже и не пытался
>во вторых, что сделает твоя команда? правильно выдаст предупреждение о просмотре бинарных данных :)
Нет, не выдаст, причина вам понятна(zless)
>будет просмотр самого tar как файла данных (при этом он полностью разожмется)
Это вопрос конкретной реализации. Я не отрицаю что он разожмется но информация будет черпаться находу. При желании это можно было бы избежать(при этом не отказываясь от идеологии архиватор+пакер), но текущее положение дел малоко кого волнует, значит устраивает.
>>ну давайте без личностей?
> Даже и не пыталсяразобрались и закрыли :)
>>будет просмотр самого tar как файла данных (при этом он полностью разожмется)
> Это вопрос конкретной реализации. Я не отрицаю что он разожмется но информация
> будет черпаться находу. При желании это можно было бы избежать(при этом
> не отказываясь от идеологии архиватор+пакер), но текущее положение дел малоко кого
> волнует, значит устраивает.Того что инфа будет выдаваться на поток я даже оспаривать не пытаюсь, привет опции -c у gzip/bzip2/xz/etc. Я вот пытаюсь всё донести другое: файл в конце архива, что бы мне до него добраться, нужно распаковать всё что до него. gzip ничего не знает о файлах внутри tar, tar ничего не знает о компрессоре и с какого места что сжато.
Вообще, приближенный вариант архиватора-паковщика, это гзипить каждый файл а потом результаты собирать tar'ом, но проигрыш будет велик :)
>Я вот пытаюсь всё донести другое: файл в конце архива, что бы мне до него добраться, нужно распаковать всё что до него.Ах вот о чем речь, ну тут да ничего не поделаешь, unix-way:). Я мыслил только в сторону листингов, которые теоретически можно получать проще(паковать "заголовок" и "тело" tar'а отдельно)
> Ащет он дергает внешние утилитыАщет он дергает не утилиты, а библиотеки
>> Ащет он дергает внешние утилиты
> Ащет он дергает не утилиты, а библиотекикод говорит о другом, извини, посмотрел исходники 1.23, в 1.24 по иному?
начнем с опций ./configure, в которых указываются пути к ИСПОЛНЯЕМЫМ файлам, а не библиотекам:
--with-compress=PROG use PROG as compress compressor program
--with-gzip=PROG use PROG as gzip compressor program
--with-bzip2=PROG use PROG as bzip2 compressor program
--with-lzip=PROG use PROG as lzip compressor program
--with-lzma=PROG use PROG as lzma compressor program
--with-lzop=PROG use PROG as lzop compressor program
--with-xz=PROG use PROG as xz compressor programдалее, смотрим src/tar.c, src/common.h, src/suffix.c (тут реализован подбор программы по суффиксу), src/buffer.c (тут реализовано определение программы сжатия по magic sequency) где везде в соответствие формату ставится не библиотечный вызов, а вызов PROG.
Ну почему, перед тем как утверждать что-то, не изучить вопрос?
Если бы он ещё умел делать не-solid сжатые архивы, цены бы ему не было. А так юзаю его только для бэкапов где надо права и ссылки сохранить, а для всего остального - 7z и zip, потому, что очень активно работаю с отдельными файлами в архивах, а в последних двух это всё-таки реализовано естественнее.
7zip - поточный формат. С отдельными файлами в 7z архивах вы работать не можете.
> 7zip - поточный формат. С отдельными файлами в 7z архивах вы работать
> не можете.7z a -ms=off ...
В виндовом 7zip есть выбор размера solid-блока, где можно выбрать никакой.
>> 7zip - поточный формат. С отдельными файлами в 7z архивах вы работать
>> не можете.
> 7z a -ms=off ...
> В виндовом 7zip есть выбор размера solid-блока, где можно выбрать никакой.Позвольте, но тогда он будет плохо жать! :)
>>> 7zip - поточный формат. С отдельными файлами в 7z архивах вы работать
>>> не можете.
>> 7z a -ms=off ...
>> В виндовом 7zip есть выбор размера solid-блока, где можно выбрать никакой.
> Позвольте, но тогда он будет плохо жать! :)Тем не менее Ваше предыдущее утверждение ложно. И вообще нормально он так жмёт, я всегда так делаю.
Жизнь давно не заставляет гнаться за байтами когда счёт на сотни мегабайт и гигабайты, по-этому я давно не сравнивал реальные цифры по сжатию, так что не могу утверждать что жмёт он при этом особенно хорошо. Тем не менее полагаю что не так уж плохо, особенно с учётом отсутствия достойных альтернатив (все сколько-нибудь распространённые свободные паковщики жмут один файл, zip-проприетарный формат, rar ещё и платный, a 7z современный, гибко-настраиваемый и свободный (вроде даже public domain)).
Самое главная его фича, это то, что можно работать с магнитной лентой. WinRAR так может?
> Самое главная его фича, это то, что можно работать с магнитной лентой.
> WinRAR так может?На магнитную ленту можно записать всё что угодно.
rar a -en : Do not put 'end of archive' block
обновляйте архив тупым дописыванием (append) файлов.
Лишь бы обосрать.
этот архиватор сам не выполняет сжатие, а вызывает внешние программы, поколдовав с src/suffix.c я думаю к нему можно и rar прикрутить при большом желании :)вообщем, учи матчасть и не тупи так больше
сам учи, там в коммандной строке можно задать свой собственный скрипт или прогу для сжатия. :D
и второй раз поучи мат часть - на выполнение вызывается одна команда, как отдельная единца выполнения. а создаёт ли она другие процессы, вызывает общие библиотеки, активикс компоненты или вообще rpc-вызов к аппаратной железяке с супер-дупер алгоритмом сжатия/шифрования - это не важно.
важно только что это одна команда, которую можно нанизывать в пайпы как одну.
>сам учи, там в коммандной строке можно задать свой собственный скрипт или прогу для сжатия. :Dот этого обёртка компрессором не станет, поскольку ну ничего о самом процессе сжатия не знает, лишь обертка, или тогда давайте Make называть компилятором если уж такой двиг пошёл
еще как станет. видите ли - это такой апи в посикс мире.
или объясните почему вы не называете оберткой 7зип, винрар, которые для других форматов используют библиотеки не своего кода и нифига о процессе сжатия в них не знают.подсказка в споре выше - как из сжатого тара добавить/удалить файл не распаковывая весь сжатый архив.
>почему вы не называете оберткой 7зип, винрар, которые для других форматов используют библиотеки не своего кодакакого кода, libc? это системная библиотека, в остальном эти две программы полностью самодостаточны как архиваторы-компрессоры, поскольку содержат в себе весь необходимый функционал, в то время tar это лишь обёртка, без которой можно легко обойтись - gzip archive.tar
>как из сжатого тара добавить/удалить файл не распаковывая весь сжатый архив
никак, если сжатый блок монолитный
>для других форматов используют библиотеки не своего кодаАх, имеется ввиду плагинная структура как у winrar
Загружать плагин в программе-компрессоре это одно, запускать внешний процесс с весьма ограниченным функционалом это совсем другое
и где же его ограниченность?
по тару этого ну никак не скажешь
>и где же его ограниченность?
>по тару этого ну никак не скажешьесть возможность указать временную папку, цепочку фильтров, match finder, отобразить прогресс выполнения и т.п.? tar это лишь обёртка над потоковым компрессором
rar и zip - это одновременно архиваторы и компрессоры. zip даже права Unix умеет. а вообще, замечание про форточку - это была явная шутка, и вы зря принимаете его близко к сердцу.
Исторически в DOS и Windows нет деления на архиваторы и компрессоры. Rar, Zip и прочие программы являются одновременно и компрессорами и архиваторами. Можно считать их компрессорами, если в архиве есть только один файл, а можно считать их архиваторами, если не в архиве не используется сжатие. Создание многотомных архивов - одна из фич Rar, которая обычно является неотъемлемой функцией архиваторов.
> Rar и zip нервно курят в форточку.На сколько я понимаю, при наличии 7z (да и zip современный вроде lzma поддерживает) rar стал не нужен. У rar (winrar, насчёт консольного не знаю) есть только одна замечательная опция, которой лично мне очень нехватает в 7z - возможность добавлять файлы указанных типов в архив не сжимая их (при этом сжимая остальные) - очень удобно когда делаешь полный бэкап какой-нибудь файлопомойки (например домашней папки с даунлоадами и доками) - не тратишь время на попытки скомпрессировать avi, mp3, jpg, архивы и т.п.
> При распаковке символических ссылок, tar теперь восстанавливает
> дополнительные атрибуты, такие как время модификации и права доступа
> к ссылке, если операционная системы поддерживает данные возможности;А в каких ОС символические ссылки имеют свои собственные права доступа и время модификации?
> А в каких ОС символические ссылки имеют свои собственные права доступаVMS, там, после того как удалил оригинал, а затем создал такой же, с таким же именем,
то ссылка на него уже не будет указывать... Вот такая крутанская ОСь. :)
Думается что эта фишка есть у любой файловой системы с поддержкой версионности.
> и время модификации?Вроде всё вменяемые...
pavel@suse64:/mnt> stat vm*
File: `vm' -> `/mnt/vmdk'
Size: 9 Blocks: 0 IO Block: 4096 символьная ссылка
Device: 802h/2050d Inode: 142692140 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-10-26 00:43:57.226326001 +0400
Modify: 2010-10-26 00:43:57.226326001 +0400
Change: 2010-10-26 00:43:57.226326001 +0400File: `vmdk'
Size: 6 Blocks: 0 IO Block: 4096 Каталог
Device: 802h/2050d Inode: 142772305 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ pavel) Gid: ( 0/ root)
Access: 2010-10-26 00:55:57.443326005 +0400
Modify: 2010-10-26 00:55:57.443326005 +0400
Change: 2010-10-26 00:55:57.443326005 +0400
> Думается что эта фишка есть у любой файловой системы с поддержкой версионности.Что-то сомневаюсь - симлинк является путём к другому файлу, а если фс не умеет путей без указания версии, то это уже не версионная фс.
> Вроде всё вменяемые...
хм, действительно.
>> Думается что эта фишка есть у любой файловой системы с поддержкой версионности.
> Что-то сомневаюсь - симлинк является путём к другому файлу, а если фс
> не умеет путей без указания версии, то это уже не версионная
> фс.Кроме как на VMS, не пробовал. Дело в том что файл на версионной ФС
имеет полное имя как $ROOT/$PATH/$NAME.EXT:$VERSION (где-то расширения не используются)
Ссылка указывает именно на это. Изменяя любой из этих параметров у оригинала,
делаем тем самым полумертвую ссылку, она есть, но указывает на старый файл или удалённый.
Если сделать так что обновляя версию оригинала, обновится ссылка, тогда уже сама ссылка
будет иметь другую версию :)
$SYSROOT/etc/motd.link:1 -> $SYSROOT/etc/motd:1
обновили /etc/motd, получили новый
$SYSROOT/etc/motd:2 но без ссылки... и парочку
$SYSROOT/etc/motd.link:1 -> $SYSROOT/etc/motd:1если обновлять и ссылку то у нас будет уже 4 файла
$SYSROOT/etc/motd.link:1 -> $SYSROOT/etc/motd:1
$SYSROOT/etc/motd.link:2 -> $SYSROOT/etc/motd:2поэтому на подобных ФС все объекты, желательно,
чтоб имели полные доступные атрибуты - времена, права, расширенные атрибуты,...
Т.е. создаём нового пользователя, а система его не видит т.к. смотрит в /etc/passwd:1 вместо того чтобы смотреть в /etc/passwd самой последней версии? Это уже получается не версионная ФС, а ФС с автоматическим добавлением суффикса к имени файла (для каждой версии).
> Т.е. создаём нового пользователя, а система его не видит т.к. смотрит в
> /etc/passwd:1 вместо того чтобы смотреть в /etc/passwd самой последней версии?Как и зачем она его будет смотреть, если его ещё нет в системе? :)
> Это уже получается не версионная ФС, а ФС с автоматическим добавлением суффикса
> к имени файла (для каждой версии).Т.е. все таки версии? :)
Версии бывают разные: полные, инкрементальные, маскированные.
>> Т.е. создаём нового пользователя, а система его не видит т.к. смотрит в
>> /etc/passwd:1 вместо того чтобы смотреть в /etc/passwd самой последней версии?
> Как и зачем она его будет смотреть, если его ещё нет в
> системе? :)Это должен разруливать драйвер ФС, а так как ты это описываешь - создаёт больше проблем чем решается с помощью версионности.
Вот как указать системе какая версия /etc/passwd на данный момент актуальна? Через какой-нибудь файл? - а как указать актуальную версию этого файла? Замкнутый круг получается.>> Это уже получается не версионная ФС, а ФС с автоматическим добавлением суффикса
>> к имени файла (для каждой версии).
> Т.е. все таки версии? :)Не версии, а новые файлы создающиеся автоматически при каждом изменении. Версиями это можно назвать с большой натяжкой.
> Версии бывают разные: полные, инкрементальные, маскированные.
А не важно как это реализовано изнутри.
>> Версии бывают разные: полные, инкрементальные, маскированные.
> А не важно как это реализовано изнутри.Ой, так давно это было... Глянь на Вики, http://ru.wikipedia.org/wiki/Files-11
Всё-таки нормально там сделано, видать ты просто подзабыл уже:Например, [DIR1.DIR2.DIR3]FILE.EXT будет ссылаться на последнюю версию файла FILE.EXT, на диске установленном по умолчанию, в каталоге [DIR1.DIR2.DIR3].
me:/tmp/1$ rm -rf *; mkdir -p 1 2/3; tar c 2 | { cd 2; tar x -C ../1; }
tar: 2/3: Cannot utime: No such file or directory
tar: 2: Cannot utime: No such file or directory
tar: Exiting with failure status due to previous errorsглупая ошибка
у меня такие же глюки с cannot utime лезут при установке пакетов с binhost в gentoo>>> Emerging binary (1 of 1) net-im/pidgin-2.7.4
* pidgin-2.7.4.tbz2 MD5 SHA1 size ;-) ... [ ok ]
>>> Extracting info* Package: net-im/pidgin-2.7.4
* Repository: gentoo
* USE: gnutls gtk sasl
* gtk build => nls is enalbed!
>>> Extracting net-im/pidgin-2.7.4tar: ./var/lib: Cannot utime: No such file or directory
tar: ./var/lib: Cannot change ownership to uid 0, gid 0: No such file or directory
tar: ./var/lib: Cannot change mode to rwxr-xr-x: No such file or directory
tar: Exiting with failure status due to previous errors
tar failed with status 2
похоже, несмотря на -C, пытается выполнить utime из текущего каталога, а не указанного в -C
pavel@suse64:/tmp > rm -rf *; mkdir -p 1 2/3; tar c 2 | { cd 2; tar x -C ../1; }
pavel@suse64:/tmp > echo $?
0И чё? И где?
pavel@suse64:/tmp > tar --version
tar (GNU tar) 1.23
...
попробуй 1.24 и расскажешь.
> попробуй 1.24 и расскажешь.Зачем же! Пущай сначала гентушнеги потрахаюцца, а мы заюзаем стейбл.
> Зачем же! Пущай сначала гентушнеги потрахаюцца, а мы заюзаем стейбл.Как же они затестят, если в каждое сообщение о баге будешь влезать ты и утверждать, что всё работает, приводя вывод предыдущей версии?
Ты жалкий неудачник
https://bugs.gentoo.org/show_bug.cgi?id=342735
не знаю, какие там они баги пофиксили, но вот tar -zvxf archive.tar.gz -C /tmp распаковывает нормально в /tmp, но вместе с тем создает еще и полную структуру каталогов архива в текущем. ну его нафиг, такие багофиксы.
не воспроизводится, попробуйте удалить полную структуру каталогов в текущей директории и повторить, если баг повторяется, покажите архив, возможно дело в нём.
стабильно вопсроизводится на любых архивах. tar собран как ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin --enable-backup-scripts под x86_64
> не воспроизводится, попробуйте удалить полную структуру каталогов в текущей директории
> и повторить, если баг повторяется, покажите архив, возможно дело в нём.http://git.savannah.gnu.org/cgit/tar.git/patch/?id=acb77ac5b...
этот патч проблему решил