xz_utils
Набор программного обеспечения для сжатия данных общего назначения с высокой степенью сжатия. Включает библиотеку liblzma с API, похожим на zlib, и инструменты командной строки, синтаксис которых аналогичен gzip. Основным форматом является .xz, но также поддерживается устаревший формат .lzma. XZ Utils обеспечивают сжатие примерно на 30% лучше, чем gzip.
Особенности
- высокая степень сжатия (примерно на 30% лучше gzip и превосходит bzip2);
- многопоточность: поддержка многопоточного сжатия (флаг
-T) и многопоточной распаковки; - два формата: нативный
.xzи поддержка устаревшего.lzmaдля обратной совместимости; - библиотека liblzma с API, аналогичным zlib, для легкой интеграции.
Основные компоненты
XZ Utils состоят из нескольких компонентов, каждый из которых решает конкретные задачи (подробнее с документацией можно ознакомиться здесь).
Инструмент командной строки xz
Основной инструмент для сжатия и распаковки с синтаксисом, похожим на gzip. Поддерживает множество опций для тонкой настройки параметров.
Основные функции:
xz --compress fileилиxz -z file— сжатие файла;xz --decompress file.xzилиxz -d file.xz— распаковка файла;xz -k— сохранять исходный файл после сжатия/распаковки;xz -9— использовать максимальную степень сжатия (уровни от 0 до 9);xz -T 0— использовать все доступные процессорные ядра для многопоточного сжатия;xz -l file.xz— просмотр информации о сжатом файле.
Инструмент xzdec
Минималистичный декомпрессор, предназначенный для встраиваемых систем или ситуаций, где важен малый размер исполняемого файла.
Особенности:
- значительно меньше размером, чем полноценный
xz; - отсутствуют зависимости от liblzma (скомпилирован статически);
- поддерживает только формат
.xz.
Скрипты-обёртки
Набор скриптов, адаптированных из аналогичных для gzip, для удобной работы со сжатыми файлами.
Основные скрипты:
xzgrep— поиск текста в сжатых файлах;xzdiff— сравнение сжатых файлов;xzmore/xzless— просмотр сжатых файлов постранично.
Библиотека liblzma
Ядро XZ Utils, предоставляющее API для интеграции сжатия LZMA2 в сторонние приложения. Интерфейс спроектирован похожим на zlib для упрощения миграции.
Основные функции:
lzma_stream_encoder()— создание кодировщика для сжатия потока данных;lzma_stream_decoder()— создание декодировщика для распаковки потока;lzma_code()— основная функция для сжатия или распаковки данных (аналогdeflate()/inflate()в zlib);lzma_easy_encoder()— упрощённая настройка кодировщика с предустановками уровня сжатия;lzma_stream_buffer_encode()/lzma_stream_buffer_decode()— функции для однократного сжатия/распаковки данных, полностью находящихся в памяти.