Archiving and compression (Русский)

Состояние перевода: На этой странице представлен перевод статьи Archiving and compression. Дата последней синхронизации: 24 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Традиционные инструменты архивирования и сжатия Unix разделены в соответствии с философией Unix:

  • Архиватор объединяет несколько файлов в один архивный файл, например, tar.
  • Инструмент сжатия сжимает и расжимает данные, например, gzip.

Эти инструменты часто используются последовательно: сперва создаётся архивный файл, а затем он сжимается.

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

Только архивирование

ИмяПакетСправкаОписание
GNU tartartar(1), infoОсновная утилита для работы с вездесущими tar-архивами (tarballs), которые используют в том числе pacman и AUR.
libarchivelibarchivebsdtar(1)
bsdcpio(1)
Реализация tar и cpio, которая также предоставляет библиотеку. Используется в pacman и mkinitcpio.
arbinutilsar(1)Устаревший архиватор Unix, который был до tar. Сегодня используется только для создания файлов статических библиотек.
cpiocpiocpio(1)Архиватор файлов через stdin/stdout, поддерживает форматы cpio и tar.
DARdarAURdar(1)Архиватор для резервного копирования больших живых файловых систем, учитывает жёсткие ссылки, расширенные атрибуты, разреженные (sparse) файлы и типы inode.
Совет: И GNU, и BSD tar автоматически делегируют распаковку сжатых данных утилитами bzip2, compress, gzip, lzip, lzma, lzop, zstd и xz. Только BSD tar имеет встроенную поддержку lz4 (но GNU tar тоже может с ним работать с помощью --use-compress-program=lz4/-Ilz4). При создании архивов оба поддерживают ключ -a, позволяющую направить архив в соответствующую программу для сжатия, определяемую по расширению создаваемого файла. BSD tar определяет используемый формат сжатия, разбирая содержимое файла, а GNU tar смотрит только на расширение.

Смотрите также #Использование инструментов только для архивирования.

Инструменты сжатия

Только сжатие

Эти программы сжатия реализуют свой собственный формат файлов.

ИмяПакетСправкаExtTar extОписаниеМногопоточные реализации
bzip2bzip2bzip2(1).bz2, .bz.tbz2, .tbzИспользует алгоритм Барроуза-Уилера.lbzip2, pbzip2
gzipgzipgzip(1).gz, .z.tgz, .tazGNU zip, основан на алгоритме Deflate.pigz
lrziplrziplrzip(1).lrzУлучшенная версия rzip, использует разные алгоритмы.является многопоточным
LZ4lz4lz4(1).lz4Написан на C, сфокусирован на скорости.является многопоточным
lziplziplzip(1).lzИспользует LZMA.plzipAUR
lzoplzoplzop(1).lzop.tzoИспользует LZO-библиотеку (lzo).
xzxzxz(1).xz, .lzma.txz, .tlzИспользует LZMA, стандартный для GNU coreutils и архивов ядра.является многопоточным, pixz, pxz-gitAUR
zstdzstdzstd(1).zstИспользует алгоритм Zstandard.является многопоточным
  • Многопоточные реализации улучшают скорость работы за счёт использования нескольких ядер процессора.
  • Tar ext — расширения сжатых архивов, в которых используется tar в связке с инструментом сжатия, например, .tzo — это .tar.lzo.
  • Смотрите также #Использование инструментов только для сжатия.

Архивирование и сжатие

ИмяПакетыСправкаExtОписание
7-Zip7zip7z(1)[устаревшая ссылка 2024-12-26].7zСторонний POSIX-порт утилиты командной строки 7-zip.
RARrarAUR, unrarrar(1).rarИ формат, и утилита rar являются проприетарными.
ZIPzip, unzipzip(1), unzip(1).zipШироко используется вне Linux-мира.
Unarchiverunarchiverunar(1), lsar(1)многоИнструмент командной строки приложения для Mac, поддерживает более 40 форматов архивов.
ZPAQzpaqAURzpaq(1).zpaqАрхиватор с высокой степенью сжатия, написанный на C++, использует несколько алгоритмов.
LHalhasa, lhaAURlha(1).lzh (на Amiga: .lha)Архиватор LZH/LHA, поддерживает lh7-метод.

Смотрите также #Использование инструментов для архивирования и сжатия.

Таблица возможностей

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

Распаковка

Имяgzipbzip2ZIPLHa/LZHRARcompressCABARJ
gzipДаНетЧастично1НетНетДаНетНет
7zipДаДаДаДаДаНетДаДа
unarchiverДаДаДаДаДаДаДаЧастично
  1. Утилита gunzip из пакета gzip может распаковывать только ZIP-архивы с одним файлом внутри.

Сравнение использования

Использование инструментов только для архивирования

ИмяСоздание архиваИзвлечение из архиваПросмотр содержимого
tar(1)tar cfv archive.tar file1 file2tar xfv archive.tartar -tvf archive.tar
cpio(1)ls file1 file2 | cpio -o > archive.cpiocpio -i -vd < archive.cpiocpio -t < archive.cpio

