ZIP является наиболее широко используемым форматом архивных файлов, который поддерживает сжатие данных без потерь.
ZIP-файл – это контейнер данных, содержащий один или несколько сжатых файлов или каталогов. Сжатые (сжатые) файлы занимают меньше места на диске и могут быть перенесены с одного компьютера на другой быстрее, чем несжатые файлы. ZIP-файлы могут быть легко извлечены в Windows, MacOS и Linux, используя утилиты, доступные для всех операционных систем.
В этой статье мы покажем вам, как заархивировать (сжать) файлы и каталоги в системах Linux через командную строку с помощью утилиты zip.
Zip – это утилита, которая помогает вам создавать ZIP-архивы.
Команда zip имеет следующую синтаксическую форму:
zip OPTIONS ARCHIVE_NAME FILES
Чтобы создать ZIP-архив в определенном каталоге, пользователь должен иметь права на запись в этот каталог. ZIP-файлы не поддерживают информацию о владельце в стиле Linux, и все извлеченные файлы будут принадлежать пользователю, который запускает команду. Если вы хотите сохранить владение файлом и разрешения, используйте команду tar.
Утилита zip по умолчанию не установлена в большинстве дистрибутивов Linux, но вы можете легко установить ее, используя менеджер пакетов вашего дистрибутива.
sudo apt install zip
sudo yum install zip
Чтобы сжать один или несколько файлов, укажите файлы, которые вы хотите добавить в архив, через пробел, как показано ниже:
adding: filename1 (deflated 63%) adding: filename2 (stored 0%) adding: filename3 (deflated 38%)
По умолчанию команда zip печатает имена всех файлов, которые добавляются в архив, и метод сжатия. Мы объясним методы сжатия и уровень позже в этой статье.
При указании имени zip-архива, если вы опустите расширение .zip, оно будет добавлено автоматически, если имя архива не содержит точку. zip archive name.zip filename создаст архив с тем же именем, что и zip archivename filename.
Если вы хотите подавить вывод команды zip, используйте -qпараметр:
zip -q archivename.zip filename1 filename2 filename3
Чаще всего вы создаете ZIP-архив каталога, включая содержимое подкаталогов. Эти опции -r позволяют пересекать всю структуру каталогов рекурсивно. Чтобы создать zip-архив каталога, вы должны использовать:
zip -r archivename.zip directory_name
Вы также можете добавить несколько файлов и каталогов в один архив:
zip -r archivename.zip directory_name1 directory_name2 file1 file1
Метод сжатия zip по умолчанию – deflate. Если утилита zip определяет, что файл не может быть сжат, она просто сохраняет файл в архиве, не сжимая его, используя метод store. В большинстве дистрибутивов Linux утилита zip также поддерживает метод сжатия bzip2.
Чтобы указать метод сжатия, используйте опцию -Z.
zip -r -Z bzip2 archivename.zip directory_name
... adding: sub_dir/ (stored 0%) adding: sub_dir/file1 (bzipped 52%) adding: sub_dir/file2 (bzipped 79%)
Команда zip позволяет указать уровень сжатия, используя число с префиксом от 0 до 9. По умолчанию используется уровень сжатия -6. При использовании -0, все файлы будут храниться без сжатия. -9 заставит команду zip использовать оптимальное сжатие для всех файлов.
Например, чтобы использовать уровень сжатия -9, вы должны напечатать что-то вроде этого:
zip -9 -r archivename.zip directory_name
Чем выше уровень сжатия, тем интенсивнее загрузка ЦП, и процесс займет больше времени.
Если у вас есть конфиденциальная информация, которую необходимо сохранить в архиве, вы можете зашифровать ее, используя параметр -e:
zip -e archivename.zip directory_name
Вам будет предложено ввести и подтвердить пароль архива:
Enter password: Verify password:
Представьте, что вы хотите хранить zip-архив на файловом хостинге, который имеет ограничение на размер файла 1 ГБ, а ваш ZIP-архив 5 ГБ.
Вы можете создать новый разделенный Zip-файл, используя -sопцию с указанным размером. Множитель может быть k (килобайт), m (мегабайт), g (гигабайт) или t (терабайт).
zip -s 1g -r archivename.zip directory_name
Приведенная выше команда будет продолжать создавать новые архивы в наборе после достижения указанного предела размера.
archivename.zip archivename.z01 archivename.z02 archivename.z03 archivename.z04
Создайте ZIP-архив с именем archivename.zip, содержащий все файлы в текущем каталоге.
zip archivename *
То же, что и выше, включая скрытые файлы (файлы, начинающиеся с точки):
zip archivename .* *
Создайте ZIP-архив с именем archivename.zip, содержащий все файлы MP3 в текущем каталоге, не пытаясь сжать файлы.
zip -0 archivename *.mp3
Из этой статьи вы узнали, как создавать ZIP-архивы с помощью команды zip. Мы также показали вам наиболее распространенные опции команды zip. Чтобы извлечь ZIP-архив в системе Linux, вы можете использовать команду unzip.
Если вы хотите узнать больше о Zip, посетите страницу Zip Man.