Зачем быть.* смола.gz по-прежнему гораздо чаще, чем *.смола.xz? [закрытый]



всякий раз, когда я вижу некоторые исходные пакеты или двоичные файлы, которые сжимаются с помощью GZip, мне интересно, есть ли еще причины в пользу gz над xz (исключая путешествие во времени до 2000 года), экономия алгоритма сжатия LZMA существенна, а декомпрессии не хуже, чем gzip.

626   9  

9 ответов:

"Наименьший Общий Знаменатель". Сэкономленное дополнительное пространство редко стоит потери совместимости. Большинство встроенных систем Linux имеют gzip, но не xz. Многие старые системы. Gnu Tar, который является отраслевым стандартом, поддерживает флаги -z обрабатывать через gzip, и -j обрабатывать через bzip2, но некоторые старые системы не поддерживают -J флаг xz, что означает, что он требует 2-шаговой операции (и много дополнительного дискового пространства для несжатый .tar Если вы не используете синтаксис |tar xf - - что многие люди не знают.) Кроме того, распаковка полной файловой системы около 10 МБ из tar.gz на встроенной руке занимает около 2 минут и на самом деле не проблема. Понятия не имею о xz но bzip2 занимает около 10-15 минут. Определенно не стоит экономить пропускную способность.

окончательный ответ доступность, с вторичным ответом цели. Причины, по которым XZ не обязательно так подходит, как Gzip:

  • встроенные и устаревшие системы, скорее всего, не имеют достаточной доступной памяти для распаковки архивов LZMA/LZMA2, таких как XZ. Например, если XZ может сбрить 400 Кб (против Gzip) с пакета, предназначенного для маршрутизатора OpenWrt, что хорошего в небольшой экономии места, если маршрутизатор имеет 16 Мб оперативной памяти? Аналогичная ситуация появляется с очень старыми компьютерными системами. Можно было бы издеваться над мыслью о загрузке и компиляции последней версии Bash на древнем SparcStation LX с 32 МБ оперативной памяти, но это происходит.

  • такие системы обычно имеют медленные процессоры, и увеличение времени декомпрессии может быть очень высоким. Три секунды дополнительно, чтобы распаковать на вашем Core i5 может быть очень долго на 200 МГц ARM core или 50 МГц microSPARC. Сжатие Gzip чрезвычайно быстро на таких процессорах, когда по сравнению со всеми лучшими методами сжатия, такими как XZ или даже Bzip2.

  • Gzip практически повсеместно поддерживается каждой UNIX-подобной системой (и почти каждой не-UNIX-подобной системой тоже), созданной за последние два десятилетия. Доступность XZ гораздо более ограничена. Сжатие бесполезно без возможности его распаковки.

  • более высокое сжатие занимает много времени. Если время сжатия более важно, чем степень сжатия, Gzip бьет XZ. Честно говоря, lzop намного быстрее, чем Gzip, и все еще сжимается хорошо, поэтому приложения, которые нуждаются в максимально быстром сжатии и не требуют повсеместности Gzip, должны смотреть на это вместо этого. Я обычно быстро перетасовываю папки через доверенное подключение к локальной сети с помощью таких команд, как "tar-c * / lzop -1 / socat-u-tcp-connect: 192.168.0.101: 4444", и Gzip можно использовать аналогично по гораздо более медленной ссылке (т. е. делать то же самое, что я только что описал через SSH-туннель над Интернет.)

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

  • отправка данных по медленным каналам связи. Исходный код ядра Linux 3.7 на 34 МБ меньше в формате XZ, чем в формате Gzip. Если у вас есть супер быстрое соединение, выбор XZ может означать экономию одной минуты времени загрузки; на дешевом DSL-соединении или сотовой связи 3G он может сократить час или более от загрузки время.

  • сжатие архивов резервных копий. Сжатие исходного кода для Apache httpd-2.4.2 с помощью "gzip-9" и "xz-9e" дает архив XZ, который составляет 62,7% от размера архива Gzip. Если такая же сжимаемость существует в наборе данных, который вы в настоящее время храните как 100 гигабайт .смола.архивы gz, преобразование в .смола.архивы xz отрезали бы колоссальный 37,3 гиб от резервного набора. Копирование всего этого резервного набора данных на жесткий диск USB 2.0 (максимальное значение около 30 Мб/сек передачи), поскольку данные Gzipped заняли бы 55 минут, но сжатие XZ сделало бы резервное копирование на 20 минут меньше. Предполагая, что вы будете работать с этими резервными копиями на современной настольной системе с большим количеством мощности процессора и скоростью сжатия только один раз не является серьезной проблемой, использование сжатия XZ обычно имеет больше смысла. Зачем тасовать лишние данные, если вам это не нужно?

  • распространение больших объемов данных, которые могут быть сильно сжимаемыми. Как и ранее упоминалось, что исходный код Linux 3.7 составляет 67 MiB .смола.xz и 101 MiB для .смола.GZ; несжатый исходный код составляет около 542 MiB и почти полностью текст. Исходный код (и текст в целом) обычно сильно сжимается из-за избыточности содержимого, но компрессоры, такие как Gzip, которые работают с гораздо меньшим словарем, не могут воспользоваться избыточностью, которая выходит за рамки их размера словаря.

