Как архивировать и разархивировать файлы или папки в Debian, Ubuntu?

от автора

в

В этой статье обсудим архивацию данных — частая и весьма полезная операция любого разработчика или системного администратора.

Начнем мы с алгоритма .zip и неспроста. Данный формат очень популярен и является универсальным для многих операционных систем, будь то Windows или MacOS — а это значит, что полученный zip-архив сможет распознать (зачитать) почти любая операционная система.

Отмечу, что архивация и сжатие — это разные понятия. Это небольшое примечание не играет в нашей статье особой роли, но желательно сразу эти термины разделять.

Задача: Архивировать файлы в архив ZIP, определённой директории на сервере, для дальнейшей работы с их копией в заархивированном виде.

Решение: Первым делом нам нужно проверить наличие пакета zip для дальнейшей работы. В этом нам поможет пакет dpkg — менеджер пакетов для Debian.

Чтобы получить подробный отчёт о состоянии определённого пакета, выполните команду:

dpkg --status zip

или при помощи инструмента dpkg-query — чтобы сделать запрос в базу данных пакета dpkg

dpkg-query -s unzip

Ключ -s это сокращение от —status

Вот пример выполнения запроса на боевом сервере одного из моих заказчиков:

Мы видим, что пакет для архивации данных zip отсутствует в нашей ОС. А в свою очередь следующий запрос, который я сделал для разнообразия по второму примеру в коде выше, выдаст нам противоположный результат. Мы видим, что пакет unzip существует в нашей ОС:

unzip

Для разнообразия, можно было осуществить проверку следующей командой:

zip --version

Следовательно, если пакет отсутствует, то требуется его установка в нашу ОС:

sudo apt install zip

Если отсутствовали оба пакета, то можно исправить эту неприятность вот такой командой:

sudo apt install zip unzip

Архивация пакетом zip

Подготовительная часть позади и теперь мы можем перейти непосредственно к выполнению поставленной задачи. Файлы, которые нам нужно заархивировать находятся в директории /var/www/site

cd /var/www/site

Убедимся, что мы находимся в нужной директории и в ней находятся нужные для архивации файлы. Воспользуемся для этого командой ls или dir. Вывод файлов после выполнения:

команда ls

Перейдем непосредственно к делу и нехитрой командой сделаем наш архив:

sudo zip -r archive.zip *

Произойдёт магия… и после выполнения, введя повторно ls —  выводит содержимое каталога, мы должны обнаружить наш архив

архив файлов

Разберёмся в этой магии…

ключик -r предписывает утилите zip рекурсивно проходить все директории и архивировать их содержимое. А звездочка в конце команды — равносильно слову «ВСЁ», т.е. — архивировать всё, что есть в директории, в которой мы и находимся.

Как вариант можно указать путь к той директории которую мы архивируем. Это полезно когда вы находитесь в другом месте в системе и вместо звездочки просто указываете нужный, относительно корня ОС, путь:

zip -r filename.zip /path/to/folder

## Наш пример 
zip -r archive.zip /var/www/site

Рассмотрим более сложный пример, в котором мы добавим в архив изображения с расширением файлов: .jpg, .jepg, .png

zip -R archive_image "*.jpg" "*.jepg" "*.png"

В архив archive_image.zip попадут картинки с перечисленными расширениями. Учтите, что в архив попадает и структура директорий:

В принципе, на этом всё. Да, есть много нюансов при работе с zip, таких как: включение в архив только нужных типов файлов (используется ключ -i), можно указать степень сжатия по шкале от 0 до 9, где 0 — это отсутствие сжатия, можно при помощи параметра -P задать пароль на архив. Но все это уже частные случаи.

Подробнее

Распаковка пакетом unzip

Разархивирование данных происходит проще простого. Вместо команды zip нам следует использовать — unzip. Пакет unzip — это распаковщик файлов .zip

И перед распаковкой, начать стоит с проверки целостности данных. Это осуществимо при помощи ключика -t (test). Обратимся к нашему архиву указав следующую команду:

unzip -t archive.zip

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

unzip -t /var/www/site/archive.zip

Результат выполнения:

команда unzip тест

Убедившись в отсутствии ошибок, мы приступаем к разархивированию данных. И здесь нам необходимо придерживаться правила ЧТО / КУДА.

То есть первый путь мы задаем то ЧТО подлежит разархивированию, а второй — КУДА требуется выгрузить файлы из архива. Единственное что нужно тут учесть, так то, что после архива мы указываем ключик -d (директория) и далее путь к папке куда произойдет разархивация:

unzip /var/www/site/archive.zip -d /var/www/html

Эта инструкция распакует наш архив в директорию html. На скриншоте ниже можно посмотреть как отработала эта строка. В данном примере, мы подымаемся на уровень выше из директории site, далее выбираем директорию html и смотрим её содержимое. Файлы из архива на месте!

Если вы забыли ( добро пожаловать в клуб 🙂 ), что находится в вашем архиве, то его содержимое можно посмотреть при помощи параметра -l (list)

unzip -l /var/www/site/archive.zip

Буду признателен за Share 🙏


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *