ZIP-файлы

9.4 ZIP-файлы

Утилита архивирования де-факто в Microsoft — это ZIP-файл. ZIP не так распространен в Linux, но хорошо поддерживается командами zipи unzip. Хотя с tarи gzip/ gunzipодни и те же команды и параметры могут использоваться взаимозаменяемо для создания и извлечения, но это не относится к zip. Одна и та же опция имеет разные значения для двух разных команд.

Режим по умолчанию zip— добавлять файлы в архив и сжимать его.

zip [OPTIONS] [zipfile [file…]]

Первый аргумент zipfile— это имя создаваемого архива, после него — список добавляемых файлов. В следующем примере показано alpha_files.zipсоздание сжатого архива:

sysadmin@localhost:~/Documents$ zip alpha_files.zip alpha*
  adding: alpha-first.txt (deflated 32%)
  adding: alpha-second.txt (deflated 36%)
  adding: alpha-third.txt (deflated 48%)
  adding: alpha.txt (deflated 53%)
  adding: alpha_files.tar.gz (stored 0%) 

Вывод показывает файлы и степень сжатия.

Следует отметить, что tarтребуется –fпараметр, указывающий, что имя файла передается, в то время как zipи unzipтребуется имя файла, и поэтому вам не нужно сообщать команде, что имя файла передается.

Команда zipне будет рекурсивно обращаться к подкаталогам по умолчанию, что отличается от поведения tarкоманды. То есть простое добавление Schoolдобавит только пустой каталог, а не файлы в нем. Если вы хотите tarподобное поведение, вы должны использовать –rпараметр, чтобы указать, что рекурсия должна использоваться:

sysadmin@localhost:~/Documents$ zip -r School.zip School
updating: School/ (stored 0%)
updating: School/Engineering/ (stored 0%)
updating: School/Engineering/hello.sh (deflated 88%)
updating: School/Art/ (stored 0%)
updating: School/Art/linux.txt (deflated 49%)
updating: School/Math/ (stored 0%)
updating: School/Math/numbers.txt (stored 0%)
  adding: School/Art/red.txt (deflated 33%)
  adding: School/Art/hidden.txt (deflated 1%)
  adding: School/Art/animals.txt (deflated 2%)

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

Опция –l list команды выводит unzipсписок файлов в .zipархивах:

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

‌⁠​​⁠​Этого можно избежать, скопировав zip-файл в новый каталог:

Здесь мы извлекаем все файлы из архива в текущий каталог. Точно так же tarвы можете передавать имена файлов в командной строке. В приведенных ниже примерах показаны три разные попытки извлечения файла.

Во-первых, передается только имя файла без компонента каталога. Мол tar, файл не совпадает.

Вторая попытка передает компонент каталога вместе с именем файла, который извлекает только этот файл.

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

Страницы руководства zipи unzipописывают другие действия, которые вы можете выполнять с помощью этих инструментов, такие как замена файлов в архиве, использование различных уровней сжатия и даже использование шифрования.

Last updated