tar.xz VS. 7z (что выбрать?)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

/dev/random писал(а):
09.03.2011 00:57
liaonau писал(а):
09.03.2011 00:42
Жать каждый файл отдельно, потом паковать и писать заголовок? Но так получится много меньшая степень сжатия, если в файлах были одинаковые фрагменты.

И получаем 2-в-1, ибо компрессию придётся доверять архиватору.

Если список класть отдельным элементом, то не придётся.

watashiwa_daredeska писал(а):
09.03.2011 09:32
KiWi писал(а):
09.03.2011 03:13
Чтобы не читать весь файл -- эта информация должна находится где-то в начале файла
Не обязательно. Если заголовок будет у каждого «файла» с известным размером, то получится что-то вроде linked list, что будет лишь слегка похуже единого заголовка. Да, можно еще в конец файла постфактум записывать каталог.

Вот именно. (: Если писать в конец, потоковость теряется только для извлечения списка, а не для упаковки/распаковки.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

t.t писал(а):
09.03.2011 10:44
Если список класть отдельным элементом, то не придётся.
Кроме списка, надо еще делать прерывания в компрессии, чтобы можно было разжимать не с начала. Иначе нафиг этот список нужен-то, если чтобы достать один файл все равно весь архив надо распаковать.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: tar.xz VS. 7z

Сообщение /dev/random »

watashiwa_daredeska писал(а):
09.03.2011 10:46
t.t писал(а):
09.03.2011 10:44
Если список класть отдельным элементом, то не придётся.
Кроме списка, надо еще делать прерывания в компрессии, чтобы можно было разжимать не с начала. Иначе нафиг этот список нужен-то, если чтобы достать один файл все равно весь архив надо распаковать.

Во-во. А расставлять эти прерывания в компрессии кто будет? Правильно, архиватор. Т.е. архиватор должен уметь управлять внутренней работой компрессора. И опять 2-в-1.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

watashiwa_daredeska писал(а):
09.03.2011 10:46
t.t писал(а):
09.03.2011 10:44
Если список класть отдельным элементом, то не придётся.
Кроме списка, надо еще делать прерывания в компрессии, чтобы можно было разжимать не с начала. Иначе нафиг этот список нужен-то, если чтобы достать один файл все равно весь архив надо распаковать.

Естественно. Но эти прерывания тоже не мешают потоковости, только меняют её направление: не «архиватор -> компрессор», а «компрессор -> архиватор»

/dev/random писал(а):
09.03.2011 10:49
watashiwa_daredeska писал(а):
09.03.2011 10:46
t.t писал(а):
09.03.2011 10:44
Если список класть отдельным элементом, то не придётся.
Кроме списка, надо еще делать прерывания в компрессии, чтобы можно было разжимать не с начала. Иначе нафиг этот список нужен-то, если чтобы достать один файл все равно весь архив надо распаковать.

Во-во. А расставлять эти прерывания в компрессии кто будет? Правильно, архиватор. Т.е. архиватор должен уметь управлять внутренней работой компрессора. И опять 2-в-1.

Зачем управлять-то? Он может отдать компрессору _каждый_ файл и получить от него обратно, а потом уж сам расставить метки.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

t.t писал(а):
09.03.2011 10:53
не мешают потоковости, только меняют её направление: не «архиватор -> компрессор», а «компрессор -> архиватор»
Тогда это должен быть очень умный компрессор, почти архиватор, т.е. почти 2-in-1. Этот компрессор должен уметь обходить дерево каталогов, выковыривать метаинформацию о файлах и в каком-то, очень похожем на потоковый архив a la tar, виде гнать поток в архиватор. А что остается на долю собственно архиватора?
Да, еще компрессор должен уметь все способы обработки спец. файлов, которые умеют современные компрессоры+архиваторы. Как пример: FIFO. Что с ним делать: читать и компрессить из него поток, как это делают потоковые компрессоры, или передавать метаинфу, как это делают архиваторы, вроде tar?

t.t писал(а):
09.03.2011 10:53
Он может отдать компрессору _каждый_ файл и получить от него обратно
100500 вызовов потокового компрессора, по 1 на каждый файл? Лучше уж 2-in-1 :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

Собственно, если tar czf archive files — аналог tar cf - files | gzip >archive, то я говорю о чём-то вроде tar cf archive <(gzip -c file1) <(gzip -c file2) …
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

t.t писал(а):
09.03.2011 11:02
Собственно, если tar czf archive files — аналог tar cf - files | gzip >archive, то я говорю о чём-то вроде tar cf archive <(gzip -c file1) <(gzip -c file2) …
Вот-вот. Куча вызовов gzip — это не гут.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: tar.xz VS. 7z

Сообщение /dev/random »

Вообще, идея такого "поточного 2-в-1" имеет право на жизнь, и, возможно, найдёт аудиторию. Но я предпочту tar.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

watashiwa_daredeska писал(а):
09.03.2011 11:00
t.t писал(а):
09.03.2011 10:53
Он может отдать компрессору _каждый_ файл и получить от него обратно
100500 вызовов потокового компрессора, по 1 на каждый файл? Лучше уж 2-in-1 :)

А это смотря в какой ситуации. Иногда лучше так, а иногда наоборот. Потому я и говорю об этом не как об умолчательном поведении, а как об опции.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

Да, вот еще одно нарушение потоковости: никогда заранее не известно, какой размер будет занят сжатым файлом в архиве, пока его не сожмут полностью, т.е. нельзя поточно создать «заголовок» перед файлом в архиве, только записать метаинфу после него. Т.е. весь архив вообще будет «задом наперед». :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

/dev/random писал(а):
09.03.2011 11:03
Вообще, идея такого "поточного 2-в-1" имеет право на жизнь, и, возможно, найдёт аудиторию. Но я предпочту tar.

А я по ситуации. Если нужно сжать цельную работу из сотен файлов, то tar. А если подборку статей или книг, которые удобнее выдёргивать по одной, то нет.

Теоретически для второго варианта подошла бы, и даже лучше, фс со внутренним сжатием. Но на практике фс нужно сначала разметить под конкретный размер, а уже потом нагрузить файлами.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

/dev/random писал(а):
09.03.2011 11:03
идея такого "поточного 2-в-1" имеет право на жизнь, и, возможно, найдёт аудиторию. Но я предпочту tar.
Собственно, вот прямо сейчас родилась идея. Не совсем KISS, но почти. Некий «компрессор», который принимает на входе поток tar, умеет частично обрабатывать заголовки файлов tar, сжимать содержимое и выдавать поток архива «задом наперед», о котором я писал выше. При распаковке умеет находить нужные файлы (если пользователю нужны не все), разжимать и выплевывать на выход поток tar.
:)
Единственный минус — привязка к формату потока.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

watashiwa_daredeska писал(а):
09.03.2011 11:09
Да, вот еще одно нарушение потоковости: никогда заранее не известно, какой размер будет занят сжатым файлом в архиве, пока его не сожмут полностью, т.е. нельзя поточно создать «заголовок» перед файлом в архиве, только записать метаинфу после него. Т.е. весь архив вообще будет «задом наперед». :)

Метаинформацию можно искать не по адресу, а по сигнатуре. И она же может служить меткой начала файла.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

t.t писал(а):
09.03.2011 11:13
Метаинформацию можно искать не по адресу, а по сигнатуре.
Угу, а первым в архиве будет многогигабайтный файл. Нет, не пойдет. Лучше уж читать с конца.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: tar.xz VS. 7z

Сообщение drBatty »

frp писал(а):
08.03.2011 19:29
7z лучше, чем tar.xz - можно посмотреть список файлов, не разжимая всё.

бред. вы можете сначала сжать файлы, а потом упаковать их в тарбол.
t.t писал(а):
08.03.2011 22:09
Список файлов без распаковки прочитать нельзя. Создать архив со сжатием, из которого можно будет извлечь отдельный файл, нельзя.

можно.
продемонстрировать?
t.t писал(а):
08.03.2011 22:09
Но сколько лет назад кто-то из присутствующих последний раз видел работающий стример?

лет 20 назад, ну и что? многотомные архивы всё равно поддерживаются.
t.t писал(а):
09.03.2011 00:24
Добавлю для ясности: я не предлагаю выбросить tar и использовать архиваторы «два в одном» вроде 7z. Я это к тому, что по-хорошему вместо tar-а давно пора написать новый «потоковый» архиватор, учитывающий современные реалии.

