Как использовать команду Zip в Linux для сжатия файлов и папок

Изображение с зипером

Команда zip в Linux, вероятно, является самым простым и интуитивно понятным способом работы с ZIP-файлами в командной строке. И не только это, формат ZIP-файла универсален – почти каждая ОС имеет родную программу, которая может с ним работать. Вот все способы, которыми вы можете использовать эту команду в любой командной строке Linux.

Содержание

  • Как установить Zip в Linux
  • Команда Zip в Linux: синтаксис и параметры
  • Как заархивировать файл в Linux с помощью команды Zip
  • Как заархивировать папку в Linux с помощью команды Zip
  • Как разархивировать файл с помощью команды Zip в Linux
  • Как разархивировать папку в Linux с помощью Zip
  • Часто задаваемые вопросы

Как установить Zip в Linux

Последняя версия команды zip для Linux должна быть доступна во всех основных менеджерах пакетов.

Для Debian/Ubuntu:

sudo apt install zip

Для Arch Linux:

sudo pacman -S zip

Для Fedora:

sudo dnf install zip

Для Gentoo

sudo emerge --ask zip

Примечание: Перед установкой чего-либо убедитесь, что вы сначала обновили свой менеджер пакетов, чтобы получить последнюю версию команды zip. Вы можете узнать, как это сделать и многое другое, с помощью нашей шпаргалки по менеджеру пакетов Linux.

Примечание: С установленным zip команда unzip также будет доступна.

Команда Zip в Linux: синтаксис и параметры

Существует базовый синтаксис для команды zip, и она принимает всего два параметра: имя выходного ZIP-файла и имя входного файла.

zip [options]  

Пример команды Zip в терминале Linux

Их позиции здесь важны. Если вы сделаете их наоборот, компьютер будет недоумевать, почему вы пытаетесь создать “file-to-archive.jpg” из “zip-file.zip”, который не существует, и вернет ошибку.

Что касается установки параметров, вам нужно будет работать с флагами. Существует 8 флагов, которые вам обычно понадобятся для нормального использования:

  • -d удалить выбранные архивированные записи в ZIP-файле.
  • -q тихо выполнить задачу без вывода чего-либо в терминал.
  • -T проверить целостность ZIP-файла.
  • -e зашифровать файл.
  • -u обновить ZIP-файл, добавив новые файлы в архив.
  • -m переместить файл в архив.
  • -r рекурсивно добавить файлы из папки в ZIP-файл.
  • -x исключить файлы с выбранными именами.
  • -i включить только файлы с выбранными именами.

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

Исключением являются -x и -i, которые требуют нового ввода после их использования.

Как заархивировать файл в Linux с помощью команды Zip

Самый простой способ архивировать файлы с помощью команды zip – это ввести zip, за которым следует имя ZIP-файла, а затем файл, который вы пытаетесь заархивировать или сжать. Флаги являются необязательными, поэтому вы можете сделать это, чтобы быстро заархивировать любой файл в Linux.

zip archive.zip text_file.txt

Пример базовой команды Zip в терминале

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

zip archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"

Пример архивирования нескольких файлов в одной команде Zip в Linux

Использование флага -d

Флаг -d позволяет вам удалить файл, заархивированный в ZIP-файле, так же, как вы бы добавили его в один.

zip -d archive.zip remove_me.jpg

Терминал Linux с использованием флага D 1

Вы также можете использовать его для удаления целых папок из архива. Однако это не сработает для файлов вне ZIP-файла (поэтому вы не можете использовать его для удаления файлов после архивирования).

Использование флага -q

Флаг -q предназначен для того, чтобы убедиться, что zip не вернет сообщение, когда он выполняет свою задачу.

zip -q archive.zip text_file.txt

Терминал Linux с использованием флага Q

Это полезно, когда вы используете команду zip со скриптом. Но если вы используете это самостоятельно, вы можете захотеть избежать использования флага -q, так как вы не будете знать, был ли процесс архивирования успешным, не проверив с помощью команды dir или ls.

Использование флага -T

Некоторые файлы, некоторые ZIP-файлы могут быть повреждены во время загрузки – такое бывает. Вы можете использовать флаг -T, чтобы проверить целостность, чтобы вы знали, действительно ли это поврежденный файл или вы просто вводите неправильный пароль.

zip -T archive.zip

Терминал Linux с использованием большого флага T

Это довольно важно, когда вы загружаете большие файлы, такие как образы ОС. Для таких файлов вы можете успешно записать их на живую USB и в конечном итоге получить ошибки, когда вы запустите файл образа на своем компьютере. То же самое касается видео и музыки, которые имеют обрезанные части в случайных местах.

Использование флага -u

Если вы хотите добавить новый файл в существующий ZIP-файл, вы можете использовать флаг -u.

zip -u archive.zip new_file.txt

Терминал Linux с использованием флага U

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

Использование флага -e

Если вы хотите добавить пароль, вам нужно использовать флаг -e. Эта опция применяет пароль и шифрование только к файлу, который вы добавляете в ZIP-файл в рамках его команды, поэтому предыдущие файлы останутся незашифрованными, если вы используете это с флагом -u.

zip -e archive.zip text_file.txt