в конечном счете, все возвращается к четырехпозиционный компромисс: сжатый размер, скорость сжатия/декомпрессии, скорость копирования/передачи (чтение данных с диска/сети) и доступность компрессора/декомпрессора. Выбор сильно зависит от вопроса "Что вы планируете делать с этими данными?"

и проверить этого поста, из которого я узнал некоторые вещи, которые я повторить здесь.

Я сделал свой собственный тест на 1.1 Гб Linux установки vmdk образ:

rar    =260MB   comp= 85s   decomp= 5s
7z(p7z)=269MB   comp= 98s   decomp=15s
tar.xz =288MB   comp=400s   decomp=30s
tar.bz2=382MB   comp= 91s   decomp=70s
tar.gz =421MB   comp=181s   decomp= 5s

все уровни сжатия на max, CPU Intel I7 3740QM, Память 32GB 1600, источник и место назначения на RAM-диске

Я обычно использую rar или 7z для архивирования обычных файлов, таких как документы.
и для архивирования системных файлов я использую .смола.ГЗ или .смола.xz с помощью file-roller или tar с параметрами-z или-J вместе с --preserve для сжатия изначально с помощью tar и сохранения разрешений (также альтернативно .смола.7z или .смола.rar можно использовать)

обновление: как tar только сохранить нормальные разрешения, а не ACL в любом случае, также простой .7z архивов и резервное копирование и восстановление разрешения и права доступа вручную через помощью команды getfacl и sefacl можно использовать, которая, как представляется, наилучшим вариантом для обеих архивация файлов или системных файлов, резервного копирования, потому что он будет полностью сохранять права доступа и права доступа, и контрольной суммы, проверка целостности и шифрование возможность, единственным недостатком является то, что p7zip доступны далеко не везде

от автора утилиты сжатия Lzip:

Xz имеет сложный формат, частично специализированный на сжатии исполняемые файлы и предназначены для расширения за счет собственных форматов. Из четыре компрессора протестированы здесь, xz является единственным чужеродным для Unix концепция "делать одно дело и делать это хорошо". Это меньше подходит для обмена данными, и не подходит для длительного архивирование.

В общем, чем сложнее формат, тем менее вероятно, что он может быть расшифрованы в будущем. Но формат XZ, как и его печально известный предшественник lzma-один, специально плохо спроектирован. ХZ копии почти все дефекты gzip, а затем добавляет еще несколько, как хрупкие целые числа переменной длины. Только один бит-флип в любой бит 7 байт одно целое число переменной длины и весь поток xz приходит кувыркаясь вниз, как карточный домик. Использование xz для чего-либо, кроме сжатие недолговечных исполняемых файлов не выполняется рекомендуемый.

Не поймите меня неправильно. Я очень благодарен Игорю Павлову за изобретение / открытие LZMA, но xz-это третья попытка его подписчики, чтобы воспользоваться популярностью 7zip и заменить gzip и bzip2 с неподходящими или плохо разработанными форматами. Особенно, позорно, что поддержка LZMA-alone была реализована в обоих GNU и Linux.

http://www.nongnu.org/lzip/lzip_benchmark.html

честно говоря, я просто узнаю.формат xz из учебного материала. Поэтому я просто использовал его git repo, чтобы сделать тест. Git - это git:/ / git.free-electrons.com / training-materials.git, и я также составил три учебных слайда. Общий размер каталога составляет 91 м, со смесью текстовых и двоичных данных.

вот мой быстрый результат. Может быть, люди все еще предпочитают деготь.gz просто потому, что он намного быстрее сжимается? Я лично даже использую простой деготь, когда нет много преимуществ, чтобы быть приобретенный в обжатии.

[02:49:32]wujj@WuJJ-PC-Linux /tmp $ time tar czf test.tgz training-materials/

real    0m3.371s
user    0m3.208s
sys     0m0.128s
[02:49:46]wujj@WuJJ-PC-Linux /tmp $ time tar cJf test.txz training-materials/

real    0m34.557s
user    0m33.930s
sys     0m0.372s
[02:50:31]wujj@WuJJ-PC-Linux /tmp $ time tar cf test.tar training-materials/

real    0m0.117s
user    0m0.020s
sys     0m0.092s
[02:51:03]wujj@WuJJ-PC-Linux /tmp $ ll test*
-rw-rw-r-- 1 wujj wujj 91944960 2012-07-09 02:51 test.tar
-rw-rw-r-- 1 wujj wujj 69042586 2012-07-09 02:49 test.tgz
-rw-rw-r-- 1 wujj wujj 60609224 2012-07-09 02:50 test.txz
[02:56:03]wujj@WuJJ-PC-Linux /tmp $ time tar xzf test.tgz

real    0m0.719s
user    0m0.536s
sys     0m0.144s
[02:56:24]wujj@WuJJ-PC-Linux /tmp $ time tar xf test.tar

real    0m0.189s
user    0m0.004s
sys     0m0.108s
[02:56:33]wujj@WuJJ-PC-Linux /tmp $ time tar xJf test.txz

real    0m3.116s
user    0m2.612s
sys     0m0.184s

по той же причине люди в Windows (r) используют zip-файлы вместо 7zip, а некоторые по-прежнему используют rar вместо других форматов... Или mp3 используется в музыке, а не aac+, и так далее.

каждый формат имеет свои преимущества, и люди используют, чтобы придерживаться решения, которое они узнали, когда начали использовать компьютер. Добавьте это к обратной совместимости и быстрой пропускной способности + ГБ или ТБ пространства на жестких дисках, и преимущества большего сжатия не будут столь актуальны.

gz поддерживается везде и хорошо для переносимости.

xz новее и теперь так же широко или хорошо поддерживается. Это сложнее, чем gzip с большим количеством опций сжатия.

Это не единственная причина, по которой люди не всегда могут использовать xz. XZ может занять очень много времени для сжатия, а не тривиальное количество времени, поэтому даже если он может дать превосходные результаты, он не всегда может быть выбран. Еще одна слабость заключается в том, что он может использовать много памяти, особенно для сжатия. Этот чем больше вы хотите сжать элемент, тем дольше он занимает, и это экспоненциально с уменьшением отдачи.

однако на уровне сжатия 1 для больших двоичных элементов в моем опыте xz часто может давать гораздо меньшие результаты за меньшее время, чем zlib на уровне 9. Иногда это может быть очень существенной разницей, в то же время, как zlib, xz может сделать файл, который составляет половину размера файла zlib.

bzip2 находится в аналогичной ситуации, однако xz имеет гораздо большие преимущества и сильное окно, где он работает значительно лучше во всем.

также одним из важных моментов для gzip является то, что он совместим с rsync / zsync. Это может быть огромным преимуществом в отношении пропускной способности в случаях. LZMA/bzip2 / xz не поддерживает rsync и, вероятно, не будет поддерживать его в ближайшее время.
Одной из особенностей LZMA является то, что она использует тихое большое окно. Чтобы сделать это rsync / zsync дружественный нам, вероятно, нужно будет уменьшить это окно, которое ухудшит его производительность сжатия.

Да мысль у меня была, что первоначальный вопрос может быть оставлен в эти дни, как "почему тар.ГЗ чаще встречается, чем деготь.ЛЗ" (после lz вроде компресса немного лучше чем xz,xz и сказал быть плохим выбором для архивирования, хотя и предлагает некоторые интересные функции, такие как случайный доступ). Я полагаю, что ответ "импульс" люди привыкли использовать его, есть хорошая поддержка библиотеки и т. д.так далее. Введение lz может означать, что xz будет расти меньше теперь тоже быстро, Фу-у-у...

однако, как говорится, lz кажется распаковать медленнее чем xz, и есть новые вещи на горизонте, такие как Brotli, поэтому неясно, что произойдет с точки зрения популярности...но у меня, кажется, несколько .LZ файлы в дикой природе FWIW...

Comments

    Ничего не найдено.