Использование инструментов только для сжатия

ИмяСжатиеРаспаковкаРаспаковка в stdout
bzip2(1)bzip2 filebzip2 -d file.bz2bzcat file.bz2
gzip(1)gzip filegzip -d file.gzzcat file.gz
lrzip(1)lrzip file
lrztar folder
lrzip -d file.lrz
lrztar -d folder.tar.lrz
lrzcat file.lrz
xz(1)xz filexz -d file.xzxzcat file.xz

Использование инструментов для архивирования и сжатия

ИмяСжатиеРаспаковкаРаспаковка в stdoutПросмотр содержимого
7z(1)[устаревшая ссылка 2024-12-26]7z a archive.7z file1 file27z x archive.7z7z e -so archive.7z file17z l archive.7z
rar(1)rar a archive.rar file1 file2rar x archive.rarrar p -inul archive.rar file1rar l archive.rar
zip(1), unzip(1)zip archive.zip file1 file2unzip archive.zipunzip -p archive.zip file1unzip -l archive.zip
lha(1)lha ao7 archive.lzh file1 file2lha x archive.lzhкратко: lha l archive.lzh подробно: lha v archive.lzh

Вспомогательные инструменты

  • atool Скрипт для управления архивами различных типов.
https://www.nongnu.org/atool/ || atool
  • dtrx Интеллектуальный инструмент для извлечения архивов.
https://github.com/brettcs/dtrx || dtrxAUR
  • J7Z GUI для Linux на java, который пытается упростить сжатие данных и резервное копирование. Он может создавать архивы 7z, BZip2, Zip, GZip, Tar.
http://j7z.xavion.name/ || j7zAUR
  • unp Инструмент командной строки, позволяющий легко распаковывать архивы.
https://github.com/mitsuhiko/unp || python-unpAUR
  • unpack Скрипт-обёртка для работы с несколькими форматами архивов.
https://github.com/githaff/unpack || unpack-gitAUR

Определение формата архива

Для извлечения содержимого архива нужно знать его формат. Если файл архива имеет правильное название, то его формат можно определить по расширению.

В других случаях можно воспользоваться инструментом file, смотрите file(1).

Эзотерические, редкие или устаревшие инструменты

ИмяПакетыExtОписание
ARCarcAUR.arc, .arkБыл очень популярен в ранние времена BBS. Заменён на ZIP.
ARJarj.arjАрхиватор, использовавшийся в DOS/Windows в середине 1990-х годов. Это клон с открытым исходным кодом.
compressncompress.ZКлассическая утилита сжатия unix, которая может работать с древним архивом .Z.
PAR2par2cmdline.par2Parity archiver с контролем целостности файлов. Смотрите также Parchive.
sharsharutils.sharСоздаёт самораспаковывающиеся архивы, которые фактически являются скриптами.
ZoozooAUR.zooЧасто использовался в ОС OpenVMS до того, как PKZIP стал популярным.

Сжатие в файловой системе

Некоторые файловые системы поддерживают сжатие файловых данных "на лету":

  • Btrfs может быть настроен на сжатие отдельных файлов, каталогов или целых томов по умолчанию.
  • В ZFS сжатие может быть включено для пулов или файловых систем.

Сжатие device mapper

Ведётся работа над проектом VDO, который обеспечивает уровень дедупликацию и сжатие на уровне device mapper для повышения эффективности хранения данных. Доступны следующие пакеты:

  • vdo Пользовательские инструменты для управления томами VDO
https://github.com/dm-vdo/vdo || vdoAUR
  • kvdo Пара модулей ядра, которые предоставляют пулы дедуплицированного и/или сжатого блочного хранилища
https://github.com/dm-vdo/kvdo || kvdo-dkmsAUR[ссылка недействительна: package not found]

Библиотеки сжатия

  • Brotli Алгоритм сжатия потоков данных с использованием алгоритма LZ77, кодирования Хаффмана и контекстного моделирования второго порядка.
https://github.com/google/brotli || brotli
  • libzip Обеспечивает создание и извлечение ZIP-файлов. Используется в KDE и Deepin вместо инструментов zip/unzip.
https://libzip.org || libzip
  • zlib Реализация deflate, используемая в gzip и PKZIP.
https://www.zlib.net/ || zlib
  • Zopfli Компрессор файлов с высоким коэффициентом сжатия от Google, использующий совместимый с deflate алгоритм под названием zopfli.
https://github.com/google/zopfli || zopfli-gitAUR

Решение проблем

Проблемы с японскими именами файлов

Японские версии Windows кодируют ZIP-архивы с помощью Shift-JIS, из-за чего при извлечении будут получаться кракозябры. Для корректного извлечения используйте `unzip` с опцией shift-jis.

$ unzip -O shift-jis nihongo.zip

Смотрите также

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.