Программы
Как разархивировать файлы в Linux, FreeBSD и MacOS

Как разархивировать файлы в Linux, FreeBSD и MacOS

Вариант «двойной клик, распаковать» не плох. Но не универсален. Ну и не так интересен, как куча способов сделать это в консоли! Поэтому, очередная заметка в стиле «Все способы сделать это».

Вариант «двойной клик, распаковать» не плох. Но не универсален. Ну и не так интересен, как куча способов сделать это в консоли! Поэтому, очередная заметка в стиле «Все способы сделать это».

Пожалуй, лучший выбор для архива, который вы хотите выложить на всеобщее скачивание — zip-архив. Инструменты для его распаковки есть практически на всех ОС «из коробки». Даже в той же Windows есть странноватый, но всё же разархиватор zip. Если же вы используете Linux / FreeBSD / MacOS, то ваш выбор — unzip:

unzip file.zip

Вообще, понятно, почему ZIP стал популярен. Он использует свободный от патентов алгоритм Deflate, который уже давно стал чуть ли не стандартом для сжатия: описан в RFC 1951, да и многие его используют (тот же gzip и формат хранения изображений png, все перечислять не буду — ZIP действительно велик!).

Опубликован в год моего рождения — в 1989-ом.

Плюсом ко всему довольно сильно в своё время стал известен автор этого формата — Фил Катц. На заре пользовательского интернета, во времена BBS-ок он оптимизировал формат ARC, который использовался для сжатия, но авторам последнего это не понравилось. Как и принято на пресловутом западе, была судебная тяжба, в рамках которой Катц себя проявил как славный малый. Можно даже посмотреть документалку «Compression», где описывается противостояние.

Так что нельзя просто сделать хороший алгоритм сжатия. Нужно ещё и пропиарить всё это на скандале.

Хотя, не буду юродствовать. Большой вклад в IT, в нашу реальность. Жаль, что Фил не получил достаточно славы, чтобы не гасить всё в алкоголе. Хотя, может ему так было лучше. Ушёл он из жизни в 2000м-ом году (37 лет). Земля пухом, друг!

Вторым форматом в моём личном «топе» я бы поставил RAR. Не потому что я часто его вижу, а потому что запоминается это. Каждый раз я иду и ставлю unrar.

Для Ubuntu/Debian/Mint и других с apt это:

$ sudo apt install unrar

Во FreeBSD похоже:

% sudo pkg install unrar

И для MacOS:

$ brew install unrar

Либо можно сходить в App Store и скачать The Unarchiver

Также он поддерживает такие форматы как  ZIP, 7z, LHA, LZH, Tar, gzip, bzip2, StuffIt, StuffIt X, DiskDoubler, Compact Pro, PackIt, cpio, XAR, RPM, LZMA, XZ, Z, CAB, MSI, NSIS, ALZip, ARJ, Ace, Zoo, ADF, DMS, LZX, PowerPacker, NSA, SAR, NDS, Split файлы… Ну это так, к слову.

Ну и для Windows — WinRAR.

У WinRAR есть сборки и под Linux и под Бисти, MacOS также не обошли — так что, если привыкли/удобнее — также можно. И не мудрено — существует с 1993-го.

Хоть rar и является разработкой нашего соотечественника (родился в СССР), а сам при этом — суровый челябинский программист… Но «топить за» этот момент я не буду — всё же давайте быть гражданами мира! Но он ещё и создатель FAR-а… Евгений Рошал — знакомьтесь!

Короче, всё классно, но рарчик — проприетарчик. Жмёт неплохо, равно как и его создатель (во всяком случае его брат). Поэтому его нет «из коробки» на различных системах, но виндузятники уже сильно на этот формат подсели — придётся временами видеть.

На почётном 3-ем месте — семейство tar-архивов. Именно tar — архиватор. Он не сжимает, а архивирует файл за файлом. Создаёт архив! Не знаю, как ещё сильнее указать на отличие… В общем, представим архивариуса. Он складываете документы один к другому, чтобы в итоге получился шкаф, в котором вся информация по какой-то теме. Шкаф при этом больше, чем просто набор файлов. И в плане своей значимости, и в плане занимаемого места. Так вот, tar — архивариус. Он сделает ещё больший файл, в котором есть подборка других файлов.

Тут речь про алгоритм, а не про сектора жёсткого диска (знаю, зануда, ты уже хотел про это написать… но я тоже зануда ;-)).

А уже вот этот файл мы можем сжать. Не знаю, как вам, а мне это представляется прекрасной иллюстрацией одного из принципов Unix:

Пишите программы, которые делают что-то одно и делают это хорошо.

Так и тут! Ладно, кто понял — тот понял, кто не понял — тот простит…

И сжать теперь можно любым универсальным алгоритмом сжатия (есть ещё специализированные под конкретный тип данных)!

И тут у нас уже идёт поддержка около 180 форматов… «Из коробки» не все, конечно. Самые распространённые:

Длинное название Короткое название
.tar.bz2 .tb2, .tbz, .tbz2
.tar.gz .tgz
.tar.lz  
.tar.lzma .tlz
.tar.xz .txz
.tar.Z .tZ

Самый распространённый вариант создать сжатый tar-архив

tar -czf file.tar.gz source.c source.h

Распаковать — соответственно:

tar -xzf file.tar.gz

Create/Extract — всё логично! И это один из самых распространённых форматов дистрибуции «пакетов» в Unix. Та же слака (слава великому Патрику) использует её для скачивания и установки пакетов. Прямо в корень, прямо в «душу»!

В общем, используйте tar, слушайте маму!

Целая история, инфраструктуры, эпохи, судьбы людей… А всего 3 типа архивов.

Ну и для тех, кто хотел разархивировать какой-то хитрый архив, но залип на этой статье, вот список:

gz (gzip) файл, распакуем его командой:

gunzip file.gz

Аналогично с BZ2 — разархивируем с помощью:

bunzip2 file.bz2

Могут встретиться и файлы XZ. Разархивируем командой

unxz file.xz

архивируем

xz --decompress file.xz

XZ умеет разархивировать файлы и LZMA формата:

xz --format=lzma --decompress file.lz # для .lz файлов

Для 7Z-файлов используем:

7za e file.7z

Нужно установить p7zip до этого (sudo apt-get install p7zip).

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

file file.unknown

Например:

$ file server.jjj
server.jjj: Zip archive data, at least v2.0 to extract

Узнав формат, всегда можно обратиться в гугл и узнать, как его распаковать. Либо обратиться к документации/автору и написать распаковщик самому.

Уверен, что упустил ещё over 100 форматов, которые «все используют». Пишите — добавлю!

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS