Timothy Silent пишет:
> On Tue, 14 Apr 2009 12:40:14 +0300
> spider wrote:
>
>> Serguey Khvatov пишет:
>>> Как минимум, нельзя просто добавить данные даже в несжатый архив
>>> tar: хотя
>> в
>>> нём и нет каталога, но в конце архива записан признак его конца, и
>>> при операции добавления его сначала надо стереть. Можно ли просто
>>> дописывать данные в сжатый файл - не знаю, но не исключено, что и
>>> можно.
>> $ man tar выдает, в частности, следующее:
>> -r, --append
>> append files to the end of an archive
>>
>> Это значит, что добавить данные в несжатый архив tar можно => можно
>> добавить и в сжатый.
> А вот эта импликация ни разу не очевидна, и tar справедливо скажет
> "Cannot concatenate compressed archives"
Так разожмите архив, дополните и опять сожмите результат.
> Если смотреть с точки зрения реализации, то очевидно нужно не просто
> склеить два tar-архива как файлы внутри gzip (кому-то может
> показаться, что pipe помогает обойти ограничения, но это не так), как
> это gzip обычно делает при добавлении, а сначала добавить файл2 в архив
> tar (распакованный, sic!), после чего упаковать результат. Разумеется,
> это маразм.
Почему же это маразм? Я сразу и вспомнить не могу, есть ли какой-нибудь
алгоритм сжатия, который допускает добавление в контент без его
восстановления из сжатого состояния.
С другой стороны, даже если такой есть (!!! вспомнил один такой --
djvu), то Вы справедливо изволили заметить, что "благодаря хвосту
первого tar-файла все добавленные будут благополучно потеряны". Более
кругло говоря, если архиватор использует некоторую схему упаковки
контента, а компрессор ее не понимает и не может этот контент выделять
из контейнера в чистом виде для сжатия, то ничего не получится.
Поскольку компрессорам наплевать на структуру того, что они жмут, если
только они не интергированы с архиваторами, то "маразм" -- единственный
путь даже, если компрессор поддерживат добавление.
> В общем-то я cчитаю возможным реализовать алгоритм добавления в архив
> внутри tar'a (потому что там можно учесть формат его файлов).
Алгоритм добавления в tar-архив уже реализован в утилите tar.
> желаемой операции и отдельного архивирования будут равны словарю нового
> архива
Зачем файловому архиву словарь? Не путаете ли Вы архивацию и сжатие? Это
компрессор использует словарь. tar-архив никаких словарей не содержит.
Это простой список:
... Physically, an archive consists of a series of file entries
terminated by an end-of-archive entry, which consists of two 512 blocks
of zero bytes. A file entry usually describes one of the files in the
archive (an "archive member"), and consists of a file header and the
contents of the file. File headers contain file names and statistics,
checksum information which `tar' uses to detect file corruption, and
information about file types.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 36016; Возраст листа: 2091; Участников: 1379
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/845762