не вижу никакого смысла. новый сжиматель лучше чем LZMA2 (xz) я сейчас делаю. но вот лучше тара... как на лоре говорят - "не нужен".
KiWi писал(а):
09.03.2011 03:13
Чтобы не читать весь файл -- эта информация должна находится где-то в начале файла, а это убивает потоковость.

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

ИМХО придётся блоками паковать метров по 1..100.
watashiwa_darede... писал(а):
09.03.2011 09:32
Не обязательно. Если заголовок будет у каждого «файла» с известным размером, то получится что-то вроде linked list, что будет лишь слегка похуже единого заголовка. Да, можно еще в конец файла постфактум записывать каталог.

я думаю в каждом блоке хранить содержимое этого блока.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: tar.xz VS. 7z

Сообщение drBatty »

watashiwa_darede... писал(а):
09.03.2011 11:09
Да, вот еще одно нарушение потоковости: никогда заранее не известно, какой размер будет занят сжатым файлом в архиве, пока его не сожмут полностью, т.е. нельзя поточно создать «заголовок» перед файлом в архиве, только записать метаинфу после него. Т.е. весь архив вообще будет «задом наперед». :)

если сжимать блоками, то вполне можно перед блоком записывать всю информацию.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: tar.xz VS. 7z

Сообщение watashiwa_daredeska »

drBatty писал(а):
09.03.2011 13:21
если сжимать блоками, то вполне можно перед блоком записывать всю информацию.
Какую всю? Всю метаинформацию о файле (имя, mtime, ctime, owner, group, permissions, ...) дублировать в каждом блоке? А зачем? Во-вторых, зачем блоки в файле? Это ведь не файловая система, где жертвуют эффективностью использования пространства в пользу скорости. Тут как раз важнее пространство, о скорости позаботится ФС.
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: tar.xz VS. 7z

Сообщение taaroa »

t.t писал(а):
08.03.2011 22:09
Но сколько лет назад кто-то из присутствующих последний раз видел работающий стример?

https://secure.wikimedia.org/wikipedia/ru/wiki/Стример
(inurl) писал(а):Ленточная библиотека имеет значительные преимущества перед дисковым массивом по стоимости и энергопотреблению при больших объёмах хранимых данных. Например, согласно расчётам издания Clipper Notes, для поддержания в постоянном доступе архива размером 6,6 петабайт в течение 5 лет, стоимость дисковой системы (RAID-массивов, контроллеров, разветвителей, дисков, питания, охлаждения и пр.) составит 14,7 млн долларов (в том числе стоимость электроэнергии — 550 тыс. долларов), в то время как стоимость ленточной библиотеки — менее 700 тыс. долларов (в том числе стоимость электроэнергии — 304 доллара).

