Команда xz в Linux, macOS, *BSD и Unix-подобных системах обеспечивает превосходное сжатие.
Она превосходит zip и другие форматы, когда мы используем xz вместе с tar для максимального уменьшения размера.
Например, я сжал каталог размером 37M, используя xz и zip.
Размер файла zip составил 31М, а файла xz – 16М после сжатия.
- 🐧 Как установить Zip и Unzip на Linux
- 🐧 Как создавать и распаковывать Zip-файлы в определенный каталог в Linux и Windows
- 🐧 Как использовать команду Unzip на Linux
Довольно впечатляюще, не правда ли?
Давайте посмотрим, как сжать весь каталог с помощью 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
Выбранные настройки сжатия определяют требования к памяти декомпрессора.
Таким образом, использование слишком высокого уровня предустановки может привести к тому, что распаковка файла на старой системе с небольшим объемом оперативной памяти будет затруднена.
Уровень | Описание |
---|---|
-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 для нескольких файлов и каталогов.