Терминал Linux с использованием флага E с запросом пароля

Отличная вещь в ZIP-файлах заключается в том, что процесс создания пароля также добавляет дополнительный уровень защиты, помимо предоставления доступа. Ваш пароль работает как цифровая подпись, которая используется для расшифровки дополнительного слоя шифрования, добавленного в ZIP-файл.

Использование флага -m

Наконец, флаг -m удаляет оригинальный файл после того, как он был заархивирован в ZIP-файл. Рассматривайте это как автоматизацию дополнительного шага, чтобы вам не пришлось удалять его самостоятельно.

zip -m archive.zip text_file.txt

Терминал Linux с использованием флага M с до и после dir, чтобы показать исчезновение файла

Однако важно помнить: флаг -m удаляет файлы таким образом, что их невозможно восстановить без использования инструмента восстановления файлов. Поэтому убедитесь, что у вас есть резервная копия, или просто удаляйте вещи вручную, используя команду rm вместо этого.

Как заархивировать папку в Linux с помощью команды Zip

Если вы используете команду zip на сырой папке, вы останетесь с папкой, которая не содержит никаких файлов. Каждый раз, когда вы пытаетесь заархивировать папку, вам нужно использовать флаг -r.

Использование флага -r

Флаг -r, также известный как рекурсивный, проходит через каждое содержимое папки и ее подпапок и архивирует каждую из них в ZIP-файл. Он также сохранит текущую структуру каждой подпапки.

zip -r archive.zip my_folder

Терминал Linux с использованием флага R

Это также работает, если вы хотите заархивировать все в текущей папке. Просто замените my_folder на ./, и это изменит его цель на все в текущей.

zip -r archive.zip ./

Использование команды Unzip в Linux с флагом R на всех файлах в текущей папке

Более того, вы можете использовать это вместе с флагом -u, чтобы включить папки и их содержимое в существующий ZIP-файл.

zip -r -u archive.zip another_folder

Терминал Linux с использованием флага R с флагом U

Использование флага -i

Флаг -i позволяет вам выбрать конкретный файл, который вы хотите включить, и исключает все остальное в папке.

zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt

Терминал Linux с использованием флага I

Используя * звездочки с флагом -i, вы можете выбрать файлы, которые имеют схожие имена, но могут заканчиваться чем-то вроде числа. Например, ввод *.txt заставит команду zip включить все TXT-файлы в папке.

zip -r archive.zip my_folder -i "*.txt"

Терминал Linux с использованием флага I с звездочкой

Использование флага -x

Флаг -x позволяет вам исключить только определенные файлы, архивируя целую папку.

zip -r archive.zip my_folder -x my_folder/dont_zip.jpg

Терминал Linux с использованием флага X

Кроме того, флаг -x переопределяет флаг -i, когда они используются вместе. Таким образом, вы можете, например, сказать zip, чтобы включить все другие файлы одного и того же типа, кроме файла, который вы не хотите архивировать.

zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt

Терминал Linux с использованием флага X и флага I вместе

Как разархивировать файл с помощью команды Zip в Linux

Программа unzip является партнерской программой к стандартной программе zip. Она извлекает файлы из вашего ZIP-архива.

Чтобы использовать эту программу, вам просто нужно ввести unzip и имя ZIP-архива.

unzip archive.zip

Базовая команда Unzip в Linux

Используя команду unzip, вы разархивируете ZIP-файл в текущем рабочем каталоге, независимо от того, откуда пришел ZIP-файл.

Чтобы извлечь или разархивировать файл Linux внутри ZIP-файла, чтобы другие остались неразархивированными, вы можете добавить его имя файла после части, где вы вводите архив.

unzip archive.zip file.txt

Выборочная разархивация файла Txt

Как разархивировать папку в Linux с Zip

Хотя unzip обычно извлекает папки, находящиеся в ZIP-архиве, может быть довольно сложно заставить его извлечь только определенные папки. Но это не значит, что это невозможно.

unzip archive.zip my_folder/a_subfolder/*

Выборочная разархивация содержимого одной папки

Эта строка кода извлекает все содержимое в a_subfolder.

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

Часто задаваемые вопросы

Что делает команда gzip в Linux?

Команда Linux gzip – это инструмент, который вы можете использовать для хранения и сжатия файлов в файл GZ.

Лучше ли ZIP, чем TAR?

В некотором смысле, ZIP лучше, чем TAR, потому что ZIP-файлы могут сжимать, шифровать и защищать свое содержимое. Однако файлы TAR предназначены для объединения файлов в один файл для более быстрой передачи файлов, в то время как ZIP-файлы (несмотря на то, что они используются для той же цели) имеют в виду эти дополнительные функции.

Быстрее ли TAR, чем ZIP?

Файлы TAR не сжимают и не шифруют свое содержимое. Поэтому, если вы ищете более быстрый способ объединить большое количество файлов в один легко переносимый архив, вы увидите некоторые преимущества с TAR по сравнению с ZIP. Однако вы можете обнаружить, что переносить ZIP-файл проще, чем TAR-файл, потому что ZIP-файлы, как правило, намного меньше, чем TAR-файлы.

Кредит изображения: Unsplash, Скриншоты Теренза Джомара Дела Круза