zip используется для сжатия и архивирования файлов, а unzip — для извлечения и распаковки файлов из ZIP-архивов.
В общем случае команда zip имеет следующий формат:
zip [OPTIONS] ARCHIVE FILES
Через параметр ARCHIVE команда принимает имя архива, в который надо добавить файлы. После этого параметру FILES передается набор архивируемых файлов/каталогов. Например:
eugene@Eugene:~$ zip myfiles.zip book.pdf image.png adding: book.pdf (deflated 10%) adding: image.png (deflated 8%)
Здесь файлы book.pdf и image.png из домашнего каталога помещаются в архив myfiles.zip
Также можно задать дополнительные параметры сжатия. Отмечу некоторые:
-r
: рекурсивно архивирует содержимое папок
-d
: удаляет записи из архива
-u
: обновляет в архиве файлы, если архивируемые файлы ранее были изменены, или добавляет новые файлы, если их нет архиве
-1
: быстрое сжатие
-9
: оптимальное сжатие
Например, архивируем папку "test" в архив "test.zip":
zip -r test.zip test
Команда unzip, наоборот, позволяет распаковать архив и в общем случае имеет следующий формат:
unzip [OPTIONS] ARCHIVE
Она распакует архив ARCHIVE. Также можно задать дополнительные параметры сжатия. Отмечу некоторые:
-l
: выводит список компонентов архива
-f
: при распаковке всегда обновляет уже существующие одноименные файлы
-n
: при распаковке никогда не перезаписывает уже существующие одноименные файлы
-d
: устанавливает папку для распаковки
Например, выведем список элементов архива:
eugene@Eugene:~$ unzip -l myfiles.zip Archive: myfiles.zip Length Date Time Name --------- ---------- ----- ---- 11773659 2023-12-01 01:16 book.pdf 177489 2024-02-26 09:49 image.png --------- ------- 11951148 2 files eugene@Eugene:~$
Распакуем архив в текущую папку:
eugene@Eugene:~$ unzip myfiles.zip Archive: myfiles.zip inflating: book.pdf replace image.png? [y]es, [n]o, [A]ll, [N]one, [r]ename: y inflating: image.png eugene@Eugene:~$
В моем случае распаковывается архив myfiles.zip. И если в текущей папке уже есть одноименные файлы/каталоги, то команда попросит подтвердить одно из действий: перезаписать, не перезаписывать, переименовать.
Чтобы сразу установить нужное действие, можно указать флаг -f
(перезапись) или -n
(отсутствие перезаписи).
Опция -d
позволяет указать каталог, в который распаковывается архив. Причем, если каталог не существует, то он автоматически создается:
eugene@Eugene:~$ unzip -d myfiles myfiles.zip Archive: myfiles.zip inflating: myfiles/book.pdf inflating: myfiles/image.png eugene@Eugene:~$
В данном случае распаковка идет в папку myfiles.