Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] просмотр файла в архиве без распаковки архива (http://forum.oszone.net/showthread.php?t=283831)

jah 19-06-2014 01:22 2365923

просмотр файла в архиве без распаковки архива
 
Здравствуйте!

На большом архиве 7z заметил, что для просмотра файла в нём (winrar, 7zip), начинается распаковка других файлов в этом архиве (пока не знаю всех тонкостей процесса распаковки, но похоже, что распаковываются не все файлы архива).
Это достаточно неудобно, так как для просмотра одного маленького файла в большом архиве приходится долго ждать (можно, конечно, вынести файл из архива, а потом открыть, но интересует именно открытие файла из самого архива).
Есть ли способ сделать так, чтобы при просмотра файла в архиве, распаковки других файлов не происходило, то есть распаковывался только один этот файл?

Спасибо!

Petya V4sechkin 19-06-2014 08:18 2366026

Цитата:

Цитата jah
На большом архиве 7z заметил, что для просмотра файла в нём (winrar, 7zip), начинается распаковка других файлов в этом архиве

Это особенность непрерывных архивов (solid archive).

Цитата:

Цитата jah
сделать так, чтобы при просмотра файла в архиве, распаковки других файлов не происходило

Перепаковать, не используя опцию "непрерывный архив".

mwz 19-06-2014 11:50 2366085

Цитата:

Цитата Petya V4sechkin
Перепаковать, не используя опцию "непрерывный архив". »

jah, Угу. Но не забывая, что размер архива при этом увеличится.

SergAS70 19-06-2014 12:02 2366087

jah, чем смотрите? В тотал командоре не пробЫвали?

Iska 19-06-2014 13:23 2366113

SergAS70, без разницы чем смотреть, если это solid-архив.

jah 19-06-2014 22:59 2366318

Цитата:

Цитата Petya V4sechkin
Это особенность непрерывных архивов (solid archive). »

Цитата:

Цитата Petya V4sechkin
Перепаковать, не используя опцию "непрерывный архив". »

спасибо, почти всё встало на свои места

почти, так как остался такой момент: как бы точно сориентироваться какой из форматов архива - непрерывный?

так скажем, "сочной" информации не встретилось

из того, что встретилось
http://www.7-zip.org/7z.html
Цитата:

The main features of 7z format:

Open architecture
High compression ratio
Strong AES-256 encryption
Ability of using any compression, conversion or encryption method
Supporting files with sizes up to 16000000000 GB
Unicode file names
Solid compressing
Archive headers compressing
причём, в русскоязычной версии сайта, такой вывод сделать неочевидно
http://7-zip.org.ua/ru/7z.html
Цитата:

Основные преимущества формата 7z:

Открытая архитектура
Высокий коэффициент сжатия
Шифрование AES-256
Возможность выбора любого метода сжатия, конверсии и шифрования
Поддержка файлов с размером до 16000000000 GB
Поддержка файлов с именами в формате юникод
Сильная компрессия
Сжатие заголовков архива
хотя алгоритмы непрерывного архивирования обеспечивают большую степень сжатия, где та грань степени сжатия, которая отличит сильнее сжатый архив на предмет его непрерывности


возможно не точно:
zip, как я понял не непрерывный
rar может быть как непрерывным, так и не непрерывным (сориентировался по тому, что в winrar можно ставить/не ставить галочку Create solid archive (Создать непрерывный архив))

в целом, на данный момент, я так понимаю, нужно досконально изучить метод сжатия, после чего возможно удастся сделать вывод о том, непрерывный архив получится в итоге или нет

mwz 20-06-2014 01:53 2366368

Цитата:

Цитата jah
в целом, на данный момент, я так понимаю, нужно досконально изучить метод сжатия, после чего возможно удастся сделать вывод о том, непрерывный архив получится в итоге или нет »

Непрерывный архив не имеет отношения к методам сжатия. Это независимая опция.
Он получается когда все упаковываемые файлы рассматриваются не раздельно, а как непрерывная цепочка байт, т.е. при упаковке последующих файлов активно используется уже упакованная информация. И, в общих чертах, если в обычном архиве для упаковки двух одинаковых файлов потребуется двойное место, то при упаковке их в solid-архив второй файл упаковываться не будет, а в архив будет вставлена ссылка типа "То же самое, что с байта такого-то по байт такой-то в уже имеющейся части".

Соответственно если архив попорчен, то из непрерывного архива можно извлечь информацию только до места сбоя, в то время как в обычном архиве можно было бы извлечь абсолютно всё кроме того файла, на который пришёлся сбой.

jah 20-06-2014 20:29 2366694

Цитата:

Цитата mwz
Непрерывный архив не имеет отношения к методам сжатия. Это независимая опция.
Он получается когда все упаковываемые файлы рассматриваются не раздельно, а как непрерывная цепочка байт, т.е. при упаковке последующих файлов активно используется уже упакованная информация. И, в общих чертах, если в обычном архиве для упаковки двух одинаковых файлов потребуется двойное место, то при упаковке их в solid-архив второй файл упаковываться не будет, а в архив будет вставлена ссылка типа "То же самое, что с байта такого-то по байт такой-то в уже имеющейся части".
Соответственно если архив попорчен, то из непрерывного архива можно извлечь информацию только до места сбоя, в то время как в обычном архиве можно было бы извлечь абсолютно всё кроме того файла, на который пришёлся сбой. »

спасибо за пояснение, действительно, я не так себе это представлял до этого

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

Также сделал вывод, что непрерывность архива определяется исключительно ПО, которое делает архивацию, то есть потенциально любой алгоритм сжатия можно использовать как для получения непрерывных, так и не непрерывных архивов,
и существующее ПО типа winrar и 7zip определяет как это делать на своё усмотрение:
например,
winrar архивы rar и rar5 позволяет сделать как непрерывными, так и не непрерывными, zip - только не непрерывными
7zip не совсем понятно как делает, но похоже, что zip делает не непрерывным, 7z - непрерывным

Iska 21-06-2014 00:50 2366743

Цитата:

Цитата jah
то есть потенциально любой алгоритм сжатия можно использовать как для получения непрерывных … архивов, »

Теоретически — да. Практически всё упирается в основное приложение, породившее тот или иной формат: WinZip (а ранее PKZIP) для zip-архивов, WinRAR/RAR — для rar-архивов. Здесь всё очень тонко упирается в формат данных и особенно в лицензирование. Собственно, формат zip и был порождён грызнёй между SEA и PKZIP вокруг формата PKARC и «трошки позаимствованным» (а на самом деле — полностью «слямзенным» и слегка оптимизированным) кодом из PKARC для своего архиватора. Потому на данный момент можно ли делать в том или ином формате solid-архивы определяется самим используемым форматом.

Цитата:

Цитата jah
и существующее ПО типа winrar и 7zip определяет как это делать на своё усмотрение: »

Нет. На Ваше усмотрение.

mwz 21-06-2014 00:58 2366745

Цитата:

Цитата jah
Если, исходя из вышеизложенного, я теперь правильно сделал вывод, то »

Если не придираться к формулировкам -- то смысл именно такой.
Метод (solid или нет), если архиватор позволяет и то и то, выбираете вы сами.
Цитата:

Цитата jah
потенциально любой алгоритм сжатия можно использовать как для получения непрерывных, так и не непрерывных архивов »

Потенциально -- да.
Цитата:

Цитата jah
zip - только не непрерывными »

Я не смотрел последние версии WinZIP.
Цитата:

Цитата jah
7zip не совсем понятно как делает »

В настройках выбора не нашёл, в описании тоже, в настройках плагина для TotalCmd -- тоже.
Сжал exe-файл размером 225 877 байт в архив .7z, а затем его же вместе с его копией, дав ей другое имя.
Результат: 158 462 байта и 159 674 байта соответственно. Разница 1212 байт, менее 1% от сжатого первого файла.
Вывод: архив непрерывный (а часть разницы ушла на хранение чисто второго имени).

PS
Уточнение по 7z в следующей реплике, "по вновь открывшимся обстоятельствам".


Цитата:

Цитата Iska
Потому на данный момент можно ли делать в том или ином формате solid-архивы определяется самим используемым форматом. »

В документации к очень широко распространённому в древности архиватору ARJ была рекомендация по уменьшению размера архива: упаковать все файлы с опцией без сжатия -m0 (т.е. фактически не упаковывать, а только сшить все архивируемые файлы в один выходной файл), а затем уже применить к полученному архиву опцию максимального сжатия -m5. Т.е. непрерывный архив создавался, но создавался в два шага.

Iska 21-06-2014 01:10 2366747

Цитата:

Цитата mwz
В настройках выбора не нашёл, в описании тоже, »

Цитата:

Solid Block size

Specifies the size of a solid block. You can also disable solid mode. In solid mode all files will be compressed as continuous data blocks. Usually compressing to a solid archive improves the compression ratio. You can use this option only for 7z archives. The updating of solid .7z archives can be slow, since it can require some recompression.

mwz 21-06-2014 01:24 2366748

Iska, oops, не добрался...
Теперь и у плагина для TotalCmd нашёл:


jah 21-06-2014 09:17 2366782

Iska, mwz, спасибо за ценную информацию

Цитата:

Цитата mwz
И, в общих чертах, если в обычном архиве для упаковки двух одинаковых файлов потребуется двойное место, то при упаковке их в solid-архив второй файл упаковываться не будет, а в архив будет вставлена ссылка типа "То же самое, что с байта такого-то по байт такой-то в уже имеющейся части". »

Цитата:

Цитата mwz
В настройках выбора не нашёл, в описании тоже, в настройках плагина для TotalCmd -- тоже.
Сжал exe-файл размером 225 877 байт в архив .7z, а затем его же вместе с его копией, дав ей другое имя.
Результат: 158 462 байта и 159 674 байта соответственно. Разница 1212 байт, менее 1% от сжатого первого файла.
Вывод: архив непрерывный (а часть разницы ушла на хранение чисто второго имени). »

метод проверки понял

сам бы наверное никогда не догадался, но после всего вышеописанного интуитивно наверное можно было бы дойти до того, чтобы искать непрерывность в 7zip среди размеров блока
хотя не совсем понятно почему в англоязычном варианте пункт обозначен как non-solid (если слово solid - сплошной, цельный, непрерывный, ..., то non-solid вроде бы как его противоположность)

DedAlex 21-06-2014 09:24 2366785

Цитата:

Цитата mwz
В документации к очень широко распространённому в древности архиватору ARJ была рекомендация по уменьшению размера архива: упаковать все файлы с опцией без сжатия -m0 (т.е. фактически не упаковывать, а только сшить все архивируемые файлы в один выходной файл), а затем уже применить к полученному архиву опцию максимального сжатия -m5. Т.е. непрерывный архив создавался, но создавался в два шага. »

До сих пор встречаются архивы tar.gz, смысл которых тоже похож. Tar не является собственно архивом, просто файлы слитые в один, и GZip, который неплохо сжимает, но может сжать только один файл.

jah 21-06-2014 10:34 2366819

Цитата:

Цитата jah
хотя не совсем понятно почему в англоязычном варианте пункт обозначен как non-solid (если слово solid - сплошной, цельный, непрерывный, ..., то non-solid вроде бы как его противоположность) »

тут наверное так: судя по тому, что 7z-архив без выставления "Непрерывный" был непрерывным, опция "Непрерывный" делает его как раз наоборот не непрерывным, то есть в русскоязычной версии неправильно переведено, эта опция non-solid должна была звучать наподобие "Не непрерывный"
проверка по методу mwz это подтвердила
кстати непрерывности также можно добиться выставив размер блока больше, чем суммарный размер файлов, что вполне логично

mwz 21-06-2014 10:48 2366825

Цитата:

Цитата jah
хотя не совсем понятно почему в англоязычном варианте пункт обозначен как non-solid »

При выборе этого пункта создаётся обычный, не solid, архив.
Остальные пункты в выпавшем списке -- это максимальный размер уже упакованного блока, в пределах которого при создании непрерывного архива ищется соответствие между упаковываемым файлом и уже упакованными. И если одинаковые файлы отстоят друг от друга (в порядке следования при упаковке) на бОльшее расстояние, то второй файл будет упаковываться вновь, без оглядки на историю. Чем больше выбранный размер -- тем плотнее получаемый архив, но тем большее время затрачивается на его создание из-за необходимости хранить и проверять текущую историю упаковки.

"Одинаковый файл" -- это частный, наиболее удобный для понимания случай. В реалии же многие файлы содержат абсолютно одинаковые, иногда достаточно длинные последовательности байт, на которые это тоже распространяется.

Ну и ещё дополнение.
Когда появился первый RAR с возможностью создания непрерывных архивов, то я обратил внимание, что при упаковке групп файлов он предварительно сортирует упаковываемые файлы по типам. При этом повышается вероятность того, что файлы с одинаковыми кусками кодов окажутся ближе друг к другу и расчётные работы при создании непрерывного архива уменьшатся, а плотность увеличится.

Цитата:

Цитата DedAlex
архивы tar.gz, смысл которых тоже похож »

Ага, это я тоже помню -- но ARJ для меня ближе, почему и дал как пример. :)

jah 21-06-2014 21:00 2366968

Ещё раз всем спасибо, добротная тема получилась


Время: 05:25.

Время: 05:25.
© OSzone.net 2001-