Как использовать команду 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] 
Их позиции здесь важны. Если вы сделаете их наоборот, компьютер будет недоумевать, почему вы пытаетесь создать “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 archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"
Использование флага -d
Флаг -d позволяет вам удалить файл, заархивированный в ZIP-файле, так же, как вы бы добавили его в один.
zip -d archive.zip remove_me.jpg
Вы также можете использовать его для удаления целых папок из архива. Однако это не сработает для файлов вне ZIP-файла (поэтому вы не можете использовать его для удаления файлов после архивирования).
Использование флага -q
Флаг -q предназначен для того, чтобы убедиться, что zip не вернет сообщение, когда он выполняет свою задачу.
zip -q archive.zip text_file.txt
Это полезно, когда вы используете команду zip со скриптом. Но если вы используете это самостоятельно, вы можете захотеть избежать использования флага -q, так как вы не будете знать, был ли процесс архивирования успешным, не проверив с помощью команды dir или ls.
Использование флага -T
Некоторые файлы, некоторые ZIP-файлы могут быть повреждены во время загрузки – такое бывает. Вы можете использовать флаг -T, чтобы проверить целостность, чтобы вы знали, действительно ли это поврежденный файл или вы просто вводите неправильный пароль.
zip -T archive.zip
Это довольно важно, когда вы загружаете большие файлы, такие как образы ОС. Для таких файлов вы можете успешно записать их на живую USB и в конечном итоге получить ошибки, когда вы запустите файл образа на своем компьютере. То же самое касается видео и музыки, которые имеют обрезанные части в случайных местах.
Использование флага -u
Если вы хотите добавить новый файл в существующий ZIP-файл, вы можете использовать флаг -u.
zip -u archive.zip new_file.txt
Вы также можете добавить больше файлов, добавив их после первого файла, как если бы вы использовали команду zip обычно для создания нового ZIP-архива.
Использование флага -e
Если вы хотите добавить пароль, вам нужно использовать флаг -e. Эта опция применяет пароль и шифрование только к файлу, который вы добавляете в ZIP-файл в рамках его команды, поэтому предыдущие файлы останутся незашифрованными, если вы используете это с флагом -u.
zip -e archive.zip text_file.txt
Отличная вещь в ZIP-файлах заключается в том, что процесс создания пароля также добавляет дополнительный уровень защиты, помимо предоставления доступа. Ваш пароль работает как цифровая подпись, которая используется для расшифровки дополнительного слоя шифрования, добавленного в ZIP-файл.
Использование флага -m
Наконец, флаг -m удаляет оригинальный файл после того, как он был заархивирован в ZIP-файл. Рассматривайте это как автоматизацию дополнительного шага, чтобы вам не пришлось удалять его самостоятельно.
zip -m archive.zip text_file.txt
Однако важно помнить: флаг -m удаляет файлы таким образом, что их невозможно восстановить без использования инструмента восстановления файлов. Поэтому убедитесь, что у вас есть резервная копия, или просто удаляйте вещи вручную, используя команду rm вместо этого.
Как заархивировать папку в Linux с помощью команды Zip
Если вы используете команду zip на сырой папке, вы останетесь с папкой, которая не содержит никаких файлов. Каждый раз, когда вы пытаетесь заархивировать папку, вам нужно использовать флаг -r.
Использование флага -r
Флаг -r, также известный как рекурсивный, проходит через каждое содержимое папки и ее подпапок и архивирует каждую из них в ZIP-файл. Он также сохранит текущую структуру каждой подпапки.
zip -r archive.zip my_folder
Это также работает, если вы хотите заархивировать все в текущей папке. Просто замените my_folder на ./, и это изменит его цель на все в текущей.
zip -r archive.zip ./
Более того, вы можете использовать это вместе с флагом -u, чтобы включить папки и их содержимое в существующий ZIP-файл.
zip -r -u archive.zip another_folder
Использование флага -i
Флаг -i позволяет вам выбрать конкретный файл, который вы хотите включить, и исключает все остальное в папке.
zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt
Используя * звездочки с флагом -i, вы можете выбрать файлы, которые имеют схожие имена, но могут заканчиваться чем-то вроде числа. Например, ввод *.txt заставит команду zip включить все TXT-файлы в папке.
zip -r archive.zip my_folder -i "*.txt"
Использование флага -x
Флаг -x позволяет вам исключить только определенные файлы, архивируя целую папку.
zip -r archive.zip my_folder -x my_folder/dont_zip.jpg
Кроме того, флаг -x переопределяет флаг -i, когда они используются вместе. Таким образом, вы можете, например, сказать zip, чтобы включить все другие файлы одного и того же типа, кроме файла, который вы не хотите архивировать.
zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt
Как разархивировать файл с помощью команды Zip в Linux
Программа unzip является партнерской программой к стандартной программе zip. Она извлекает файлы из вашего ZIP-архива.
Чтобы использовать эту программу, вам просто нужно ввести unzip и имя ZIP-архива.
unzip archive.zip
Используя команду unzip, вы разархивируете ZIP-файл в текущем рабочем каталоге, независимо от того, откуда пришел ZIP-файл.
Чтобы извлечь или разархивировать файл Linux внутри ZIP-файла, чтобы другие остались неразархивированными, вы можете добавить его имя файла после части, где вы вводите архив.
unzip archive.zip file.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, Скриншоты Теренза Джомара Дела Круза