Archiving and compression (Русский)
Традиционные инструменты архивирования и сжатия Unix разделены в соответствии с философией Unix:
- Архиватор объединяет несколько файлов в один архивный файл, например, tar.
- Инструмент сжатия сжимает и расжимает данные, например, gzip.
Эти инструменты часто используются последовательно: сперва создаётся архивный файл, а затем он сжимается.
Конечно, существуют и универсальные инструменты, которые умеют выполнять обе задачи, а также дополнительно предлагают шифрование, обнаружение ошибок и восстановление.
Только архивирование
| Имя | Пакет | Справка | Описание | 
|---|---|---|---|
| GNU tar | tar | tar(1), info | Основная утилита для работы с вездесущими tar-архивами (tarballs), которые используют в том числе pacman и AUR. | 
| libarchive | libarchive | bsdtar(1) bsdcpio(1) | Реализация tar и cpio, которая также предоставляет библиотеку. Используется в pacman и mkinitcpio. | 
| ar | binutils | ar(1) | Устаревший архиватор Unix, который был до tar. Сегодня используется только для создания файлов статических библиотек. | 
| cpio | cpio | cpio(1) | Архиватор файлов через stdin/stdout, поддерживает форматы cpio и tar. | 
| DAR | darAUR | dar(1) | Архиватор для резервного копирования больших живых файловых систем, учитывает жёсткие ссылки, расширенные атрибуты, разреженные (sparse) файлы и типы inode. | 
--use-compress-program=lz4/-Ilz4). При создании архивов оба поддерживают ключ -a, позволяющую направить архив в соответствующую программу для сжатия, определяемую по расширению создаваемого файла. BSD tar определяет используемый формат сжатия, разбирая содержимое файла, а GNU tar смотрит только на расширение.Смотрите также #Использование инструментов только для архивирования.
Инструменты сжатия
Только сжатие
Эти программы сжатия реализуют свой собственный формат файлов.
| Имя | Пакет | Справка | Ext | Tar ext | Описание | Многопоточные реализации | 
|---|---|---|---|---|---|---|
| bzip2 | bzip2 | bzip2(1) | .bz2, .bz | .tbz2, .tbz | Использует алгоритм Барроуза-Уилера. | lbzip2, pbzip2 | 
| gzip | gzip | gzip(1) | .gz, .z | .tgz, .taz | GNU zip, основан на алгоритме Deflate. | pigz | 
| lrzip | lrzip | lrzip(1) | .lrz | Улучшенная версия rzip, использует разные алгоритмы. | является многопоточным | |
| LZ4 | lz4 | lz4(1) | .lz4 | Написан на C, сфокусирован на скорости. | является многопоточным | |
| lzip | lzip | lzip(1) | .lz | Использует LZMA. | plzipAUR | |
| lzop | lzop | lzop(1) | .lzop | .tzo | Использует LZO-библиотеку (lzo). | |
| xz | xz | xz(1) | .xz, .lzma | .txz, .tlz | Использует LZMA, стандартный для GNU coreutils и архивов ядра. | является многопоточным, pixz, pxz-gitAUR | 
| zstd | zstd | zstd(1) | .zst | Использует алгоритм Zstandard. | является многопоточным | 
- Многопоточные реализации улучшают скорость работы за счёт использования нескольких ядер процессора.
- Tar ext — расширения сжатых архивов, в которых используется tar в связке с инструментом сжатия, например, .tzo— это.tar.lzo.
- Смотрите также #Использование инструментов только для сжатия.
Архивирование и сжатие
| Имя | Пакеты | Справка | Ext | Описание | 
|---|---|---|---|---|
| p7zip | p7zip | 7z(1) | .7z | Сторонний POSIX-порт утилиты командной строки 7-zip. | 
| 7-Zip | 7-zipAUR | Официальная Linux-версия файлового архиватора с высокой степенью сжатия. | ||
| RAR | rarAUR, unrar | rar(1) | .rar | И формат, и утилита rar являются проприетарными. | 
| ZIP | zip, unzip | zip(1), unzip(1) | .zip | Широко используется вне Linux-мира. | 
| Unarchiver | unarchiver | unar(1), lsar(1) | много | Инструмент командной строки приложения для Mac, поддерживает более 40 форматов архивов. | 
| ZPAQ | zpaqAUR | zpaq(1) | .zpaq | Архиватор с высокой степенью сжатия, написанный на C++, использует несколько алгоритмов. | 
| LHa | lhasa, lhaAUR | lha(1) | .lzh (на Amiga: .lha) | Архиватор LZH/LHA, поддерживает lh7-метод. | 
Смотрите также #Использование инструментов для архивирования и сжатия.
Таблица возможностей
Некоторые инструменты умеют работать с несколькими форматами, что позволяет обойтись установкой меньшего числа пакетов.
Распаковка
| Имя | gzip | bzip2 | ZIP | LHa/LZH | RAR | compress | CAB | ARJ | 
|---|---|---|---|---|---|---|---|---|
| gzip | Да | Нет | Частично1 | Нет | Нет | Да | Нет | Нет | 
| p7zip | Да | Да | Да | Да | Да | Нет | Да | Да | 
| unarchiver | Да | Да | Да | Да | Да | Да | Да | Частично | 
- Утилита gunzip из пакета gzip может распаковывать только ZIP-архивы с одним файлом внутри.
Сравнение использования
Использование инструментов только для архивирования
| Имя | Создание архива | Извлечение из архива | Просмотр содержимого | 
|---|---|---|---|
| tar(1) | tar cfv archive.tar file1 file2 | tar xfv archive.tar | tar -tvf archive.tar | 
| cpio(1) | ls file1 file2 | cpio -o > archive.cpio | cpio -i -vd < archive.cpio | cpio -t < archive.cpio | 
Использование инструментов только для сжатия
| Имя | Сжатие | Распаковка | Распаковка в stdout | 
|---|---|---|---|
| bzip2(1) | bzip2 file | bzip2 -d file.bz2 | bzcat file.bz2 | 
| gzip(1) | gzip file | gzip -d file.gz | zcat file.gz | 
| lrzip(1) | lrzip filelrztar folder | lrzip -d file.lrzlrztar -d folder.tar.lrz | lrzcat file.lrz | 
| xz(1) | xz file | xz -d file.xz | xzcat file.xz | 
Использование инструментов для архивирования и сжатия
| Имя | Сжатие | Распаковка | Распаковка в stdout | Просмотр содержимого | 
|---|---|---|---|---|
| 7z(1) | 7z a archive.7z file1 file2 | 7z x archive.7z | 7z e -so archive.7z file1 | 7z l archive.7z | 
| rar(1) | rar a archive.rar file1 file2 | rar x archive.rar | rar p -inul archive.rar file1 | rar l archive.rar | 
| zip(1), unzip(1) | zip archive.zip file1 file2 | unzip archive.zip | unzip -p archive.zip file1 | unzip -l archive.zip | 
| lha(1) | lha ao7 archive.lzh file1 file2 | lha x archive.lzh | кратко: lha l archive.lzhподробно:lha v archive.lzh | 
Вспомогательные инструменты
- atool — Скрипт для управления архивами различных типов.
- dtrx — Интеллектуальный инструмент для извлечения архивов.
- unp — Инструмент командной строки, позволяющий легко распаковывать архивы.
- unpack — Скрипт-обёртка для работы с несколькими форматами архивов.
Определение формата архива
Для извлечения содержимого архива нужно знать его формат. Если файл архива имеет правильное название, то его формат можно определить по расширению.
В других случаях можно воспользоваться инструментом file, смотрите file(1).
Эзотерические, редкие или устаревшие инструменты
| Имя | Пакеты | Ext | Описание | 
|---|---|---|---|
| ARC | arcAUR | .arc, .ark | Был очень популярен в ранние времена BBS. Заменён на ZIP. | 
| ARJ | arj | .arj | Архиватор, использовавшийся в DOS/Windows в середине 1990-х годов. Это клон с открытым исходным кодом. | 
| compress | ncompress | .Z | Классическая утилита сжатия unix, которая может работать с древним архивом .Z. | 
| PAR2 | par2cmdline | .par2 | Parity archiver с контролем целостности файлов. Смотрите также Parchive. | 
| shar | sharutils | .shar | Создаёт самораспаковывающиеся архивы, которые фактически являются скриптами. | 
| Zoo | zooAUR | .zoo | Часто использовался в ОС OpenVMS до того, как PKZIP стал популярным. | 
Сжатие device mapper
Ведётся работа над проектом VDO, который обеспечивает уровень дедупликацию и сжатие на уровне device mapper для повышения эффективности хранения данных. Доступны следующие пакеты:
- vdo — Пользовательские инструменты для управления томами VDO
- kvdo — Пара модулей ядра, которые предоставляют пулы дедуплицированного и/или сжатого блочного хранилища
Библиотеки сжатия
- Brotli — Алгоритм сжатия потоков данных с использованием алгоритма LZ77, кодирования Хаффмана и контекстного моделирования второго порядка.
- libzip — Обеспечивает создание и извлечение ZIP-файлов. Используется в KDE и Deepin вместо инструментов zip/unzip.
- zlib — Реализация deflate, используемая в gzip и PKZIP.
- Zopfli — Компрессор файлов с высоким коэффициентом сжатия от Google, использующий совместимый с deflate алгоритм под названием zopfli.
Решение проблем
Проблемы с японскими именами файлов
Японские версии Windows кодируют ZIP-архивы с помощью Shift-JIS, из-за чего при извлечении будут получаться кракозябры. Для корректного извлечения используйте `unzip` с опцией shift-jis.
$ unzip -O shift-jis nihongo.zip