Команда xz в Linux, macOS, *BSD и Unix-подобных системах обеспечивает превосходное сжатие.

Она превосходит zip и другие форматы, когда мы используем xz вместе с tar для максимального уменьшения размера.

Например, я сжал каталог размером 37M, используя xz и zip.

Размер файла zip составил 31М, а файла xz – 16М после сжатия.

Довольно впечатляюще, не правда ли?

Давайте посмотрим, как сжать весь каталог с помощью xz и tar.

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

В результате я получил архивы гораздо меньшего размера, чем при сжатии файлов с помощью команд zip/gzip.

🛠️ Исправляем ошибку gzip: stdin: not in gzip format

Давайте воспользуемся командами xz и tar для сжатия каталога while в Linux и Unix.

Использование xz для одного файла

Синтаксис довольно прост

xz filename
xz [option] filename

В этом примере я собираюсь сжать один файл с именем firc.pdf:firc.img

firc.img

Проверьте его с помощью команды ls:

ls -l firc.pdf*

Передайте параметр -v, чтобы увидеть прогресс:

xz -v filename
xz -v resume.doc

Выбор предустановленного уровня сжатия

Мы можем задать уровни сжатия от 0 до 9 с помощью цифры:

xz -{LEVEL} filename
xz -{LEVEL} {options} filename

По умолчанию используется уровень -6.

Но можно использовать -9 следующим образом:

xz -9 filename
xz -9 -v filename

Выбранные настройки сжатия определяют требования к памяти декомпрессора.

Таким образом, использование слишком высокого уровня предустановки может привести к тому, что распаковка файла на старой системе с небольшим объемом оперативной памяти будет затруднена.

Таблица 1: Уровень предустановки сжатия XZ
Уровень Описание
-0 до -3 -0 иногда быстрее, чем gzip, при этом сжимает гораздо лучше.
-4 до -6 Хорошее или очень хорошее сжатие при разумном использовании памяти декомпрессора даже для старой системы
-7до -9 Они похожи на -6, но требуют больше памяти для компрессора и декомпрессора. Они полезны только при сжатии файлов размером более 8, 16 и 32 Мб соответственно.

Декомпрессия файла

Для распаковки передайте следующие параметры:

xz -d file.xz
xz --decompress resume.doc.xz
xz --uncompress cake_php.music_raw.xz
xz -d -v firc.pdf.xz

Сжатие всего каталога с помощью xz и tar

По умолчанию xz сжимает только один файл.

Как же сжать весь каталог с помощью xz?

Нам нужно использовать комбинацию команд tar и xz.

Синтаксис зависит от того, насколько портативной должна быть команда.

Как xz каталог с помощью tar с максимальным сжатием

Самый простой синтаксис следующий:

tar -cJf archive.tar.xz dir1
tar -cvJf archive.tar.xz /path/to/appdir1/
# state compression level to 9 #
XZ_OPT='-9' tar -cvJf mywebsite.backup.tar.xz /var/www/html/

You can also use verbose syntax to state the -v and -9 option as follows:

tar cf itisgood.tar.xz \
--use-compress-program='xz -9v' \
~/projects/wp/cbz_blog/

Использование tar с xz для нескольких файлов и каталогов

Портативная версия выглядит следующим образом

tar -cf – /path/to/dir | xz -9ze -T0 >output.tar.xz

Например, давайте сожмем каталог SalesData в текущем местоположении.

Но сначала узнайте размер папки с помощью команды du:

du -csh SalesData/
37M SalesData/
37M total


tar -cf - SalesData | xz -9ze -T0 >SalesData.txz
## или ##
tar -cf - SalesData | xz -9ze -T0 >SalesData.tar.xz

Заключение

Мы рассмотрели, как использовать команду xz для сжатия и распаковки отдельных файлов.

Затем разобрались как использовать tar с xz для нескольких файлов и каталогов.

 

Поделитесь статьей:

Добавить комментарий