Архивирование и сжатие файлов позволят хранить те же самые данные при меньших затратах такого ресурса как постоянное хранилище (жёсткий диск, сменный накопитель, оптический диск и т. д.). Благодаря уменьшению размера, достигается не только экономия места на диске, но и ускорение передачи файлов по сети. В настоящее время, когда Интернет стал очень быстрым, а постоянные хранилища весьма объёмными и намного более дешёвыми чем в прошлом, важность сжатия файлов утратила свою прежнюю актуальность. Тем не менее, экономию места никто не отменял, да и зачастую нам приходится работать с уже сжатыми файлами, полученными из разных источников. Уже хотя бы поэтому необходимо иметь общее представления о работе с архивами в Linux: знать как их создавать, как их распаковывать, понимать разницу между архивированием и сжатием.
7zip — самый универсальный инструмент по работе с архивами
В зависимости от типа архивов, обычно, нужно вводить соответствующую команду с набором опций. Например, у нас есть архив archive.gz, чтобы его извлечь, нужно вспомнить команду gunzip. Т.е. команда выглядит так:
gunzip archive.gz
Если же у нас файл archive.bz2, то мы припоминаем, что распаковывается этот архив программой bunzip2 Т.е. теперь нам нужно вводить такую команду:
bunzip2 archive.bz2
И так для разных типов архивов нам нужно вспомнить команды и необходимый набор ключей. В принципе, это не такой большой объём информации, но можно упростить себе жизнь.
Прелесть 7zip в том, что она поддерживает множество архивов (7z, XZ, GZIP, TAR, ZIP, BZIP2, LZMA2, CAB, ARJ, CPIO, RPM, ISO и DEB), т. е. независимо от типа сжатия и архивации, нам достаточно набрать команду
7z e archive.gz 7z e archive.bz2
И это справедливо для любого поддерживаемого архива:
7z e archive.7z 7z e archive.rar 7z e archive.tar 7z e archive.zip
Думаю, идея понятна.
Как установить 7zip и как его использовать (с расшифровкой всех доступных опций) описано в этой статье.
Создание и распаковка архивов .zip: программы zip и unzip
zip позволяет сжимать файл(ы) и каталог(и). Применяется команда так:
zip опции архивный_фай.zip файлы_и_каталоги_для_архивации
Чтобы в архив добавлялось содержимое каталогов, а не только их название, нужно использовать ключ -r
zip -r archive.zip каталог_для_архивации
Для распаковки архивов zip
unzip archive.zip
Чтобы посмотреть список содержимого архива (но не распаковывать его) можно сделать так:
unzip -l archive.zip
Извлечь и посмотреть содержимое отдельных папок, файлов можно так
unzip archive.zip интересующий_каталог unzip -l archive.zip интересующий_каталог
Различия сжатия и архивирования
Архивирование — это объединение нескольких файлов в один. Размер конечного (большого) файла равен сумме входящих в него файлов.
Сжатие — это уменьшение размера файла за счёт использования того или иного алгоритма.
На Windows эти операции, обычно, объединены в одну, которую называют архивацией. Также в одну операцию делает это 7zip и zip.
Для Linux есть команды, которые делают это раздельно, либо которые делают это в одно действие.
Создание и распаковка файлов в формате .gz: gzip и gunzip
Команда gzip осуществляет сжатие по одному файлу. Если ей передать в качестве аргумента папку, то она её проигнорирует. Если передать папку и соответствующий ключ -r, то она сожмёт каждый файл по отдельности, т. е. создаст много отдельных архивов.
Эти файлы будут иметь расширение .gz, распаковать их можно командой gunzip.
Создание и распаковка файлов в формате .bz2: bzip2 и bunzip2
Всё, что было сказано о программе gzip — сжатие по одному файлу — относится и к программе gzip. Различается только алгоритм сжатия — сжимает лучше.
При сжатии создаются файлы .bz2, распаковать их можно командой bunzip2.
Архивирование программой tar
«Чистые» архивы tar (они имеют расширение .tar) — это один файл, в котором без сжатия объединено несколько файлов.
Создаются они так:
tar cf имя_архива имя_каталога
Вместо одного каталога можно передать файл/список файлов/директорию/список директорий.
Ключ c означает создать архив, а после ключа f задаётся имя архива.
Чтобы посмотреть содержимое архива, нужно набрать команду
tar tf имя_архива
Где ключ t означает список, а ключ f, как это было сказано выше, говорит о том, что сейчас последует имя файла.
Если набрать так, то будет больше подробностей:
tar tvf имя_архива
Распаковываются .tar архивы так:
tar xf имя_архива
Новый ключ x означает распаковку.
Ещё можно сделать так:
tar xf имя_архива имя_файла_или_файлов
При этом будут извлечены отдельные файлы, которые указаны.
Сжатие архивов tar с помощью gzip и bzip2
gzip и bzip умеют сжимать файлы, но не умеют упаковывать их в один, tar умеет упаковывать в один, но не умеет сжимать. Хм… у вас не появилось идеи?
Создание сжатых архивов .tgz и .tar.gz
Расширения .tgz и .tar.gz означают одно и то же и означают они архив tar, которых сжали по алгоритму gzip. Т.е. можете выбрать то расширение, которое вам больше нравится. Создать сжатый архив tar с использованием сжатия gzip можно так
tar czf имя_архива.tgz список_для_архивации
Здесь новая опция z, которая и указывает на применяемый для сжатия алгоритм.
Чтобы распаковать архивы .tgz и .tar.gz:
tar xvzf archive.tar.gz
Создание сжатых архивов .bzip2 и .tar.bz2
Расширения .bzip2 и .tar.bz2 означают одно и то же - сжатый по алгоритму bzip2 архив tar. Для создания сжатого архива tar с применением алгоритма сжатия bzip2 нужно набрать следующую команду:
tar cjf имя_архива.tgz список_для_архивации
Новая опция — j, означает выбор метода сжатия bzip2.
Чтобы распаковать архивы .bzip2 и .tar.bz2:
tar xvjf archive.tar.bz2
Создание сжатых архивов .tar.xz
Расширение .tar.xz имеют файлы сжатые по алгоритмам XZ и LZMA.
tar -cvJf имя_архива.tar.xz список_для_архивации
Например:
tar -cvJf имя_архива.tar.xz file1 file2 tar -cvJf имя_архива /path/to/dir1 ./dir2 sudo tar -cvJf /efs/backups/14-05-2020/production-webroot.tar.xz /var/www/
Чтобы распаковать архивы .tar.xz:
tar xf data.tar.xz
Если я что-то забыл или пропустил — пишите в комментариях.
Связанные статьи:
- Как установить 7zip на Linux (80%)
- Выпущена официальная версия 7-Zip для Linux (80%)
- Лучшие терминальные мультиплексные инструменты (50%)
- Как просмотреть или отредактировать метаданные pdf или изображениях из командной строки Linux (50%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- Как посмотреть текущую частоту процессора в Linux (RANDOM - 50%)
Pingback: Как установить JAVA 8 (JDK 8u45) на Linux | ZaLinux.ru