XZ Утилиты
Оригинальный автор(ы) | Лассе Коллин |
---|---|
Разработчик(и) | Проект Тукаани |
Стабильная версия | 5.6.2
/ 29 мая 2024 г |
Репозиторий | |
Написано в | С |
Операционная система | Кросс-платформенный |
Тип | Сжатие данных |
Лицензия |
|
Веб-сайт | мы будем это отрицать |
Расширение имени файла |
.xz |
---|---|
Тип интернет-СМИ |
приложение/x-xz |
Магическое число | FD 37 7A 58 5A 00 |
Разработано | Лассе Коллин Igor Pavlov |
Первоначальный выпуск | 14 января 2009 г |
Последний выпуск | 1.1.0 11 декабря 2022 г |
Тип формата | Сжатие данных |
Открытый формат ? | Да |
Свободный формат ? | Да |
Веб-сайт | мы будем это отрицать |
XZ Utils (ранее LZMA Utils ) — набор бесплатного программного обеспечения с командной строкой для сжатия данных без потерь , включая программы lzma и xz, для Unix-подобных операционных систем и, начиная с версии 5.0, Microsoft Windows . Для сжатия/декомпрессии цепной алгоритм Лемпеля-Зива-Маркова используется (LZMA). XZ Utils начинался как Unix-порт Игоря Павлова LZMA- SDK , который был адаптирован для полной интеграции в среды Unix с их обычной структурой и поведением.
Функции
[ редактировать ]XZ Utils может сжимать и распаковывать файлы форматов xz и lzma . Поскольку формат LZMA считается устаревшим , [2] XZ Utils по умолчанию сжимает до xz.
В большинстве случаев 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
).
Использование
[ редактировать ]И поведение программного обеспечения, и свойства формата файла были разработаны так, чтобы работать аналогично популярным инструментам сжатия Unix gzip и bzip2 .
Так же, как gzip и bzip, xz и lzma могут сжимать только отдельные файлы (или потоки данных) в качестве входных данных. Они не могут объединить несколько файлов в один архив — для этого сначала используется программа архивирования, например tar .
Сжатие архива:
xz my_archive.tar # results in my_archive.tar.xz
lzma my_archive.tar # results in my_archive.tar.lzma
Распаковка архива:
unxz my_archive.tar.xz # results in my_archive.tar
unlzma my_archive.tar.lzma # results in my_archive.tar
Версия 1.22 или более поздняя реализация tar GNU имеет прозрачную поддержку архивов, сжатых с помощью lzma и xz, с использованием переключателей --xz
или -J
для сжатия xz и --lzma
для сжатия LZMA.
Создание архива и его сжатие:
tar -c --xz -f my_archive.tar.xz /some_directory # results in my_archive.tar.xz
tar -c --lzma -f my_archive.tar.lzma /some_directory # results in my_archive.tar.lzma
Распаковка архива и извлечение его содержимого:
tar -x --xz -f my_archive.tar.xz # results in /some_directory
tar -x --lzma -f my_archive.tar.lzma # results in /some_directory
Пример однобуквенного tar для архива со сжатием и распаковки с извлечением с использованием короткого суффикса :
tar cJf keep.txz keep # archive then compress the directory ./keep/ into the file ./keep.txz
tar xJf keep.txz # decompress then extract the file ./keep.txz creating the directory ./keep/
xz поддерживает многопоточное сжатие (с помощью -T
флаг) [5] с 2014 г. версия 5.2.0; [6] начиная с версии 5.4.0 реализована поточная распаковка. Для поточной декомпрессии требуется несколько сжатых блоков в потоке, которые создаются интерфейсом поточного сжатия. Количество потоков может быть меньше заданного, если размер файла недостаточно велик для потоковой обработки с заданными настройками или если использование большего количества потоков превысит лимит использования памяти. [5]
Формат xz
[ редактировать ]Формат xz совершенствует формат lzma, позволяя использовать фильтры предварительной обработки. Используемые фильтры аналогичны тем, которые используются в 7z , поскольку фильтры 7z доступны в свободном доступе через LZMA SDK.
Разработка и внедрение
[ редактировать ]Разработка XZ Utils проходила в рамках проекта Tukaani Project, небольшой группы разработчиков, которые когда-то поддерживали дистрибутив Linux на основе Slackware . Спецификация формата файла .xz версии 1.0.0 была официально выпущена в январе 2009 г. [7] .
Весь исходный код xz и liblzma передан в общественное достояние . В дистрибутив исходного кода XZ Utils дополнительно входят некоторые дополнительные сценарии и пример программы, на которые распространяются различные версии Стандартной общественной лицензии GNU (GPL). [1] Полученные двоичные файлы программного обеспечения xz и liblzma являются общественным достоянием, если не getopt LGPL. включена дополнительная реализация [8]
Двоичные файлы доступны для FreeBSD , NetBSD , Linux систем , Microsoft Windows и FreeDOS . Ряд дистрибутивов Linux , включая Fedora , Slackware , Ubuntu и Debian, используют xz для сжатия своих программных пакетов. Arch Linux ранее использовал xz для сжатия пакетов. [9] но по состоянию на 27 декабря 2019 г. пакеты сжимаются с помощью Zstandard . сжатия [10] Fedora Linux также перешла на сжатие своих пакетов RPM с помощью Zstandard в Fedora Linux 31. [11] FTP- архив GNU также использует xz.
Черный ход
[ редактировать ]29 марта 2024 года Андрес Фройнд, разработчик PostgreSQL , работающий в Microsoft , объявил, что он обнаружил бэкдор в XZ Utils, затрагивающий версии 5.6.0 и 5.6.1. Сжатые тестовые файлы были добавлены в код настройки бэкдора посредством дополнений к скрипту настройки в tar-файлах . Он начал свое расследование, потому что «после наблюдения нескольких странных симптомов вокруг liblzma (часть пакета xz)», поскольку он обнаружил, что вход в систему по ssh осуществляется с использованием sshd
«занимали много ресурсов ЦП и ошибок valgrind ». [12] Уязвимость получила оценку Common Vulnerability Scoring System (CVSS) 10 (самый высокий балл). [13]
Ссылки
[ редактировать ]- ^ Jump up to: а б Лицензирование на сайте tukaani.org «Наиболее интересные части XZ Utils (например, liblzma) находятся в свободном доступе. Вы можете делать с общедоступными частями все, что захотите. Некоторые части XZ Utils (например, система сборки и некоторые утилиты) находятся под различные лицензии свободного программного обеспечения, такие как GNU LGPLv2.1, GNU GPLv2 или GNU GPLv3».
- ^ LZMA Util , получено 25 января 2011 г.
- ^ Генри-Стокер, Сандра (12 декабря 2017 г.). «Как максимально эффективно использовать сжатие файлов Linux» . Сетевой мир . Проверено 9 февраля 2020 г.
- ^ «Сравнение производительности Gzip, Bzip2 и XZ» . Корневые пользователи . 16 сентября 2015 г. Проверено 9 февраля 2020 г.
- ^ Jump up to: а б «xz, unxz, xzcat, lzma, unlzma, lzcat — сжимать или распаковывать файлы .xz и .lzma» . Интернет-страницы руководства Linux .
- ^ «Примечания к выпуску XZ Utils» . git.tukaani.org .
- ^ Лассе Коллин (28 января 2009 г.). «Новости: официально выпущена спецификация формата файла .xz версии 1.0.0» .
- ^ «В каких случаях выходные данные программы GPL также подпадают под действие GPL?» . GNU.org . Проверено 21 августа 2019 г.
- ^ Пьер Шмитц (23 марта 2010 г.). «Новости: Переход на сжатие xz для новых пакетов» .
- ^ «Arch Linux — Новости: теперь для сжатия пакетов используется Zstandard вместо xz» . www.archlinux.org . Проверено 7 января 2020 г.
- ^ Мах, Дэниел. «Изменение/переключение RPM на сжатие zstd» . Вики проекта Fedora . Проверено 30 марта 2024 г.
- ^ «oss-security — бэкдор в исходном коде xz/liblzma, ведущий к компрометации ssh-сервера» . www.openwall.com . Проверено 8 апреля 2024 г.
- ^ «Бэкдор в xz» . LWN.net . Проверено 30 марта 2024 г.