XZ Utils (ранее LZMA Utils ) - это набор бесплатных программных компрессоров данных без потерь из командной строки , включая lzma и xz, для Unix-подобных операционных систем и, начиная с версии 5.0, Microsoft Windows .
Автор (ы) оригинала | Лассе Коллин |
---|---|
Разработчики) | Проект Тукаани |
Стабильный выпуск | 5.2.5 / 17 марта 2020 г. [1] |
Репозиторий | |
Написано в | C |
Операционная система | Кроссплатформенность |
Тип | Сжатие данных |
Лицензия | Общественное достояние . [2] (но подробности см. В разделе « Разработка и внедрение» ) |
Веб-сайт | tukaani |
В большинстве случаев xz обеспечивает более высокую степень сжатия, чем альтернативы, такие как gzip и bzip2 . Скорость распаковки выше, чем у bzip2, но ниже, чем у gzip. Сжатие может быть намного медленнее, чем gzip, и медленнее, чем bzip2 для высоких уровней сжатия, и наиболее полезно, когда сжатый файл будет использоваться много раз. [3] [4]
XZ Utils состоит из двух основных компонентов:
xz
, компрессор и декомпрессор командной строки (аналог gzip )- liblzma , программная библиотека с API, похожим на zlib
Существуют различные сочетания клавиш, такие как lzma
(для xz --format=lzma
), unxz
(для xz --decompress
; аналогично gunzip
) и xzcat
(для unxz --stdout
; аналогично zcat
)
XZ Utils может сжимать и распаковывать файлы в форматах xz и lzma , но поскольку формат LZMA теперь является устаревшим , [5] XZ Utils сжимает по умолчанию до xz.
Применение
И поведение программного обеспечения, и свойства формата файла были разработаны так, чтобы работать аналогично популярным инструментам сжатия Unix gzip и bzip2 . Он состоит из Unix-порта LZMA- SDK Игоря Павлова , который был адаптирован для беспрепятственного использования в средах Unix и их обычной структуре и поведении.
xz поддерживает многопоточное сжатие (с -T
флагом) [6] с 2014 года, версия 5.2.0 .; [7] по состоянию на 2019 год поточная декомпрессия еще не реализована. [6] Число потоков может быть меньше заданного, если файл недостаточно велик для потоковой передачи с заданными настройками или если использование большего количества потоков превысит лимит использования памяти. [6]
Так же, как gzip и bzip, xz и lzma могут сжимать только отдельные файлы (или потоки данных) в качестве входных данных. Они не могут объединить несколько файлов в один архив - для этого сначала используется программа архивирования, такая как tar .
Сжатие архива:
xz my_archive.tar # приводит к my_archive.tar.xzlzma my_archive.tar # приводит к my_archive.tar.lzma
Распаковка архива:
unxz my_archive.tar.xz # приводит к my_archive.tarunlzma my_archive.tar.lzma # приводит к my_archive.tar
Версия 1.22 или выше GNU- реализации tar имеет прозрачную поддержку tarballs, сжатых с помощью lzma и xz, с использованием переключателей --xz
или -J
для сжатия xz, а также --lzma
для сжатия LZMA.
Создание архива и его сжатие:
tar -c --xz -f my_archive.tar.xz / some_directory # приводит к my_archive.tar.xztar -c --lzma -f my_archive.tar.lzma / some_directory # приводит к my_archive.tar.lzma
Распаковка архива и извлечение его содержимого:
tar -x --xz -f my_archive.tar.xz # приводит к / some_directorytar -x --lzma -f my_archive.tar.lzma # приводит к / some_directory
Пример однобуквенного tar для архива с сжатием и распаковкой с извлечением с использованием короткого суффикса :
tar cJf keep.txz keep # archive, затем сжать каталог ./keep/ в файл ./keep.txztar xJf keep.txz # распаковать, затем извлечь файл ./keep.txz, создав каталог ./keep/
Формат xz
Формат xz улучшает lzma, позволяя использовать фильтры предварительной обработки. Используемые точные фильтры аналогичны тем, которые используются в 7z , поскольку фильтры 7z доступны в открытом доступе через LZMA SDK.
Разработка и внедрение
Разработка XZ Utils проходила в рамках проекта Tukaani, которым руководил Майк Кезнер, небольшая группа разработчиков, которые когда-то поддерживали дистрибутив Linux на основе Slackware .
Весь исходный код для xz и liblzma опубликован в открытом доступе . Дистрибутив исходного кода XZ Utils дополнительно включает в себя несколько дополнительных сценариев и пример программы, на которые распространяются различные версии GPL . [2]
В частности, полный список сценариев и источников GPL, распространяемых с программным обеспечением XZ Utils, включает:
- Необязательная реализация общей функции libc, getopt ( GNU GPL v2 и GNU LGPL v2.1 )
- Сценарий m4 для обнаружения потоков pthread ( GNU GPL v3 )
- Некоторые второстепенные сценарии оболочки (xzgrep и т. Д.) ( GNU GPL v2 )
- И пример программы scanlzma, которая не интегрирована с системой сборки
Получающиеся двоичные файлы программного обеспечения xz и liblzma являются общественным достоянием, если не включена дополнительная реализация LGPL getopt . [8]
Бинарные файлы доступны для FreeBSD , Linux , Microsoft Windows и FreeDOS . Ряд дистрибутивов Linux , включая Fedora , Slackware , Ubuntu и Debian, используют xz для сжатия своих программных пакетов. Arch Linux ранее использовал xz для сжатия пакетов [9], но по состоянию на 27 декабря 2019 года пакеты сжимаются с помощью сжатия Zstandard . [10] GNU FTP архив также использует XZ.
Смотрите также
Рекомендации
- ^ «Примечания к выпуску XZ Utils» . [репозиторий git] . Лассе Коллин. 2020-03-17 . Проверено 30 марта 2020 .
- ^ a b Лицензирование на tukaani.org «Наиболее интересные части XZ Utils (например, liblzma) находятся в общественном достоянии. Вы можете делать все, что хотите, с частями общественного достояния. Некоторые части XZ Utils (например, система сборки и некоторые утилиты ) находятся под различными лицензиями бесплатного программного обеспечения, такими как GNU LGPLv2.1, GNU GPLv2 или GNU GPLv3 ».
- ^ Генри-Стокер, Сандра (12 декабря 2017 г.). «Как выжать максимум из сжатия файлов Linux» . Сетевой мир . Проверено 9 февраля 2020 .
- ^ «Сравнение производительности Gzip, Bzip2 и XZ» . RootUsers . 2015-09-16 . Проверено 9 февраля 2020 .
- ^ LZMA Utils , получено 25 января 2011 г.
- ^ а б в https://man.cx/xz
- ^ https://git.tukaani.org/?p=xz.git;a=blob;f=NEWS;hb=HEAD
- ^ «В каких случаях GPL распространяется и на выпуск программы под GPL?» . GNU.org . Проверено 21 августа 2019 .
- ^ Пьер Шмитц (23 марта 2010 г.). «Новости: Переход на сжатие xz для новых пакетов» .
- ^ «Arch Linux - Новости: теперь для сжатия пакетов используется Zstandard вместо xz» . www.archlinux.org . Проверено 7 января 2020 .
Внешние ссылки
- Официальный веб-сайт
- Страница проекта SourceForge