Как архивировать файлы в Linux [zip]

Автор mordeniuss

Zip является одновременно архиватором и утилитой сжатия, поэтому мы можем использовать его для архивирования, сжатия и распаковки файлов и каталогов в Unix-подобных операционных системах. Эта утилита совместима с zip-приложениями Windows и других ОС. Тем не менее, tar с gzip и bzip2 является преобладающей утилитой для сжатия. Теперь давайте посмотрим, как архивировать файлы и каталоги в Linux с помощью zip.

Установка

Zip предустановлена в некоторых дистрибутивах Linux. Вы можете установить ее вручную с помощью менеджера пакетов по умолчанию.

Arch Linux:

sudo pacman -S zip unzip

RHEL, CentOS, Fedora:

sudo yum install zip unzip

Debian, Ubuntu, Linux Mint:

sudo apt-get install zip unzip

SUSE/openSUSE:

sudo zypper install zip unzip

Теперь посмотрим несколько примеров.

Создание архива

Создадим архив с именем archive.zip из файлов file1, file2 и file3. Вам не обязательно использовать расширение .zip в имени архива, я добавил его для ясности.

zip archive.zip file1 file2 file3
adding: file1 (stored 0%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)

Чтобы архивировать директорию рекурсивно, нужно указать флаг -r, иначе вы добавите только родительский каталог.

zip -r archive.zip mordeniuss/
adding: mordeniuss/ (stored 0%)
adding: mordeniuss/file.txt (deflated 67%)
adding: mordeniuss/audio.mp3 (deflated 6%)
adding: mordeniuss/image.jpg (deflated 3%)

В отличие от утилиты tar, zip создает архив и сжимает его по умолчанию.

Создание архива из нескольких каталогов и файлов одновременно

Иногда может потребоваться создать архив из группы файлов и папок. Для этого выполните:

zip -r archive.zip mordeniuss/ file1 file2 file3
adding: mordeniuss/ (stored 0%)
adding: mordeniuss/image.jpg (deflated 3%)
adding: file1 (stored 0%)
adding: file2 (stored 0%)
adding: file3 (stored 0%)

Вышеупомянутая команда создает архив с именем archive.zip из каталога mordeniuss и группы файлов, а именно file1, file2, file3.

Добавление файлов в существующий архив

Если вы укажите уже существующий архив, то он просто обновится:

zip archive.zip file4
adding: file4 (stored 0%)

Это заметное преимущество zip перед утилитой tar.

Распаковка архива

Распаковывать архивы так же просто, как и создавать их:

unzip archive.zip
Archive: archive.zip
creating: mordeniuss/
inflating: mordeniuss/file.txt 
inflating: mordeniuss/audio.mp3 
inflating: mordeniuss/image.jpg 
extracting: file1 
extracting: file2 
extracting: file3 
extracting: file4

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

unzip archive.zip file4
Archive: archive.zip
extracting: file4

Список содержимого архива, не распаковывая его

Чтобы просмотреть содержимое, используйте флаг -l.

unzip -l archive.zip
 Archive: archive.zip
 Length Date Time Name
--------- ---------- ----- ----
 0 2018-03-29 15:55 mordeniuss/
 1286 2018-01-11 12:16 mordeniuss/file.txt
 8073033 2018-03-29 14:03 mordeniuss/audio.mp3
 15240 2018-03-29 14:45 mordeniuss/image.jpg
 5 2018-03-29 15:58 file1
 5 2018-03-29 15:58 file2
 5 2018-03-29 15:58 file3
 5 2018-03-29 16:37 file4
--------- -------
 8089579 8 files

Создание зашифрованного архива

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

Чтобы создать зашифрованный архив, используйте флаг -e.

zip -e -r archive.zip mordeniuss/ file1 file2 file3 file4
Enter password: 
Verify password: 
 adding: mordeniuss/ (stored 0%)
 adding: mordeniuss/file.txt (deflated 67%)
 adding: mordeniuss/audio.mp3 (deflated 6%)
 adding: mordeniuss/image.jpg (deflated 3%)
 adding: file1 (stored 0%)
 adding: file2 (stored 0%)
 adding: file3 (stored 0%)
 adding: file4 (stored 0%

При распаковке или просмотре содержимого архива необходимо ввести правильный пароль.

unzip archive.zip
Archive: archive.zip
[archive.zip] mordeniuss/file.txt password:

Степень сжатия

Архивирование содержимого с наивысшей степенью сжатия:

zip -r -9 archive.zip mordeniuss/

Zip поддерживает 9 уровней сжатия, как указано ниже:

  • 0 — Без сжатия
  • 1 — Худшая степень сжатия
  • 6 — Стандартный
  • 9 — Наилучшая степень сжатия

Исключить файлы при создании архивов

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

zip -r archive.zip mordeniuss/ -x mordeniuss/image.jpg

Эта команда создаст архив каталога mordeniuss, но исключит файл image.jpg из архива.

Вы можете убедиться в этом, проверив содержимое:

unzip -l archive.zip

Удалить файлы из существующего архива

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

Чтобы удалить ненужные файлы из существующего архива, используйте флаг -d, как показано ниже.

zip -d archive.zip "mordeniuss/file.txt"
deleting: mordeniuss/file.txt

Аналогично, чтобы удалить группу файлов одного типа, например формата .txt, используйте:

zip -d archive.zip "mordeniuss/*.txt"

Похожие посты

Оставьте комментарий