...а они есть.
p.s. дома нет стримера, но в 80-ых активно пользовался аудиокассетами (;
:wq
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: tar.xz VS. 7z

Сообщение /dev/random »

watashiwa_daredeska писал(а):
09.03.2011 13:48
Какую всю? Всю метаинформацию о файле (имя, mtime, ctime, owner, group, permissions, ...) дублировать в каждом блоке? А зачем? Во-вторых, зачем блоки в файле? Это ведь не файловая система, где жертвуют эффективностью использования пространства в пользу скорости. Тут как раз важнее пространство, о скорости позаботится ФС.

Нет, не обязательно. Можно, например, в начале блока ставить размер блока (который может быть меньше для хвоста файла), бит, показывающий, является ли блок первым для нового файла, и заголовок, если является. Размер сжатого потока в заголовок не входит. Просто распаковываются все блоки до тех пор, пока не встретится очередной "первый".

У меня уже была когда-то такая идея. Но она тоже разбивается об необходимость создания 2-в-1.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

drBatty писал(а):
09.03.2011 13:12
frp писал(а):
08.03.2011 19:29
7z лучше, чем tar.xz - можно посмотреть список файлов, не разжимая всё.

бред. вы можете сначала сжать файлы, а потом упаковать их в тарбол.
t.t писал(а):
08.03.2011 22:09
Список файлов без распаковки прочитать нельзя. Создать архив со сжатием, из которого можно будет извлечь отдельный файл, нельзя.

можно.
продемонстрировать?

Что будете демонстрировать? набор костылей с временными файлами? Спасибо, не нужно. (:

drBatty писал(а):
09.03.2011 13:12
t.t писал(а):
08.03.2011 22:09
Но сколько лет назад кто-то из присутствующих последний раз видел работающий стример?

лет 20 назад, ну и что? многотомные архивы всё равно поддерживаются.

Только мы говорим не о многотомных архивах, а об архиве сжатых файлов (в отличие от сжатого архива). Так что я не совсем понимаю, к чему Вы это.

drBatty писал(а):
09.03.2011 13:12
t.t писал(а):
09.03.2011 00:24
Добавлю для ясности: я не предлагаю выбросить tar и использовать архиваторы «два в одном» вроде 7z. Я это к тому, что по-хорошему вместо tar-а давно пора написать новый «потоковый» архиватор, учитывающий современные реалии.

не вижу никакого смысла. новый сжиматель лучше чем LZMA2 (xz) я сейчас делаю. но вот лучше тара... как на лоре говорят - "не нужен".

Я выше написал, зачем он нужен. Есть другое решение (кроме архиваторов «два а одном»)? Подпорку с временными файлами не предлагать.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: tar.xz VS. 7z

Сообщение drBatty »

watashiwa_darede... писал(а):
09.03.2011 13:48
Какую всю? Всю метаинформацию о файле (имя, mtime, ctime, owner, group, permissions, ...) дублировать в каждом блоке? А зачем? Во-вторых, зачем блоки в файле? Это ведь не файловая система, где жертвуют эффективностью использования пространства в пользу скорости. Тут как раз важнее пространство, о скорости позаботится ФС.

почему "дублировать"? в начале архива хранится лишь информация о типе архива, а в каждом блоке лежит информация о файлах (имя, права, штампы, прочее). Это такая файловая система. Только я жертвую скорость в пользу места. для того, что-бы прочитать имена и прочее, мне достаточно прочитать заголовки блоков.
/dev/random писал(а):
09.03.2011 13:58
Нет, не обязательно. Можно, например, в начале блока ставить размер блока (который может быть меньше для хвоста файла), бит, показывающий, является ли блок первым для нового файла, и заголовок, если является. Размер сжатого потока в заголовок не входит. Просто распаковываются все блоки до тех пор, пока не встретится очередной "первый".

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

t.t писал(а):
09.03.2011 14:20
Что будете демонстрировать? набор костылей с временными файлами? Спасибо, не нужно. (:

ну... не нужно - так не нужно.
t.t писал(а):
09.03.2011 14:20
Есть другое решение (кроме архиваторов «два а одном»)? Подпорку с временными файлами не предлагать.

нет.

ЗЫЖ по моей схеме в одном блоке может находится любое число файлов. размер блока определяется алгоритмом BWT и равен примерно 10*N. Если памяти 100Мб, то размер блока == 10Мб.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: tar.xz VS. 7z

Сообщение t.t »

taaroa писал(а):
09.03.2011 13:49
t.t писал(а):
08.03.2011 22:09
Но сколько лет назад кто-то из присутствующих последний раз видел работающий стример?

https://secure.wikimedia.org/wikipedia/ru/wiki/Стример
(inurl) писал(а):Ленточная библиотека имеет значительные преимущества перед дисковым массивом по стоимости и энергопотреблению при больших объёмах хранимых данных. Например, согласно расчётам издания Clipper Notes, для поддержания в постоянном доступе архива размером 6,6 петабайт в течение 5 лет, стоимость дисковой системы (RAID-массивов, контроллеров, разветвителей, дисков, питания, охлаждения и пр.) составит 14,7 млн долларов (в том числе стоимость электроэнергии — 550 тыс. долларов), в то время как стоимость ленточной библиотеки — менее 700 тыс. долларов (в том числе стоимость электроэнергии — 304 доллара).

...а они есть.
p.s. дома нет стримера, но в 80-ых активно пользовался аудиокассетами (;

Исключения лишь подтверждают правила. (: Я понимаю, что штучные экземпляры есть.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: