С большинством дистрибутивов Linux, бросающих gzip и bzip2 в пользу LZMA2 для сжатия своих пакетов и многих реализаций с открытым исходным кодом для многих платформ, я задаюсь вопросом: не следует ли нам откладывать формат DEFLATE и .zip
(который, к сожалению, был унаследован и далее) для отдыха и перехода к другим, современным способам распространения наших (исходных) пакетов?
GNU tar поддерживает переключатель J
, который использует xz
(другой компрессор LZMA2) в качестве фильтра:
$ tar cJf foo.tar.xz foo/
Однако я обычно использую 7z
(реализация p7zip) и его друга 7za
под Linux для создания архивов. Я все еще использую парадигму "избегать тар-бомб" при создании архивов, то есть там каталог в этих архивах, поэтому извлечение из командной строки не приводит к выделению файлов в текущем каталоге (это стандартный modus operandi на Linux с такими вещами, как tar
, но, похоже, это намного меньше, чем в Windows).
В любом случае это связано с использованием в пакетах (например, RPM Fedora и DEBs Ubuntu), а также фильтрами для таких инструментов, как tar
, что LZMA2 - это "следующая лучшая вещь", которая будет использоваться после bzip2. Он имеет большую степень сжатия (значительно превосходит bzip2 в стандартных настройках) и очень быстро работает (сжатие немного медленнее, чем gzip,
Я сам тестировал бенчмаркинг, но я хотел бы обратить внимание на более обширные тесты:
- Рейтинг на основе теста compressionratings.com
- Оценка эффективности на maximumcompression.com
Теперь вы заметите, что 7-zip, который является эталонной реализацией, не появляется на первом месте. Однако Freearc использует собственный формат .arc
, который на самом деле не обладает перекрестной платформой и несовместим со старым ARC с 80-х годов. nanozip не является открытым исходным кодом, какой вид спада, но это алгоритм, который считается не архиватором!
В любом случае, теперь производительность с 7-zip и ее производными реализациями (xz) больше не является проблемой, а степень сжатия говорит сама за себя, я чувствую, что распространяю исходные пакеты как архивы .7z
или .tar.xz
. Тем не менее, у меня есть два препятствия передо мной, которые я, кажется, не в состоянии взять:
-
Адвокаты WinRAR. "Не ошибетесь, я не обижаюсь на WinRAR или его пользователей, просто я не могу сделать RAR на Linux, и нет необходимости, потому что у нас есть бесплатные инструменты LZMA2. И, как я уже сказал, поскольку он становится неотъемлемой частью дистрибутивных пакетов, он доступен на любом современном дистрибутиве. Так как требуется примерно то же время, чтобы сделать
.7z
, чем a.rar
и файлы LZMA2, как правило, меньше, я не понимаю, почему не использовать 7-zip. -
tar-архивы должны быть zip или bzip2, без исключений. Это сложно. Почему так много людей впечатлено gzip? Даже bzip2 почти не видит большого использования. Конечно, gzip работает быстро, это хорошо, когда речь идет о сжатии по требованию, например, на веб-серверах или при создании больших зеркальных резервных копий. Но как насчет распространения программного обеспечения? LZMA2 очень асимметричен. Хотя сжатие занимает свое время, декомпрессия невероятно быстро.
ОК, теперь вот мой вопрос:
Так как LZMA2, возможно, является следующим лучшим алгоритмом сжатия, почему люди не прыгают в поезд? Почему люди по-прежнему используют WinRAR, который является собственностью, имеет худший коэффициент сжатия и не переносится в Linux (кроме unrar
, но вы, очевидно, не можете создавать с ним архивы). Почему Tarballs по-прежнему в основном gziped?
Нет ли способа убедить людей перейти к более новому, надежному формату архивации, который не только кросс-платформенный, но и бесплатный? Когда я даю кому-то файл, заканчивающийся на .7z
, они, как правило, не знают, что с ним делать, изменится ли это?
О, и вот маленький тест, который я сделал сам. Я использовал настройки по умолчанию везде:
11837440 GNUtar_TAR.tar
10657984 Arc_ARC.arc
9632524 PA2010_TAR_BZip2.tar.bz2
9536967 PA2010_LHA_Frozen5.lzh
9510148 PA2010_ZIP_BZip2.zipx
9490211 GNUtar_TAR.tar.bz2
9467242 PA2010_LHA_Frozen6.lzh
9463630 7-zip_ZIP_BZip2.zip
9437520 7-zip_7-ZIP_BZip2.7z
9398798 Arj_ARJ.arj
9373435 GNUtar_TAR.tar.gz
9370456 PA2010_BlackHole_Deflate.bh
9369621 Lha_LHA_Frozen6.lzh
9367712 PA2010_ZIP_Deflate.zip
9364237 PA2010_TAR_gzip.tar.gz
9360248 PA2010_Cabinet_MsZip.cab
9303923 7-zip_ZIP_Deflate.zip
9215279 7-zip_ZIP_Deflate64.zip
9189365 PA2010_ZIP_PPMd.zipx
9060663 PA2010_7-ZIP_PPMd.7z
8931280 PA2010_Cabinet_LZX.cab
8847427 7-zip_7-ZIP_PPMd.7z
8803350 PA2010_ZIP_Optimized.zipx
8803350 PA2010_ZIP_Wavpack.zipx
8802850 PA2010_ZIP_LZMA.zipx
5812491 FreeArc_7-ZIP.arc
5789853 7-zip_7-ZIP_LZMA.7z
5789853 PA2010_7-ZIP_LZMA.7z
5789024 GNUtar_TAR.tar.xz
5782637 FreeArc_UHARC.arc
5770969 FreeArc_CCM.arc
5739697 Fp8_5.fp8
5718865 Fp8_8.fp8
5685234 Paq8px_5.paq8px
5677662 Paq8kx_5.paq8kx
5644422 Paq8px_8.paq8px
5609608 Paq8kx_8.paq8kx
(Размер в байтах; Имя файла: Archiver_Format_Algorithm.Extension
)
Набор заполнений состоит из образов дисков, которые содержат установку DOS:
1474979 disk01.144
1474979 disk02.144
1474979 disk03.144
1474979 disk04.144
1474979 disk05.144
1474979 ldisk01.144
1474979 ldisk02.144
1474979 ldisk03.144
24325 diskcopy.com
(Размер в байтах)