zip - создание и сжатие (архивирование) файлов
СИНТАКСИС
zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] [-n suffixes] [-t date]
[-tt date] [zipfile [file ...]] [-xi list]
zipcloak (см. отдельную страницу руководства)
zipnote (см. отдельную страницу руководства)
zipsplit (см. отдельную страницу руководства)
Примечание: обработка командной строки в zip была изменена для поддержки длинных опций и более последовательной обработки всех опций и аргументов. Некоторые старые командные строки, которые зависят от несоответствий в командной строке, могут больше не работать.
ОПИСАНИЕ
zip - это утилита для сжатия и упаковки файлов для Unix, VMS, MSDOS, OS/2, Windows 9x/NT/XP,
Minix, Atari, Macintosh, Amiga и Acorn RISC OS. Она аналогична комбинации команд Unix tar(1) и compress(1) и совместима с PKZIP (Phil Katz's ZIP для систем MSDOS).
В качестве дополнения к ней существует программа (unzip(1)), которая распаковывает zip-архивы. Программы zip и unzip(1) могут работать с архивами, созданными PKZIP (поддерживая большинство функций PKZIP до версии 4.6), а PKZIP и PKUNZIP могут работать с архивами, созданными zip (с некоторыми исключениями, в частности, с потоковыми архивами, но недавние изменения в стандарте zip-файлов могут облегчить совместимость). zip версии 3.0 совместима с PKZIP 2.04 и также поддерживает расширения Zip64 от PKZIP 4.5, которые позволяют архивам, а также файлам превышать предыдущий предел в 2 ГБ (в некоторых случаях 4 ГБ). zip также теперь поддерживает сжатие bzip2, если библиотека bzip2 включена при компиляции zip. Обратите внимание, что PKUNZIP 1.10 не может извлекать файлы, созданные PKZIP 2.04 или zip 3.0. Для их извлечения необходимо использовать PKUNZIP 2.04g или unzip 5.0p1 (или более поздние версии).
См. раздел ПРИМЕРЫ внизу этой страницы для примеров некоторых типичных способов использования zip.
Большие архивы и Zip64. zip автоматически использует расширения Zip64, когда файлы, превышающие 4 ГБ, добавляются в архив, архив, содержащий записи Zip64, обновляется (если результирующему архиву все еще требуются расширения Zip64), размер архива превышает 4 ГБ или когда количество записей в архиве превысит примерно 64 000. Zip64 также используется для архивов, передаваемых по потоку из стандартного ввода, поскольку размер таких архивов неизвестен заранее, но опцию -fz- можно использовать чтобы принудительно заставить zip создавать архивы, совместимые с PKZIP 2 (при условии, что расширения Zip64 не требуются). Для извлечения файлов, использующих расширения Zip64, необходимо использовать совместимую с PKZIP 4.5 программу распаковки, такую как unzip 6.0 или более поздней версии.
Кроме того, потоковые архивы, записи, зашифрованные стандартным шифрованием, или разделенные архивы, созданные с использованием опции pause, могут быть несовместимы с PKZIP, поскольку используются дескрипторы данных, и PKZIP на момент написания этого документа не поддерживает дескрипторы данных (но недавние изменения в опубликованном PKWare стандарте zip теперь включают некоторую поддержку формата дескрипторов данных, который использует zip).
Mac OS X. Хотя в предыдущих версиях Mac была своя версия zip, в Mac OS X поддержка zip является частью Unix-порта, и большинство функций Unix применимы. Ссылки на «MacOS» ниже обычно относятся к версиям MacOS, более старым, чем OS X. Поддержка некоторых функций Mac OS в Unix-порте Mac OS X, таких как ответвления ресурсов, ожидается в следующей версии zip.
Для получения краткой справки о zip и unzip запустите каждую из них без указания каких-либо параметров в командной строке.
ИСПОЛЬЗОВАНИЕ
Программа полезна для упаковки набора файлов для распространения; для архивирования файлов; и для экономии места на диске путем временного сжатия неиспользуемых файлов или каталогов.
Программа zip помещает один или несколько сжатых файлов в один zip-архив, а также добавляет информацию о файлах (имя, путь, дата и время последнего изменения, права доступа и контрольная информация для проверки целостности файлов). Целая структура каталогов может быть упакована в zip-архив с помощью одной команды. Обычно достигается степень сжатия 2:1–3:1 для текстовых файлов. В zip есть один метод сжатия (deflate), а также можно хранить файлы без сжатия. (Если добавлена поддержка bzip2, zip также может сжимать данные с помощью сжатия bzip2, но для распаковки таких записей требуется достаточно современная программа unzip. При выборе сжатия bzip2 оно заменяет deflate в качестве метода по умолчанию.) Zip автоматически выбирает лучшее из двух (deflate или хранение или, если выбран bzip2, bzip2 или хранение) для каждого сжимаемого файла.
Формат команды. Базовый формат команды:
zip опции архив путь_к_файлу путь_к_файлу ...
где архив — это новый или существующий zip-архив, а путь_к_файлу — это путь к каталогу или файлу, который может включать подстановочные знаки. Если указано имя существующего zip-архива, zip заменит одноименные записи в zip-архиве (сопоставляя относительные имена, хранящиеся в архиве), или добавит записи для новых имен. Например, если файл foo.zip существует и содержит foo/file1 и foo/file2, а в каталоге foo находятся файлы foo/file1 и foo/file3, то:
zip -r foo.zip foo
или более кратко
zip -r foo foo
заменит foo/file1 в foo.zip и добавит foo/file3 в foo.zip. После этого foo.zip будет содержать
foo/file1, foo/file2 и foo/file3, при этом foo/file2 останется без изменений.
Таким образом, если до выполнения команды zip файл foo.zip содержит:
foo/file1 foo/file2
а в каталоге foo находятся:
file1 file3
то в foo.zip будет:
foo/file1 foo/file2 foo/file3
где foo/file1 будет заменен, а foo/file3 — добавлен.
-@ список_файлов. Если указан список файлов в виде -@ [не для MacOS], zip берет список входных
файлов из стандартного ввода, а не из командной строки. Например,
zip -@ foo
сохранит файлы, перечисленные по одному в каждой строке стандартного ввода, в файл foo.zip.
В Unix эту опцию можно использовать с большой эффективностью в сочетании с командой find (1). Например, чтобы создать архив всех файлов исходного кода на C в текущем каталоге и его подкаталогах:
find . -name "*.[ch]" -print | zip source -@
(обратите внимание, что шаблон должен быть заключен в кавычки, чтобы оболочка не расширяла его).
Потоковый ввод и вывод. zip также примет один символ дефиса ("-") в качестве имени zip-файла, в этом случае он будет записывать zip-файл в стандартный вывод, что позволит передавать вывод другой программе. Например:
zip -r - . | dd of=/dev/nrst0 obs=16k
запишет zip-вывод непосредственно на ленту с указанным размером блока для резервного копирования текущего каталога.
zip также принимает один символ дефиса ("-") в качестве имени файла, который необходимо сжать, в этом случае он будет читать файл из стандартного ввода, что позволит zip получать входные данные из другой программы. Например:
tar cf - . | zip backup
сжимает вывод команды tar для резервного копирования текущего каталога. Как правило, это обеспечивает лучшее сжатие, чем предыдущий пример с опцией -r, поскольку zip может использовать преимущества избыточности между файлами. Резервную копию можно восстановить с помощью команды:
unzip -p backup | tar xf
Если имя zip-файла не указано, и стандартный вывод не является терминалом, zip действует как фильтр, сжимая стандартный ввод в стандартный вывод. Например:
tar cf - . | zip | dd of=/dev/nrst0 obs=16k
эквивалентно:
tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k
Архивы zip, созданные таким образом, можно извлечь с помощью программы funzip, которая поставляется в комплекте unzip, или с помощью gunzip, которая поставляется в комплекте gzip (но некоторые версии gunzip могут не поддерживать это, если zip использовал расширения Zip64). Например:
dd if=/dev/nrst0 ibs=16k | funzip | tar xvf
Поток также можно сохранить в файл и использовать unzip.
Если включена поддержка Zip64 для больших файлов и архивов и zip используется в качестве фильтра, zip создает архив Zip64, для чтения которого требуется unzip, совместимый с PKZIP 4.5 или более поздней версии. Это делается для того, чтобы избежать неоднозначностей в структуре zip-файла, как это определено в текущем стандарте zip (PKWARE AppNote), где решение об использовании Zip64 должно быть принято до записи данных для записи, но для потока размер данных неизвестен в этот момент. Если известно, что данные меньше 4 ГБ, можно использовать опцию -fz-, чтобы предотвратить использование Zip64, но zip завершит работу с ошибкой, если Zip64 действительно необходим. zip 3 и unzip 6 и более поздних версий могут читать архивы с записями Zip64. Кроме того, zip удаляет расширения Zip64, если они не нужны при копировании записей архива (см. опцию -U (--copy)).
При перенаправлении вывода в другой файл следует помнить, что все опции должны быть указаны перед перенаправлением, включая -x. Например:
zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile
ZIP-файлы. При изменении существующего ZIP-архива zip создает временный файл с новыми данными и заменяет старый файл только после успешного завершения процесса создания новой версии.
Если имя ZIP-архива не содержит расширение, добавляется расширение .zip. Если имя уже содержит расширение, отличное от .zip, существующее расширение остается неизменным. Однако для разделенных архивов (архивы, разделенные на несколько файлов) расширение .zip должно быть у последнего файла.
Сканирование и чтение файлов. При запуске zip сканирует файлы для обработки (при необходимости). Если сканирование занимает более 5 секунд, zip отображает сообщение «Сканирование файлов» и начинает отображать точки прогресса каждые 2 секунды или после обработки определенного количества записей, в зависимости от того, что наступит раньше. Если между точками проходит более 2 секунд, это может указывать на то, что поиск каждого файла занимает много времени и, возможно, связано с медленным сетевым соединением. (Фактически, первоначальное сканирование файлов представляет собой двухэтапный процесс, в котором сканирование каталогов следует за сортировкой, и эти два этапа разделены пробелом в точках. При обновлении существующего архива пробел также появляется между сканированием существующих файлов и сканированием новых файлов.) Точки сканирования файлов не управляются опцией -ds (размер точки), но их можно отключить с помощью опции -q (тихий режим). Опцию -sf (показать файлы) можно использовать для сканирования файлов и получения списка отсканированных файлов без их фактической обработки.
Если zip не может прочитать файл, он выдает предупреждение, но продолжает работу. См. опцию -MM ниже, чтобы узнать больше о том, как zip обрабатывает шаблоны, которые не совпадают, и файлы, которые не удается прочитать. Если некоторые файлы были пропущены, в конце операции zip выдается предупреждение с указанием количества прочитанных и пропущенных файлов.
Режимы команд. Zip теперь поддерживает два различных типа режимов команд: внешние и внутренние. Внешние режимы (add, update и freshen) считывают файлы из файловой системы (а также из существующего архива), в то время как внутренние режимы (delete и copy) работают исключительно с записями в существующем архиве.
add
Обновляет существующие записи и добавляет новые файлы. Если архив не существует, он создается. Это режим по умолчанию.
update (-u)
Обновляет существующие записи, если они новее в файловой системе, и добавляет новые файлы. Если архив не существует, выдается предупреждение, а затем создается новый архив.
freshen (-f)
Обновляет существующие записи архива, если они новее в файловой системе. Не добавляет новые файлы в архив.
delete (-d)
Выбирает записи в существующем архиве и удаляет их.
copy (-U)
Выбирает записи в существующем архиве и копирует их в новый архив. Этот новый режим аналогичен режиму update, но шаблоны командной строки выбирают записи в существующем архиве, а не файлы из файловой системы, и он использует опцию --out для записи результирующего архива в новый файл, а не для обновления существующего архива, оставляя исходный архив без изменений.
Новая опция синхронизации файлов (-FS) также рассматривается как новый режим, хотя она похожа на режим обновления. Этот режим синхронизирует архив с файлами в операционной системе, заменяя файлы в архиве только в том случае, если время или размер файла в операционной системе отличаются, добавляя новые файлы и удаляя записи из архива, если соответствующий файл отсутствует. Поскольку этот режим может удалять записи из архива, рекомендуется создать резервную копию архива.
См. также -DF для создания дифференциальных архивов.
Разделение архивов. zip версии 3.0 и более поздних может создавать разделенные архивы. Разделенный архив — это стандартный zip-архив, разделенный на несколько файлов. (Обратите внимание, что разделенные архивы — это не просто архивы, разделенные на части, поскольку смещения записей теперь основаны на начале каждой части. Объединение частей вместе сделает эти смещения недействительными, но unzip обычно может с этим справиться. zip обычно отказывается обрабатывать такие объединенные архивы, если не используется опция -FF для исправления смещений.)
Одно из применений разделенных архивов — хранение большого архива на нескольких съемных носителях. Для разделенного архива, состоящего из 20 разделенных файлов, файлы обычно называются (замените ARCHIVE именем вашего архива) ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Обратите внимание, что последний файл — это файл .zip. В отличие от этого, многотомные архивы — это исходные многодисковые архивы, обычно использующие дискеты и метки томов для хранения номеров дисков. zip поддерживает разделенные архивы, но не поддерживает многотомные архивы, хотя существует процедура преобразования разделенных архивов подходящего размера в многотомные архивы. Обратное также верно: каждый файл многотомного архива можно скопировать в файлы с указанными выше именами, чтобы создать разделенный архив.
Используйте -s, чтобы задать размер разделения и создать разделенный архив. Размер указывается как число, за которым необязательно следует одна из букв k (кБ), m (МБ), g (ГБ) или t (ТБ) (по умолчанию — m). Опцию -sp можно использовать для приостановки работы zip между разделениями, чтобы можно было менять съемные носители, например, но прочитайте описания и предупреждения для -s и -sp ниже.
Хотя zip не обновляет разделенные архивы, zip предоставляет новую опцию -O (--output-file или --out), позволяющую обновлять разделенные архивы и сохранять их в новом архиве. Например:
zip inarchive.zip foo.c bar.c --out outarchive.zip
считывает архив inarchive.zip, даже если он разделен, добавляет файлы foo.c и bar.c и записывает полученный архив в outarchive.zip. Если inarchive.zip является разделенным архивом, то outarchive.zip по умолчанию имеет тот же размер разделения. Имейте в виду, что если outarchive.zip и какие-либо создаваемые с ним разделенные файлы уже существуют, они всегда перезаписываются без предупреждения. Это может быть изменено в будущем.
Unicode. Хотя стандарт zip требует хранения путей в архиве, используя определенный набор символов, на практике в zip-архивах пути хранятся в локальной кодировке. Это создает проблемы, когда архив создается или обновляется в системе, использующей один набор символов, а затем извлекается в другой системе, использующей другой набор символов. При компиляции с поддержкой Unicode на платформах, поддерживающих широкие символы, zip теперь хранит, в дополнение к стандартному локальному пути для обратной совместимости, перевод этого пути в кодировку UTF-8. Это обеспечивает общий универсальный набор символов для хранения путей, что позволяет полностью извлекать эти пути в других системах, поддерживающих Unicode, и максимально точно сопоставлять их в системах, которые этого не делают.
В 32-битных системах Windows, где пути хранятся внутренне в формате Unicode, но отображаются в локальной кодировке, возможно, что некоторые пути будут пропущены во время локального сканирования каталогов. Zip-архив с поддержкой Unicode теперь может читать и сохранять эти пути. Обратите внимание, что системы Win 9x и файловые системы FAT не полностью поддерживают Unicode.
Имейте в виду, что консольные окна в Win32 и Unix, например, иногда не отображают все символы правильно из-за того, как каждая операционная система переключает кодировки для отображения. Однако инструменты навигации по каталогам должны отображать правильные пути, если загружены необходимые шрифты.
Формат командной строки. Эта версия zip имеет обновленную обработку командной строки и поддержку длинных опций.
Короткие опции имеют форму:
-s[-][s[-]...][value][=value][ value]
где s — короткая опция из одного или двух символов. Короткая опция, принимающая значение, находится в конце аргумента, и все, что идет после нее, воспринимается как значение. Если опцию можно отменить и сразу после опции следует "-", опция отменяется. Короткие опции также могут быть указаны как отдельные аргументы:
-s[-][value][=value][ value] -s[-][value][=value][ value] ...
В общем, короткие опции принимают значения либо как часть одного и того же аргумента, либо как следующий аргумент. Также поддерживается необязательный знак "=". Таким образом:
-ttmmddyyyy
и
-tt=mmddyyyy
и
-tt mmddyyyy
— все это работает. Опции -x и -i принимают списки значений и используют немного другой формат, описанный ниже. См. опции -x и -i.
Длинные опции имеют форму:
--longoption[-][=value][ value]
где опция начинается с "--", имеет многосимвольное имя, может включать завершающий дефис, чтобы отменить опцию (если опция это поддерживает), и может иметь значение (аргумент опции), указанное путем добавления "=" перед ним (без пробелов). Значения также могут следовать за аргументом. Таким образом:
--before-date=mmddyyyy
и
--before-date mmddyyyy
— оба варианта работают.
Длинные имена опций можно сократить до кратчайшей уникальной аббревиатуры. См. описания опций ниже, чтобы узнать, какие опции поддерживают длинные опции. Чтобы избежать путаницы, избегайте сокращения отменяемой опции с встроенным дефисом ("-") в дефисе, если вы планируете ее отменить (анализатор будет рассматривать завершающий дефис, например, для опции --some-option, используя --some- в качестве опции, как часть имени, а не как дефис отмены). Это может быть изменено в будущем, чтобы принудительно использовать последний дефис в --some в качестве дефиса отмены.
ОПЦИИ
-a
--ascii
[Системы, использующие EBCDIC] Преобразовать файл в формат ASCII.
-A
--adjust-sfx
Настроить самораспаковывающийся исполняемый архив. Самораспаковывающийся исполняемый архив создается путем добавления заглушки SFX к существующему архиву. Опция -A указывает zip изменить смещения записей, хранящиеся в архиве, чтобы учесть эти данные "преамбулы".
Примечание: самораспаковывающиеся архивы для Amiga являются особым случаем. В настоящее время только порт zip для Amiga может изменять или обновлять их без повреждения. -J можно использовать для удаления заглушки SFX, если необходимо внести другие изменения.
-AC
--archive-clear
[WIN32] После создания архива (и его проверки, если используется -T, что рекомендуется) сбросить биты архива для обработанных файлов. ВНИМАНИЕ: после сброса биты не могут быть восстановлены. Вы можете использовать опцию -sf show files для сохранения списка обработанных файлов, если операцию архивации необходимо повторить. Также рассмотрите возможность использования опции -MM must match. Обязательно ознакомьтесь с -DF как с, возможно, лучшим способом создания инкрементных резервных копий.
-AS
--archive-set
[WIN32] Включать только файлы, для которых установлен бит архива. Каталоги не сохраняются при использовании -AS, хотя по умолчанию пути записей, включая каталоги, сохраняются, как обычно, и могут использоваться большинством программ распаковки для восстановления каталогов.
Бит архива устанавливается операционной системой при изменении файла и, при использовании с -AC, -AS может обеспечить возможность создания инкрементной резервной копии. Однако другие приложения могут изменять бит архива, и он может быть не всегда надежным индикатором того, какие файлы изменились с момента последней операции архивации. Альтернативные способы создания инкрементных резервных копий — использование -t для использования дат файлов, хотя это не позволит обнаружить старые файлы, скопированные в архивируемые каталоги, и -DF для создания дифференциального архива.
-B
--binary
[VM/CMS и MVS] принудительно читать файл как двоичный (по умолчанию — текст).
-Bn [TANDEM] установить параметры форматирования Edit/Enscribe, где n определяется как:
бит 0: не добавлять разделитель (Edit/Enscribe)
бит 1: использовать LF вместо CR/LF в качестве разделителя (Edit/Enscribe)
бит 2: заполнять запись пробелами до максимальной длины записи (Enscribe)
бит 3: обрезать конечные пробелы (Enscribe)
бит 8: принудительно использовать 30K (расширенное) чтение для неструктурированных файлов
-b path
--temp-path path
Использовать указанный путь для временного zip-архива. Например:
zip -b /tmp stuff *
поместит временный zip-архив в каталог /tmp, скопировав stuff.zip в текущий каталог после завершения. Эта опция полезна при обновлении существующего архива, и файловая система, содержащая этот старый архив, не имеет достаточного места для хранения как старого, так и нового архивов одновременно. Она также может быть полезна в некоторых случаях потоковой передачи, чтобы избежать необходимости в дескрипторах данных. Обратите внимание, что использование этой опции может потребовать от zip дополнительного времени для копирования архивного файла в целевую файловую систему после завершения.
-c
--entry-comments
Добавить однострочные комментарии для каждого файла. Операции с файлами (добавление, обновление) выполняются в первую очередь, а затем пользователю предлагается ввести однострочный комментарий для каждого файла. Введите комментарий и нажмите Enter или просто нажмите Enter, чтобы не добавлять комментарий.
-C
--preserve-case
[VMS] Сохранять регистр всех символов в VMS. Отрицание этой опции (-C-) преобразует все символы в нижний регистр.
-C2
--preserve-case-2
[VMS] Сохранять регистр ODS2 в VMS. Отрицание этой опции (-C2-) преобразует все символы в нижний регистр.
-C5
--preserve-case-5
[VMS] Сохранять регистр ODS5 в VMS. Отрицание этой опции (-C5-) преобразует все символы в нижний регистр.
-d
--delete
Удалить записи из ZIP-архива. Например:
zip -d foo foo/tom/junk foo/harry/\* \*.o
удалит запись foo/tom/junk, все файлы, начинающиеся с foo/harry/, и все файлы, заканчивающиеся на .o (в любом пути). Обратите внимание, что расширение имен файлов в командной оболочке заблокировано с помощью обратных слешей, чтобы zip мог видеть звездочки, что позволяет zip сопоставлять содержимое ZIP-архива, а не содержимое текущего каталога. (Обратные слеши не используются на платформах на базе MSDOS). Также можно использовать кавычки для экранирования звездочек, например:
zip -d foo foo/tom/junk "foo/harry/*" "*.o"
Если не экранировать звездочки в системе, где командная оболочка расширяет подстановочные знаки, это может привести к тому, что звездочки будут преобразованы в список файлов в текущем каталоге, и этот список будет использоваться для удаления записей из архива.
В MSDOS опция -d чувствительна к регистру при сопоставлении имен в ZIP-архиве. Это требует, чтобы имена файлов вводились в верхнем регистре, если они были заархивированы PKZIP в системе MSDOS. (Мы рассматривали возможность сделать это нечувствительным к регистру в системах, где пути нечувствительны к регистру, но возможно, что архив был создан в системе, где регистр имеет значение, и архив может содержать Bar и bar в качестве отдельных файлов в архиве). Но см. новую опцию -ic для игнорирования регистра в архиве.
-db
--display-bytes
Отображать текущее количество байтов, показывая заархивированные байты и оставшиеся байты.
-dc
--display-counts
Отображать текущее количество заархивированных записей и оставшихся записей.
-dd
--display-dots
Отображать точки во время архивирования каждой записи (за исключением портов, у которых есть собственный индикатор прогресса). См. -ds ниже для настройки размера точки. По умолчанию точка отображается каждые 10 МБ обработанного входного файла. Опция -v также отображает точки (ранее с гораздо более высокой частотой, но теперь -v также использует значение по умолчанию 10 МБ), и эта частота также контролируется опцией -ds.
-df
--datafork
[MacOS] Включать в архив только данные файлов. Хорошо подходит для экспорта файлов в другие операционные системы. Ресурсные вилки будут полностью игнорироваться.
-dg
--display-globaldots
Отображать индикаторы прогресса для архива, а не для каждого файла. Команда
zip -qdgds 10m
отключает большую часть вывода, кроме точек, отображаемых каждые 10 МБ.
-ds size
--dot-size size
Устанавливает объем входного файла, обрабатываемого перед отображением каждой точки. См. -dd, чтобы включить отображение точек. Установка этого параметра подразумевает -dd. Размер указывается в формате nm, где n — число, а m — множитель. В настоящее время m может быть k (КБ), m (МБ), g (ГБ) или t (ТБ), поэтому, если n равно 100, а m — k, размер будет 100k, то есть 100 КБ. По умолчанию — 10 МБ.
Опция -v также отображает точки и теперь также по умолчанию использует 10 МБ. Частота также контролируется этой опцией. Размер 0 отключает отображение точек.
Эта опция не управляет точками, отображаемыми в сообщении «Сканирование файлов», когда zip сканирует входные файлы. Размер точки для этого фиксирован и составляет 2 секунды или фиксированное количество записей, в зависимости от того, что больше.
-du
--display-usize
Отображает размер несжатых данных для каждой записи.
-dv
--display-volume
Отображает номер тома (диска), с которого читается каждая запись (при чтении существующего архива) и в который она записывается.
-D
--no-dir-entries
Не создавать записи для каталогов в zip-архиве. По умолчанию записи каталогов создаются, чтобы их атрибуты можно было сохранить в zip-архиве. Переменная среды ZIPOPT может использоваться для изменения параметров по умолчанию. Например, в Unix с использованием sh:
ZIPOPT="-D"; export ZIPOPT
(Переменная ZIPOPT может использоваться для любой опции, включая -i и -x, используя новый формат опции, указанный ниже, и может содержать несколько опций.) Опция -D является сокращением для -x "*/", но последняя не могла быть установлена в качестве значения по умолчанию в переменной среды ZIPOPT, поскольку содержимое ZIPOPT вставляется в начало командной строки, а список файлов должен заканчиваться в конце строки.
В этой версии zip опции -x и -i могут использоваться в ZIPOPT, если используется форма
-x file file ... @
где @ (аргумент, который является просто @) завершает список.
-DF
--difference-archive
Создает архив, содержащий все новые и измененные файлы с момента создания исходного архива. Для этого список входных файлов и текущий каталог должны быть такими же, как и во время исходной операции zip.
Например, если существующий архив был создан с помощью
zip -r foofull .
из каталога bar, то команда
zip -r foofull . -DF --out foonew
также из каталога bar создает архив foonew, содержащий только файлы, которых нет в foofull, и файлы, у которых размер или время файла не совпадают с теми, что в foofull.
Обратите внимание, что переменная среды TZ должна быть установлена в соответствии с местным часовым поясом, чтобы эта опция работала правильно. Изменение часового пояса после создания исходного архива может привести к тому, что время не будет совпадать, и все файлы будут включены.
Одним из возможных подходов к резервному копированию каталога может быть создание обычного архива содержимого каталога в качестве полной резервной копии, а затем использование этой опции для создания инкрементных резервных копий.
-e
--encrypt
Шифрует содержимое zip-архива с помощью пароля, который вводится в терминале в ответ на запрос (он не будет отображаться; если стандартный поток ошибок не является терминалом, zip завершит работу с ошибкой). Запрос пароля повторяется, чтобы пользователь не допустил опечаток.
-E
--longnames
[OS/2] Используйте атрибут расширенного имени .LONGNAME (если он найден) в качестве имени файла.
-f
--freshen
Замените (обновите) существующую запись в ZIP-архиве только в том случае, если она была изменена позже, чем версия, уже находящаяся в ZIP-архиве; в отличие от опции обновления (-u), эта опция не добавит файлы, которые еще не находятся в ZIP-архиве. Например:
zip -f foo
Эта команда должна выполняться из того же каталога, из которого была запущена исходная команда zip, поскольку пути, хранящиеся в ZIP-архивах, всегда относительны.
Обратите внимание, что переменная окружения TZ должна быть установлена в соответствии с местным часовым поясом, чтобы опции -f, -u и -o работали правильно.
Причины этого несколько сложны и связаны с различиями между временем файлов в формате Unix (всегда в формате GMT) и большинством других операционных систем (всегда местное время) и необходимостью их сравнения. Типичное значение TZ — «MET-1MEST» (среднее европейское время с автоматической корректировкой на «летнее время»).
Формат: TTThhDDD, где TTT — часовой пояс, например, MET, hh — разница между GMT и местным временем, например, -1 выше, а DDD — часовой пояс, когда действует летнее время. Если летнее время не используется, DDD можно опустить. Для восточного часового пояса США — EST5EDT.
-F
--fix
-FF
--fixfix
Восстановите ZIP-архив. Опцию -F можно использовать, если некоторые части архива отсутствуют, но она требует относительно неповрежденного центрального каталога. Входной архив сканируется, как обычно, но zip будет игнорировать некоторые проблемы. Полученный архив должен быть действительным, но любые несогласованные записи будут исключены.
Если опцию удвоить, как в -FF, архив сканируется с начала, и zip сканирует его на предмет специальных сигнатур для определения границ между членами архива. Одиночная опция -F более надежна, если архив не слишком поврежден, поэтому сначала попробуйте эту опцию.
Если архив слишком поврежден или конец был усечен, необходимо использовать -FF. Это изменение по сравнению с zip 2.32, где опция -F могла читать усеченный архив. Опция -F теперь более надежно восстанавливает архивы с незначительными повреждениями, и опция -FF необходима для восстановления архивов, которые ранее могли быть восстановлены с помощью -F.
Ни одна из этих опций не сможет восстановить архивы, которые были неправильно переданы в текстовом режиме вместо двоичного. После восстановления опция -t в unzip может показать, что у некоторых файлов плохая контрольная сумма CRC. Такие файлы нельзя восстановить; их можно удалить из архива с помощью опции -d в zip.
Обратите внимание, что -FF может испытывать трудности с восстановлением архивов, которые содержат встроенный ZIP-архив, который был сохранен (без сжатия) в архиве, и, в зависимости от повреждений, он может найти записи во встроенном архиве, а не в самом архиве. Сначала попробуйте -F, так как у нее нет этой проблемы.
Формат команд исправления изменился. Например, чтобы исправить поврежденный архив foo.zip, используйте:
zip -F foo --out foofix
Эта команда пытается прочитать записи обычным образом, копируя исправные записи в новый архив foofix.zip. Если это не работает, например, когда архив обрезан, или если некоторые записи, которые, как вы знаете, находятся в архиве, пропущены, попробуйте:
zip -FF foo --out foofixfix
и сравните полученный архив с архивом, созданным с помощью -F. Опция -FF может создать непоследовательный архив. В зависимости от того, что повреждено, вы можете использовать опцию -F для исправления этого архива.
Разделенный архив с отсутствующими файлами разделов можно исправить с помощью -F, если у вас есть последний раздел архива (файл .zip). Если этот файл отсутствует, необходимо использовать -FF для исправления архива, что потребует от вас указать, какие разделы у вас есть.
В настоящее время опции исправления не могут восстанавливать записи с поврежденной контрольной суммой или записи, которые повреждены иным образом.
-FI
--fifo [Unix] Обычно zip пропускает чтение любых FIFO (именованных каналов), поскольку zip может зависнуть, если FIFO не получает данные. Эта опция указывает zip читать содержимое любого FIFO, который он находит.
-FS
--filesync
Синхронизировать содержимое архива с файлами в операционной системе. Обычно, при обновлении архива, новые файлы добавляются, а измененные файлы обновляются, но файлы, которых больше нет в операционной системе, не удаляются из архива. Эта опция включает новый режим, который проверяет записи в архиве на соответствие файловой системе. Если время и размер файла записи соответствуют времени и размеру файла в операционной системе, запись копируется из старого архива вместо того, чтобы считываться из файловой системы и сжиматься. Если файл в операционной системе изменился, запись считывается и сжимается, как обычно. Если записи в архиве не соответствует файлу в операционной системе, запись удаляется. Включение этой опции должно создавать архивы, идентичные новым архивам, но поскольку существующие записи копируются вместо сжатия, обновление существующего архива с помощью -FS может быть намного быстрее, чем создание нового архива. Также рассмотрите возможность использования -u для обновления архива.
Для того, чтобы эта опция работала, архив должен обновляться из того же каталога, в котором он был создан, чтобы относительные пути совпадали. Если копируется мало файлов из старого архива, создание нового архива может быть быстрее.
Обратите внимание, что переменная среды TZ должна быть установлена в соответствии с местным часовым поясом, чтобы эта опция работала правильно. Изменение часового пояса после создания исходного архива может привести к тому, что совпадений не будет, и все файлы будут пересжаты.
Эта опция удаляет файлы из архива. Если вам нужно сохранить исходный архив, сначала сделайте его копию или используйте опцию --out для вывода обновленного архива в новый файл. Даже если это может быть медленнее, создание нового архива с новым именем архива безопаснее, позволяет избежать несоответствий между путями архива и операционной системы и является предпочтительным.
-g
--grow
Добавить файлы в указанный ZIP-архив, вместо создания нового. Если эта операция не удастся, zip попытается восстановить архив в его исходное состояние. Если восстановление не удастся, архив может быть поврежден. Эта опция игнорируется, если существующий архив отсутствует или если необходимо обновить или удалить хотя бы один элемент архива.
-h
-?
--help
Отобразить справочную информацию zip (это также отображается, если zip запускается без аргументов).
-h2
--more-help
Отобразить расширенную справку, включая дополнительную информацию о формате командной строки, сопоставлении с шаблоном и других менее известных опциях.
-i files
--include files
Включить только указанные файлы, например:
zip -r foo . -i \*.c
что включит только файлы, заканчивающиеся на .c, в текущем каталоге и его подкаталогах. (Примечание для пользователей PKZIP: эквивалентная команда:
pkzip -rP foo *.c
PKZIP не допускает рекурсию в каталогах, отличных от текущего.) Обратный слеш
предотвращает подстановку имен файлов оболочкой, поэтому сопоставление имен выполняется zip на всех уровнях каталогов. [Это для Unix и других систем, где \ экранирует следующий символ. Для других систем, в которых оболочка не обрабатывает *, не используйте \ и вышеуказанное будет
zip -r foo . -i *.c
Примеры для Unix, если не указано иное.] Таким образом, чтобы включить каталог dir, расположенный непосредственно в текущем каталоге, используйте
zip -r foo . -i dir/\*
или
zip -r foo . -i "dir/*"
чтобы сопоставить пути, такие как dir/a и dir/b/file.c [в портах без расширения подстановочных знаков в
оболочке, таких как MSDOS и Windows
zip -r foo . -i dir/*
используется.] Обратите внимание, что в настоящее время завершающий слеш необходим для каталогов (например,
zip -r foo . -i dir/
чтобы включить каталог dir).
Длинная форма первой команды:
zip -r foo . --include \*.c
и делает то же самое, что и короткая форма.
Хотя синтаксис команды раньше требовал, чтобы -i находился в конце командной строки, в этой версии он фактически может находиться в любом месте. Список файлов заканчивается следующим аргументом, начинающимся с -, концом командной строки или терминатором списка @ (аргументом, который является просто @). Таким образом, вышеуказанное можно представить как
zip -i \*.c @ -r foo .
например. Между опцией и первым файлом списка должно быть пространство. Для
только одного файла можно использовать форму с одним значением:
zip -i\*.c -r foo .
(без пробела между опцией и значением) или
zip --include=\*.c -r foo .
в качестве дополнительных примеров. Формы с одним значением не рекомендуются, потому что они могут быть
запутанными и, в частности, формат -ifile может вызвать проблемы, если первая буква
файла в сочетании с i образует двухбуквенную опцию, начинающуюся с i. Используйте -sc, чтобы увидеть, как будет разобран ваш
командная строка.
Также возможно:
zip -r foo . -_
что включит только файлы в текущем каталоге и его подкаталогах,
соответствующие шаблонам в файле include.lst.
^ i и -x — это шаблоны, соответствующие внутренним путям архива. См. -R для получения дополнительной информации о шаблонах.
`-I`
`--no-image`
[Acorn RISC OS] Не выполнять сканирование файлов Image. При использовании zip не будет рассматривать файлы Image (например, разделы DOS или архивы Spark при загруженном SparkFS) как каталоги, а будет сохранять их как отдельные файлы.
Например, если у вас загружен SparkFS, архивация архива Spark приведет к тому, что zip-файл будет содержать каталог (и его содержимое), а при использовании опции `-I` zip-файл будет содержать архив Spark. Очевидно, что второй случай также будет получен (без опции `-I`), если SparkFS не загружен.
`-ic`
`--ignore-case`
[VMS, WIN32] Игнорировать регистр при сопоставлении записей архива. Эта опция доступна только в системах, где регистр файлов игнорируется. В системах с файловыми системами, не учитывающими регистр, регистр обычно игнорируется при сопоставлении файлов в файловой системе, но не игнорируется для `-f` (freshen), `-d` (delete), `-U` (copy) и аналогичных режимов при сопоставлении с записями архива (в настоящее время `-f` игнорирует регистр в VMS), потому что записи архива могут быть из систем, в которых регистр имеет значение, и имена, различающиеся только регистром, могут существовать в архиве. Опция `-ic` делает все сопоставления нечувствительными к регистру. Это может привести к тому, что несколько записей архива будут соответствовать шаблону командной строки.
`-j`
`--junk-paths`
Сохранять только имя сохраненного файла (отбрасывать путь) и не сохранять имена каталогов. По умолчанию zip сохраняет полный путь (относительно текущего каталога).
`-jj`
`--absolute-path`
[MacOS] Записывать полный путь (+ имя тома). Полный путь, включая том, будет сохранен. По умолчанию сохраняется относительный путь.
`-J`
`--junk-sfx`
Удалить любые добавленные данные (например, SFX-заголовок) из архива.
`-k`
`--DOS-names`
Попытаться преобразовать имена и пути, чтобы они соответствовали MSDOS, сохранить только атрибут MSDOS (только атрибут записи пользователя из Unix) и пометить запись как созданную в MSDOS (даже если это не так); для совместимости с PKUNZIP под MSDOS, которая не может обрабатывать определенные имена, такие как имена с двумя точками.
`-l`
`--to-crlf`
Преобразовать символ конца строки Unix LF в соглашение MSDOS CR LF. Эту опцию не следует использовать для двоичных файлов. Эту опцию можно использовать в Unix, если zip-файл предназначен для PKUNZIP под MSDOS. Если входные файлы уже содержат CR LF, эта опция добавляет дополнительный CR. Это необходимо для того, чтобы unzip -a в Unix получал точную копию исходного файла, чтобы отменить эффект zip -l. См. `-ll` для информации о том, как обрабатываются двоичные файлы.
`-la`
`--log-append`
Добавлять в существующий файл журнала. По умолчанию существующий файл перезаписывается.
`-lf logfilepath`
`--logfile-path logfilepath`
Открыть файл журнала по указанному пути. По умолчанию существующий файл в этом месте перезаписывается, но опция `-la` приведет к тому, что существующий файл будет открыт и новая информация журнала будет добавлена к существующей информации. В файл журнала записываются только предупреждения и ошибки, если не указана также опция `-li`, тогда в файл журнала записывается вся информация.
-li
--log-info
Включает информационные сообщения, такие как имена файлов, добавляемых в архив, в журнал. По умолчанию в журнал включаются только командная строка, любые предупреждения и ошибки, а также окончательный статус.
-ll
--from-crlf
Преобразует символы конца строки MSDOS (CR LF) в Unix (LF). Этот параметр не следует использовать для двоичных файлов. Этот параметр можно использовать в MSDOS, если zip-файл предназначен для распаковки в Unix. Если файл был преобразован, а затем выяснится, что это двоичный файл, будет выдано предупреждение, и файл, вероятно, будет поврежден. В этой версии, если -ll обнаруживает двоичный файл при чтении первого буфера из файла, zip теперь выдает предупреждение и пропускает преобразование символов конца строки для этого файла. Эта проверка, похоже, обнаруживает все протестированные двоичные файлы, но исходная проверка остается, и если преобразованный файл позже будет определен как двоичный, предупреждение все равно будет выдано. Сейчас используется новый алгоритм для обнаружения двоичных файлов, который должен позволить преобразовать символы конца строки для текстовых файлов в кодировках UTF-8 и аналогичных.
-L
--license
Отображает лицензию zip.
-m
--move
Перемещает указанные файлы в zip-архив; фактически, после создания указанного zip-архива удаляет целевые каталоги/файлы. Если каталог становится пустым после удаления файлов, каталог также удаляется. Удаление не производится до тех пор, пока zip не создаст архив без ошибок. Это полезно для экономии дискового пространства, но может быть опасным, поэтому рекомендуется использовать его в сочетании с -T для тестирования архива перед удалением всех входных файлов.
-MM
--must-match
Все входные шаблоны должны соответствовать хотя бы одному файлу, и все найденные входные файлы должны быть читаемыми. Обычно, когда входной шаблон не соответствует файлу, выдается предупреждение "имя не найдено", а когда входной файл найден, но позже оказывается недоступным или нечитаемым, выдается предупреждение "файл отсутствует или нечитаем". В любом случае zip продолжает создавать архив, пропуская новые недоступные или нечитаемые файлы, а файлы, уже находящиеся в архиве, остаются неизменными. После создания архива, если какие-либо файлы были недоступны для чтения, zip возвращает код ошибки OPEN (18 в большинстве систем) вместо обычного кода успешного выполнения (0 в большинстве систем). При использовании -MM, zip завершает работу, как только входной шаблон не соответствует (когда выдается предупреждение "имя не найдено") или когда входной файл нечитаем. В любом случае, zip завершается с ошибкой OPEN, и архив не создается.
Этот параметр полезен, когда необходимо заархивировать известный список файлов, чтобы любые отсутствующие или нечитаемые файлы приводили к ошибке. Он менее полезен при использовании с подстановочными знаками, но zip все равно завершит работу с ошибкой, если какой-либо входной шаблон не соответствует хотя бы одному файлу и если какие-либо соответствующие файлы нечитаемы. Если вы хотите создать архив в любом случае и вам просто нужно узнать, были ли пропущены файлы, не используйте -MM и просто проверяйте код возврата. Кроме того, -lf может быть полезен.
-n suffixes
--suffixes suffixes
Не пытаться сжимать файлы с указанными расширениями. Такие файлы просто сохраняются (с 0% сжатием) в выходном zip-файле, чтобы zip не тратил время на их сжатие. Расширения разделяются либо двоеточиями, либо точками с запятой. Например:
zip -rn .Z:.zip:.tiff:.gif:.snd foo foo
скопирует все из каталога foo в файл foo.zip, но сохранит любые файлы, заканчивающиеся на .Z, .zip, .tiff, .gif или .snd, без попыток их сжать (файлы изображений и звука часто используют собственные специализированные методы сжатия). По умолчанию zip не сжимает файлы с расширениями .Z:.zip:.zoo:.arc:.lzh:.arj. Такие файлы сохраняются непосредственно в выходном архиве. Переменная среды ZIPOPT может использоваться для изменения параметров по умолчанию. Например, в Unix с использованием csh:
setenv ZIPOPT "-n .gif:.zip"
Чтобы попытаться сжать все файлы, используйте:
zip -n : foo
Опция максимального сжатия -9 также пытается сжать все файлы, независимо от расширения.
В системах Acorn RISC OS расширения на самом деле являются типами файлов (в 3-значном шестнадцатеричном формате). По умолчанию zip не сжимает файлы с типами файлов из списка DDC:D96:68E (т. е. архивы, файлы CFS и файлы PackDir).
-nw
--no-wild
Не выполнять внутреннюю обработку подстановочных знаков (обработка подстановочных знаков оболочкой все равно выполняется оболочкой, если аргументы не экранированы). Полезно, если считывается список путей и не требуется подстановка подстановочных знаков.
-N
--notes
[Amiga, MacOS] Сохранить примечания Amiga или MacOS в виде комментариев к zip-файлу. Их можно восстановить с помощью опции -N команды unzip. Если также используется -c, запрашиваются комментарии только для тех файлов, у которых нет примечаний.
-o
--latest-time
Установить время "последнего изменения" zip-архива равным самому последнему (самому раннему) времени "последнего изменения", найденному среди записей в zip-архиве. Это можно использовать без каких-либо других операций, если это необходимо. Например:
zip -o foo
изменит время "последнего изменения" файла foo.zip, установив его равным самому последнему времени среди записей в файле foo.zip.
-O output-file
--output-file output-file
Выполнить изменения архива, как обычно, но вместо обновления существующего архива вывести новый архив в файл output-file. Полезно для обновления архива без изменения существующего архива, и входной архив должен быть другим файлом, чем выходной архив.
Эта опция может использоваться для создания обновленных разделенных архивов. Ее также можно использовать с -U для копирования записей из существующего архива в новый архив. См. раздел ПРИМЕРЫ ниже.
Другое применение — преобразование ZIP-файлов из одного размера разделов в другой. Например, для преобразования архива с 700-МБ CD-разделами в архив с 2-ГБ DVD-разделами можно использовать:
zip -s 2g cd-split.zip --out dvd-split.zip
что использует режим копирования. См. -U ниже. Также:
zip -s 0 split.zip --out unsplit.zip
преобразует разделенный архив в единый файл.
Режим копирования преобразует потоковые записи (с использованием дескрипторов данных, которые должны быть совместимы с большинством программ для распаковки) в обычные записи (которые должны быть совместимы со всеми программами для распаковки), за исключением случаев использования стандартного шифрования. Для архивов с зашифрованными записями zipcloak расшифрует записи и преобразует их в обычные записи.
-p
--paths
Включает относительные пути к файлам в качестве части имен файлов, хранящихся в архиве. Это значение по умолчанию. Опция -j отбрасывает пути и просто сохраняет имена файлов.
-P пароль
--password пароль
Использует пароль для шифрования записей ZIP-файла (если таковые имеются). ЭТО НЕБЕЗОПАСНО! Многие многопользовательские операционные системы предоставляют способы, с помощью которых любой пользователь может видеть текущую командную строку любого другого пользователя; даже на автономных системах всегда существует угроза подглядывания. Хранение пароля в виде обычного текста в командной строке в автоматизированном скрипте еще хуже. По возможности используйте неэхологический интерактивный запрос для ввода паролей. (И там, где безопасность действительно важна, используйте надежное шифрование, такое как Pretty Good Privacy, вместо относительно слабого стандартного шифрования, предоставляемого утилитами ZIP-файлов).
-q
--quiet
Тихий режим; отключает информационные сообщения и запросы на комментарии. (Полезно, например, в оболочечных скриптах и фоновых задачах).
-Qn
--Q-flag n
[QDOS] сохраняет информацию о файле в заголовке файла, где n определяется как:
бит 0: не добавлять заголовки для каких-либо файлов
бит 1: добавлять заголовки для всех файлов
бит 2: не ждать интерактивного нажатия клавиши при выходе
-r
--recurse-paths
Перемещается по структуре каталогов рекурсивно, например:
zip -r foo.zip foo
или более кратко
zip -r foo foo
В этом случае все файлы и каталоги в foo сохраняются в ZIP-архив с именем foo.zip, включая файлы, имена которых начинаются с ".", поскольку рекурсия не использует механизм подстановки имен файлов оболочки. Если вы хотите включить только определенный набор файлов в каталоге foo и его подкаталогах, используйте опцию -i для указания шаблона файлов, которые необходимо включить. Не следует использовать -r с именем ".*", так как это соответствует "..", что приведет к попытке упаковать родительский каталог (вероятно, не то, что предполагалось).
Можно указать несколько исходных каталогов, например:
zip -r foo foo1 foo2
что сначала упакует foo1, а затем foo2, проходя по каждому каталогу.
Обратите внимание, что, хотя подстановочные знаки для -r обычно разрешаются при рекурсивном прохождении по каталогам в файловой системе, любые подстановочные знаки -R, -x и -i применяются к внутренним именам путей архива после сканирования каталогов. Чтобы подстановочные знаки применялись к файлам в подкаталогах при рекурсивном прохождении в Unix и аналогичных системах, где оболочка выполняет подстановку подстановочных знаков, либо экранируйте все подстановочные знаки, либо заключайте все аргументы с подстановочными знаками в кавычки. Это позволит zip видеть подстановочные знаки и сопоставлять файлы в подкаталогах, используя их в качестве рекурсии.
-R
--recurse-patterns
Рекурсивно обходит структуру каталогов, начиная с текущего каталога; например:
zip -R foo "*.c"
В этом случае все файлы, соответствующие шаблону *.c в дереве, начиная с текущего каталога, будут сохранены в zip-архив с именем foo.zip. Обратите внимание, что *.c будет соответствовать файлу file.c, a/file.c и a/b/.c. Можно указать несколько шаблонов в качестве отдельных аргументов. Обратите внимание для пользователей PKZIP: эквивалентная команда:
pkzip -rP foo *.c
Шаблоны представляют собой относительные пути к файлам, как они отображаются в архиве, или будут отображаться после архивации, и могут содержать необязательные подстановочные знаки. Например, если текущий каталог — foo, а в нем есть подкаталоги foo1 и foo2, и в foo1 есть файл bar.c, то
zip -R foo/*
создаст zip-архив, содержащий foo, foo/foo1, foo/foo1/bar.c и foo/foo2.
zip -R */bar.c
создаст zip-архив, содержащий foo/foo1/bar.c. См. примечание для -r о экранировании подстановочных знаков.
-RE
--regex
[WIN32] До версии zip 3.0 сопоставление списков с использованием регулярных выражений было
включено по умолчанию на платформах Windows. Из-за путаницы, вызванной необходимостью экранирования "[" и "]" в именах, оно теперь отключено по умолчанию для Windows, поэтому "[" и "]" являются обычными символами в именах. Этот параметр снова включает сопоставление с использованием регулярных выражений.
-s splitsize
--split-size splitsize
Включает создание разделенного архива и задает размер разделов. Разделенный архив — это архив, который можно разделить на несколько файлов. По мере создания архива, если размер архива достигает указанного размера раздела, этот раздел закрывается, и открывается следующий раздел. В целом, все разделы, кроме последнего, будут иметь размер раздела, а последний будет содержать все, что осталось. Если весь архив меньше размера раздела, создается однофайловый архив.
Разделенные архивы хранятся в пронумерованных файлах. Например, если выходной архив имеет имя archive, и требуется три раздела, результирующий архив будет находиться в трех файлах: archive.z01, archive.z02 и archive.zip. Не изменяйте нумерацию этих файлов, иначе архив не будет читаться, так как они используются для определения порядка, в котором читаются разделы.
Размер раздела — это число, за которым может следовать необязательный множитель. В настоящее время число должно быть целым. Множитель может быть одним из: k (килобайты), m (мегабайты), g (гигабайты) или t (терабайты). Поскольку 64 КБ является минимальным размером раздела, числа без множителей по умолчанию считаются в мегабайтах. Например, чтобы создать разделенный архив с именем foo, содержащий содержимое каталога bar, с разделами размером 670 МБ, что может быть полезно для записи на компакт-диски, можно использовать команду:
zip -s 670m -r foo bar
В настоящее время старые разделы разделенного архива не исключаются из нового архива, но их можно исключить явно. Если возможно, размещайте входные и выходные архивы за пределами пути, который архивируется, при создании разделенных архивов.
Использование -s без -sp, как указано выше, создает все разделы, в которых выполняется запись файла foo, в данном случае в текущий каталог. Этот режим разделения обновляет разделы по мере создания архива, требуя, чтобы все разделы оставались доступными для записи, но создает разделенные архивы, которые могут быть прочитаны любой программой unzip, поддерживающей разделенные архивы. См. параметр -sp ниже, чтобы включить режим приостановки разделения, который позволяет записывать разделы непосредственно на съемные носители.
Параметр -sv можно использовать для включения подробного разделения и предоставления информации о том, как выполняется разделение. Параметр -sb можно использовать для подачи звукового сигнала, когда zip приостанавливается для ожидания следующего места назначения раздела.
Разделенные архивы нельзя обновлять, но см. параметр -O (--out), чтобы узнать, как разделенный архив можно обновлять при копировании в новый архив. Разделенный архив также можно преобразовать в архив с одним файлом, используя размер раздела, равный 0, или отрицая параметр -s:
zip -s 0 split.zip --out single.zip
Также см. параметр -U (--copy) для получения дополнительной информации об использовании режима копирования.
-sb
--split-bell
Если включено разделение и используется режим приостановки разделения, подавать звуковой сигнал, когда zip приостанавливается для каждого места назначения раздела.
-sc
--show-command
Отобразить командную строку, с которой запускается zip, после обработки и завершить работу. Новый анализатор команд переставляет аргументы, помещая все параметры и любые связанные с ними значения перед всеми аргументами, не являющимися параметрами. Это позволяет параметру появляться в любом месте командной строки, если все значения, связанные с параметром, находятся рядом с ним. Этот параметр отображает командную строку так, как ее видит zip, включая любые аргументы из среды, такие как из переменной ZIPOPT. Там, где это разрешено, параметры, указанные позже в командной строке, могут переопределять параметры, указанные ранее в командной строке.
-sf
--show-files
Отобразить файлы, над которыми будут выполняться операции, а затем завершить работу. Например, при создании нового архива, он отобразит список файлов, которые будут добавлены. Если параметр отрицается, -sf-, вывод будет осуществляться только в открытый файл журнала. Отображение на экране не рекомендуется для больших списков.
-so
--show-options
Отобразить все доступные параметры, поддерживаемые zip, в текущей системе. Поскольку эта команда считывает таблицу параметров, она должна включать все параметры. Каждая строка включает короткий параметр (если определен), длинный параметр (если определен), формат любого значения, которое идет вместе с параметром, может ли параметр быть отрицанным и краткое описание. Формат значения может быть: без значения, требуемое значение, необязательное значение, символ, числовое значение или список значений. Вывод этого параметра предназначен не для того, чтобы показывать, как использовать любой параметр, а только для того, чтобы показать, какие параметры доступны.
-sp
--split-pause
Если разделение включено с помощью -s, включить режим приостановки разделения. Это создает разделенные архивы, как и -s, но используется потоковая запись, поэтому каждый раздел может быть закрыт сразу после записи, и zip будет приостанавливать работу между каждым разделом, чтобы можно было изменить место назначения раздела или носитель.
Хотя этот режим разделения позволяет записывать разделы непосредственно на съемные носители, он использует потоковый формат архива, который может быть нечитаемым для некоторых программ распаковки. Прежде чем полагаться на разделы, созданные с помощью -sp, протестируйте разделенный архив с помощью программы распаковки, которую вы будете использовать.
Для преобразования потокового разделенного архива (созданного с помощью -sp) в стандартный архив используйте опцию --out.
-su
--show-unicode
Как -sf, но также отображает Unicode-версию пути, если она существует.
-sU
--show-just-unicode
Как -sf, но отображает только Unicode-версию пути, если она существует, в противном случае отображает стандартную версию пути.
-sv
--split-verbose
Включает различные подробные сообщения во время разделения, показывая, как выполняется разделение.
-S
--system-hidden
[MSDOS, OS/2, WIN32 и ATARI] Включает системные и скрытые файлы.
[MacOS] Включает невидимые файлы Finder, которые в противном случае игнорируются.
-t mmddyyyy
--from-date mmddyyyy
Не обрабатывайте файлы, измененные до указанной даты, где mm — месяц (00-12), dd — день месяца (01-31), а yyyy — год. Также принимается формат даты ISO 8601 yyyy-mm-dd. Например:
zip -rt 12071991 infamy foo
zip -rt 1991-12-07 infamy foo
добавит все файлы в каталоге foo и его подкаталогах, которые были в последний раз изменены 7 декабря 1991 года или позже, в zip-архив infamy.zip.
-tt mmddyyyy
--before-date mmddyyyy
Не обрабатывайте файлы, измененные после или в указанную дату, где mm — месяц (00-12), dd — день месяца (01-31), а yyyy — год. Также принимается формат даты ISO 8601 yyyy-mm-dd. Например:
zip -rtt 11301995 infamy foo
zip -rtt 1995-11-30 infamy foo
добавит все файлы в каталоге foo и его подкаталогах, которые были в последний раз изменены до 30 ноября 1995 года, в zip-архив infamy.zip.
-T
--test
Проверяет целостность нового zip-файла. Если проверка не удалась, старый zip-файл остается без изменений, и (при использовании опции -m) входные файлы не удаляются.
-TT cmd
--unzip-command cmd
Используйте команду cmd вместо 'unzip -tqq' для проверки архива при использовании опции -T. В Unix, чтобы использовать копию unzip в текущем каталоге вместо стандартной системной утилиты unzip, можно использовать:
zip archive file1 file2 -T -TT "./unzip -tqq"
В cmd {} заменяется именем временного архива, в противном случае имя архива добавляется в конец команды. Код возврата проверяется на успешность (0 в Unix).
-u
--update
Заменяет (обновляет) существующую запись в zip-архиве только в том случае, если она была изменена позднее, чем версия, уже находящаяся в zip-архиве. Например:
zip -u stuff *
добавит любые новые файлы в текущем каталоге и обновит любые файлы, которые были изменены после последнего создания/изменения zip-архива stuff.zip (обратите внимание, что zip не будет пытаться упаковать stuff.zip в себя при этом).
Обратите внимание, что опция -u без аргументов входных файлов действует как опция -f (freshen).
-U
--copy-entries
Копировать записи из одного архива в другой. Требуется опция `--out` для указания другого выходного файла, отличного от входного архива. Режим копирования является обратным режиму `-d delete`. Когда используется опция `delete` с `--out`, выбранные записи удаляются из архива, а все остальные записи копируются в новый архив, в то время как режим копирования выбирает файлы, которые будут включены в новый архив. В отличие от `-u update`, шаблоны ввода в командной строке сопоставляются только с записями в архиве, а не с файлами в файловой системе. Например:
zip inarchive "*.c" --copy --out outarchive
копирует записи с именами, заканчивающимися на `.c`, из `inarchive` в `outarchive`. Символ подстановки должен быть экранирован в некоторых системах, чтобы предотвратить подстановку имен файлов из файловой системы, которые могут не иметь отношения к записям в архиве.
Если в командной строке нет входных файлов и используется `--out`, предполагается режим копирования:
zip inarchive --out outarchive
Это полезно, например, для изменения размера разбиения. Шифрование и расшифровка записей пока не поддерживаются в режиме копирования. Используйте `zipcloak` для этого.
-UN v
--unicode v
Определяет, что `zip` должен делать с именами файлов в кодировке Unicode. `zip 3.0`, в дополнение к стандартному пути к файлу, теперь включает UTF-8-перевод пути, если путь к записи не полностью состоит из 7-битных символов ASCII. Когда запись не содержит путь в кодировке Unicode, `zip` возвращается к стандартному пути к файлу. Проблема использования стандартного пути заключается в том, что этот путь находится в локальной кодировке символов, которая использовалась при создании записи, и она может содержать символы, недействительные в кодировке символов, используемой программой распаковки. При чтении архива, если запись также содержит путь в кодировке Unicode, `zip` теперь по умолчанию использует путь в кодировке Unicode для воссоздания стандартного пути с использованием текущей локальной кодировки символов.
Эта опция может использоваться для определения того, что `zip` должен делать с этим путем, если существует несоответствие между сохраненным стандартным путем и сохраненным путем в кодировке UTF-8 (что может произойти, если стандартный путь был обновлен). Во всех случаях, если существует несоответствие, предполагается, что стандартный путь является более актуальным, и `zip` использует его. Значения для `v`:
q - выход, если пути не совпадают
w - предупреждение, продолжить с использованием стандартного пути
i - игнорировать, продолжить с использованием стандартного пути
n - без Unicode, не использовать пути в кодировке Unicode
По умолчанию используется предупреждение и продолжение.
Символы, недействительные в текущей кодировке символов, экранируются как `#Uxxxx` и `#Lxxxxxx`, где `x` — символ ASCII для шестнадцатеричной цифры. Первая используется, если для представления символа Unicode достаточно 16-битного числа, а вторая используется, если для представления кодового значения символа Unicode требуется более 16 бит. Установка `-UN` в:
e - экранирование
как в:
zip archive -sU -UN=e
принудительно экранирует все символы, которые не являются печатными 7-битными символами ASCII.
Обычно `zip` хранит UTF-8 непосредственно в поле стандартного пути в системах, где UTF-8 является текущей кодировкой символов, и хранит UTF-8 в новых дополнительных полях в противном случае. Опция
u - UTF-8
например:
zip archive dir -r -UN=UTF8
принудительно указывает zip сохранять UTF-8 в архиве в исходном формате. Обратите внимание, что сохранение UTF-8 напрямую является значением по умолчанию в Unix-системах, которые его поддерживают. Этот параметр может быть полезен в Windows, где экранированный путь слишком длинный, чтобы быть допустимым, а версия UTF-8 пути короче, но исходный UTF-8 несовместим со старыми версиями Windows.
-v
--verbose
Подробный режим или вывод диагностической информации о версии.
Обычно, при применении к реальным операциям, этот параметр включает отображение индикатора выполнения во время сжатия (см. -dd для получения дополнительной информации о точках) и запрашивает подробную диагностическую информацию об особенностях структуры zip-файла.
Однако, когда -v является единственным аргументом командной строки, выводится диагностический экран. Теперь это должно работать даже в том случае, если стандартный вывод перенаправляется в файл, что позволяет легко сохранять информацию для отправки в Info-ZIP вместе с сообщениями об ошибках. Экран версии предоставляет заголовок экрана справки с именем программы, версией и датой выпуска, некоторой информацией об основной и дистрибутивной версиях Info-ZIP и показывает информацию об целевой среде (тип и версия компилятора, версия ОС, дата компиляции и включенные необязательные функции, используемые для создания исполняемого файла zip).
-V
--VMS-portable
[VMS] Сохраняет атрибуты файлов VMS. (Файлы обрезаются до конца файла.) При распаковке архива, созданного с параметром -V, в не-VMS системе некоторые типы файлов (в частности, текстовые файлы Stream_LF и чисто двоичные файлы, такие как fixed-512) должны извлекаться в неизменном виде. Индексированные файлы и типы файлов со встроенными размерами записей (в частности, типы файлов с переменной длиной записей) скорее всего будут повреждены в других системах.
-VV
--VMS-specific
[VMS] Сохраняет атрибуты файлов VMS и все выделенные блоки в файле, включая любые данные после конца файла. Полезно для переноса файлов с ошибками между системами VMS. При распаковке архива, созданного с параметром -VV, в не-VMS системе почти все файлы будут повреждены.
-w
--VMS-versions
[VMS] Добавляет номер версии файлов к имени, включая несколько версий файлов. По умолчанию используется только последняя версия указанного файла.
-ww
--VMS-dot-versions
[VMS] Добавляет номер версии файлов к имени, включая несколько версий файлов, используя формат .nnn. По умолчанию используется только последняя версия указанного файла.
-ws
--wild-stop-dirs
Подстановочные знаки соответствуют только на уровне каталога. Обычно zip обрабатывает пути как строки, и, учитывая следующие пути:
/foo/bar/dir/file1.c
/foo/bar/file2.c
входной шаблон, такой как
/foo/bar/*
обычно будет соответствовать обоим путям, при этом * будет соответствовать dir/file1.c и file2.c. Обратите внимание, что в первом случае граница каталога (/) была пересечена при сопоставлении. При использовании -ws границы каталога не будут включены в сопоставление, что сделает подстановочные знаки локальными для определенного уровня каталога. Таким образом, при включенном -ws будет соответствовать только второй путь.
При использовании -ws используйте ** для сопоставления между границами каталогов, как * делает это обычно.
-x files
--exclude files
Явно исключите указанные файлы, например:
zip -r foo foo -x \*.o
что включит содержимое каталога foo в файл foo.zip, исключая при этом все файлы, заканчивающиеся на .o. Обратная косая черта предотвращает подстановку имен файлов оболочкой, поэтому сопоставление имен выполняется zip на всех уровнях каталогов.
Также возможно:
zip -r foo foo -_
что включит содержимое каталога foo в файл foo.zip, исключая при этом все файлы, соответствующие шаблонам в файле exclude.lst.
Длинные формы этих опций:
zip -r foo foo --exclude \*.o
и
zip -r foo foo --exclude @exclude.lst
Можно указать несколько шаблонов, например:
zip -r foo foo -x \*.o \*.c
Если между -x и шаблоном нет пробела, предполагается, что указано только одно значение (нет списка):
zip -r foo foo -x\*.o
См. -i для получения дополнительной информации о включении и исключении.
-X
--no-extra
Не сохранять дополнительные атрибуты файлов (расширенные атрибуты в OS/2, uid/gid и время файлов в Unix). Формат zip использует дополнительные поля для включения дополнительной информации для каждой записи. Некоторые дополнительные поля специфичны для определенных систем, в то время как другие применимы ко всем системам. Обычно, когда zip считывает записи из существующего архива, он считывает известные дополнительные поля, удаляет остальные и добавляет дополнительные поля, применимые к данной системе. С опцией -X zip удаляет все старые поля и включает только дополнительные поля Unicode и Zip64 (в настоящее время эти два дополнительных поля нельзя отключить).
При отрицании этой опции, -X-, включаются все дополнительные поля по умолчанию, но также копируются любые нераспознанные дополнительные поля.
-y
--symlinks
Для UNIX и VMS (V8.3 и более поздние версии) сохраняйте символические ссылки как таковые в zip-архиве, вместо сжатия и хранения файла, на который указывает ссылка. Это может предотвратить включение нескольких копий файлов в архив, когда zip рекурсивно просматривает структуру каталогов и обращается к файлам напрямую и по ссылкам.
-z
--archive-comment
Запросите многострочный комментарий для всего zip-архива. Комментарий заканчивается строкой, содержащей только точку, или условием конца файла (^D в Unix, ^Z в MSDOS, OS/2 и VMS). Комментарий можно взять из файла:
zip -z foo < foowhat
-Z cm
--compression-method cm
Установите метод сжатия по умолчанию. В настоящее время zip поддерживает в основном методы store и deflate. Метод сжатия можно установить на:
store - установка метода сжатия на store заставляет zip хранить записи без сжатия. Обычно это быстрее, чем сжимать записи, но не приводит к экономии места. Это то же самое, что и использование -0 (уровень сжатия ноль).
deflate - это метод по умолчанию для zip. Если zip определяет, что хранение лучше, чем сжатие, запись будет храниться вместо этого.
bzip2 - если поддержка bzip2 скомпилирована, этот метод сжатия также становится доступным. В настоящее время только некоторые современные программы распаковки поддерживают метод сжатия bzip2, поэтому протестируйте программу распаковки, которую вы будете использовать, прежде чем полагаться на архивы, использующие этот метод (метод сжатия 12).
Например, чтобы добавить файл bar.c в архив foo с использованием сжатия bzip2:
zip -Z bzip2 foo bar.c
Метод сжатия можно сократить:
zip -Zb foo bar.c
-#
(-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
Регулируйте скорость сжатия, используя указанную цифру #, где -0 указывает на отсутствие сжатия (хранение всех файлов), -1 указывает на самую быструю скорость сжатия (меньшее сжатие) и -9 указывает на самую медленную скорость сжатия (оптимальное сжатие, игнорирует список суффиксов). По умолчанию используется уровень сжатия -6.
Хотя работа над этим еще ведется, предполагается, что эта настройка будет контролировать скорость сжатия для всех методов сжатия. В настоящее время контроль осуществляется только для алгоритма deflate.
-!
--use-privileges
[WIN32] Используйте привилегии (если предоставлены), чтобы получить все аспекты безопасности WinNT.
-@
--names-stdin
Получайте список входных файлов из стандартного ввода. Только одно имя файла на строку.
-$
--volume-label
[MSDOS, OS/2, WIN32] Включите метку тома диска, содержащего первый файл для сжатия. Если вы хотите включить только метку тома или принудительно указать определенный диск,
используйте имя диска в качестве первого имени файла, например:
zip -$ foo a: c:bar
ПРИМЕРЫ
Самый простой пример:
zip stuff *
создает архив stuff.zip (если он не существует) и помещает все файлы в текущий каталог в него, в сжатом виде (суффикс .zip добавляется автоматически, если только имя архива не содержит точку; это позволяет явно указать другие суффиксы).
Из-за того, как оболочка Unix выполняет подстановку имен файлов, файлы, начинающиеся с ".", не включаются; чтобы включить их тоже:
zip stuff .* *
Даже это не включит какие-либо подкаталоги из текущего каталога.
Чтобы заархивировать весь каталог, используйте команду:
zip -r foo foo
создает архив foo.zip, содержащий все файлы и каталоги в каталоге foo, который находится внутри текущего каталога.
Возможно, вы захотите создать zip-архив, содержащий файлы в foo, без записи имени каталога foo. Вы можете использовать опцию -j, чтобы опустить пути, например:
zip -j foo foo/*
Если у вас не хватает места на диске, у вас может не быть достаточно места для хранения как исходного каталога, так и соответствующего сжатого zip-архива. В этом случае вы можете создавать архив по частям, используя опцию -m. Если foo содержит подкаталоги tom, dick и harry, вы можете:
zip -rm foo foo/tom
zip -rm foo foo/dick
zip -rm foo foo/harry
где первая команда создает foo.zip, а следующие две добавляют файлы в него. После выполнения каждой команды zip последний созданный архив удаляется, чтобы освободить место для следующей команды zip.
Используйте -s, чтобы установить размер фрагмента и создать фрагментированный архив. Размер указывается в виде числа, за которым необязательно следует одна из букв k (КБ), m (МБ), g (ГБ) или t (ТБ). Команда
zip -s 2g -r split.zip foo
создает разделенный архив каталога `foo` с размером каждого раздела не более 2 ГБ. Если `foo` содержит 5 ГБ данных, и эти данные хранятся в разделенном архиве без сжатия (для простоты примера), то будут созданы три раздела: `split.z01` размером 2 ГБ, `split.z02` размером 2 ГБ и `split.zip` немного больше 1 ГБ.
Опция -sp может использоваться для приостановки работы zip между разделами, чтобы можно было заменить носитель, например, но прочитайте описания и предупреждения для обеих опций -s и -sp ниже.
Хотя zip не обновляет разделенные архивы, в zip появилась новая опция -O (--output-file), которая позволяет обновлять разделенные архивы и сохранять их в новом архиве. Например:
zip inarchive.zip foo.c bar.c --out outarchive.zip
считывает архив `inarchive.zip`, даже если он разделен, добавляет файлы `foo.c` и `bar.c` и записывает полученный архив в `outarchive.zip`. Если `inarchive.zip` является разделенным, то `outarchive.zip` по умолчанию использует тот же размер разделения. Обратите внимание, что `outarchive.zip` и любые созданные с ним разделенные файлы всегда перезаписываются без предупреждения. Это может быть изменено в будущем.
СОПОСТАВЛЕНИЕ ШАБЛОНОВ
Этот раздел применим только к Unix. Ожидайте подробностей об операциях MSDOS и VMS в будущем.
Однако специальные символы подстановки \* и [] ниже применимы, по крайней мере, к MSDOS.
В Unix-оболочках (sh, csh, bash и других) обычно выполняется подстановка имен файлов (также называемая "глоббингом") для аргументов команд. Обычно специальные символы:
? соответствует любому одному символу
* соответствует любому количеству символов (включая отсутствие)
[] соответствует любому символу в указанном диапазоне внутри квадратных скобок (например, `[a-f]`, `[0-9]`).
Эта форма подстановки позволяет пользователю указать список символов в квадратных скобках, и если какой-либо из символов соответствует выражению, то соответствие считается найденным. Например:
zip archive "*.[hc]"
архивирует все файлы в текущем каталоге, заканчивающиеся на `.h` или `.c`.
Поддерживаются диапазоны символов:
zip archive "[a-f]*"
добавляет в архив все файлы, начинающиеся с "a" до "f".
Также поддерживается отрицание, когда соответствие находится на любом символе в этой позиции, которого нет в списке. Отрицание поддерживается путем добавления ! или ^ в начало списка:
zip archive "*.[!o]"
соответствует файлам, не заканчивающимся на `.o`.
В WIN32 сопоставление с [] необходимо включать с помощью опции -RE, чтобы избежать путаницы, вызванной именами, содержащими [ или ].
Когда эти символы встречаются (без экранирования обратным слешем или кавычками), оболочка ищет файлы относительно текущего пути, соответствующие шаблону, и заменяет аргумент списком соответствующих имен.
Программа zip может выполнять то же сопоставление с именами, которые находятся в архиве zip, который изменяется, или, в случае опций -x (исключить) или -i (включить), в списке файлов, с которыми необходимо выполнять операции, используя обратные слеши или кавычки, чтобы указать оболочке не выполнять расширение имен. В общем, когда zip встречает имя в списке файлов для обработки, сначала он ищет это имя в файловой системе. Если он находит его, он добавляет его в список файлов для обработки. Если он не находит его, он ищет имя в архиве zip, который изменяется (если он существует), используя символы сопоставления шаблонов, описанные выше, если они присутствуют. Для каждого соответствия он добавляет это имя в список файлов, которые необходимо обработать, если только это имя не соответствует одному из имен, указанных в опции -x, или не соответствует ни одному из имен, указанных в опции -i.
Сопоставление с образцом включает путь, поэтому такие шаблоны, как \\*.o, соответствуют именам, заканчивающимся на ".o", независимо от префикса пути. Обратите внимание, что обратный слеш должен предшествовать каждому специальному символу (т. е. ?*[]), или весь аргумент должен быть заключен в двойные кавычки ("").
В общем, используйте обратные слеши или двойные кавычки для путей, содержащих подстановочные знаки, чтобы zip выполнял сопоставление с образцом для путей файлов, и всегда для путей и строк, содержащих пробелы или подстановочные знаки для опций -i, -x, -R, -d и -U и везде, где zip необходимо обрабатывать подстановочные знаки.
ОКРУЖАЮЩАЯ СРЕДА
Следующие переменные среды считываются и используются zip, как описано ниже.
ZIPOPT
содержит параметры по умолчанию, которые будут использоваться при запуске zip. Содержимое этой переменной среды будет добавлено в командную строку сразу после команды zip.
ZIP
[Не на RISC OS и VMS] см. ZIPOPT
Zip$Options [RISC OS] см. ZIPOPT
Zip$Exts [RISC OS] содержит расширения, разделенные двоеточием, из-за которых собственные имена файлов с одним из указанных расширений будут добавлены в zip-файл с переставленными именем и расширением.
ZIP_OPTS
[VMS] см. ZIPOPT
СМ. ТАКЖЕ
compress(1), shar(1), tar(1), unzip(1), gzip(1)
СООБЩЕНИЯ ОБ ОШИБКАХ
Код выхода (или уровень ошибки) соответствует кодам выхода, определенным PKWARE, и принимает следующие значения, за исключением VMS:
0 нормальное состояние; ошибки или предупреждения не обнаружены.
2 неожиданный конец zip-файла.
3 обнаружена общая ошибка в формате zip-файла. Обработка, возможно, завершилась успешно; некоторые поврежденные zip-файлы, созданные другими архиваторами, имеют простые решения.
4 zip не смог выделить память для одного или нескольких буферов во время инициализации программы.
5 обнаружена серьезная ошибка в формате zip-файла. Обработка, вероятно, завершилась немедленно.
6 запись слишком велика для обработки (например, входные файлы больше 2 ГБ при отсутствии Zip64 или при попытке чтения существующего архива, который слишком велик) или запись слишком велика для разделения с помощью zipsplit.
7 неверный формат комментария
8 zip -T не удалась или не хватает памяти
9 пользователь преждевременно прервал работу zip с помощью Ctrl+C (или аналогичным образом)
10 zip столкнулся с ошибкой при использовании временного файла
11 ошибка чтения или поиска
12 в архиве нет файлов.
13 отсутствует или пустой ZIP-файл.
14 ошибка при записи в файл.
15 ZIP не смог создать файл для записи.
16 неверные параметры командной строки.
18 ZIP не может открыть указанный файл для чтения.
19 ZIP был скомпилирован с опциями, не поддерживаемыми в данной системе.
VMS интерпретирует стандартные возвращаемые значения Unix (или PC) как более серьезные вещи, поэтому ZIP вместо этого отображает их в статусные коды в стиле VMS. В общем, ZIP устанавливает Facility = 1955 (0x07A3), Code = 2 * Unix_status и соответствующий уровень Severity (как указано в ziperr.h). Более подробная информация приведена в документации, специфичной для VMS. См. [.vms]NOTES.TXT и [.vms]vms_msg_gen.c.
ОШИБКИ
zip 3.0 несовместим с PKUNZIP 1.10. Используйте zip 1.1 для создания ZIP-файлов, которые можно извлечь с помощью PKUNZIP 1.10.
ZIP-файлы, созданные zip 3.0, не должны обновляться zip 1.1 или PKZIP 1.10, если они содержат зашифрованные элементы или были созданы в конвейере или на устройстве, не поддерживающем произвольный доступ. Старые версии zip или PKZIP создадут архив с неверным форматом. Старые версии могут просмотреть содержимое ZIP-файла, но не смогут его извлечь (из-за нового алгоритма сжатия). Если вы не используете шифрование и используете обычные дисковые файлы, вам не нужно беспокоиться об этой проблеме.
В VMS не все нетипичные форматы файлов обрабатываются должным образом. Ожидается, что только ZIP-файлы в формате stream-LF будут работать с zip. Другие можно преобразовать с помощью программы BILF, разработанной Рахулом Дхеси. Эта версия zip обрабатывает некоторые преобразования внутренне. При использовании Kermit для передачи ZIP-файлов из VMS в MSDOS введите на VMS «set file type block». При передаче из MSDOS в VMS введите на VMS «set file type fixed». В обоих случаях введите на MSDOS «set file type binary».
В некоторых старых версиях VMS zip может зависать для спецификаций файлов, использующих синтаксис DECnet foo::*.
В OS/2 zip не может сопоставлять некоторые имена, такие как имена, содержащие восклицательный знак или знак решетки. Это ошибка в самой OS/2: 32-битные DosFindFirst/Next не находят такие имена. Другие программы, такие как GNU tar, также подвержены этой ошибке.
В OS/2 количество расширенных атрибутов, отображаемых командой DIR, (для совместимости) представляет собой значение, возвращаемое 16-битной версией DosQueryPathInfo(). В противном случае OS/2 1.3 и 2.0 отображали бы разные размеры EA при отображении файла с помощью DIR. Однако структура, возвращаемая 32-битным DosQueryPathInfo(), немного отличается: она использует дополнительные байты заполнения и указатели связей (это связанный список), чтобы все поля находились на границе 4 байт для обеспечения совместимости с будущими версиями OS/2. Поэтому значение, отображаемое zip (который использует этот 32-битный формат), отличается от значения, отображаемого DIR. Zip хранит 32-битный формат для обеспечения совместимости, даже если 16-битная версия, скомпилированная с помощью MS-C и работающая в OS/2 1.3, также отображает размер в 32-битном формате.
АВТОРЫ
Copyright (C) 1997-2008 Info-ZIP.
В настоящее время распространяется под лицензией Info-ZIP.
Авторское право (C) 1990-1997 Марк Адлер, Ричард Б. Уэйлс, Жан-Луп Гейли, Онно ван дер Линден, Кай Уве Роммель, Игорь Мандриченко, Джон Буш и Пол Киенитц.
Исходное авторское право:
Разрешается любому частному лицу или учреждению использовать, копировать или распространять это программное обеспечение, при условии, что все исходные файлы будут включены, что оно не будет продаваться с целью получения прибыли, и что это уведомление об авторском праве будет сохранено.
ПОДОБНО ВСЕМУ ДРУГОМУ, ЧТО ПРЕДОСТАВЛЯЕТСЯ БЕСПЛАТНО, ZIP И ЕГО АССОЦИИРОВАННЫЕ УТИЛИТЫ ПРЕДОСТАВЛЯЮТСЯ «КАК ЕСТЬ» И БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. В НИКАКОМ СЛУЧАЕ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ УЩЕРБЫ, ВОЗНИКШИЕ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Пожалуйста, отправляйте сообщения об ошибках и комментарии на веб-страницу: www.info-zip.org. Для сообщений об ошибках пожалуйста, укажите версию zip (см. zip -h), параметры компиляции (см. zip -v), используемую машину и операционную систему, а также как можно больше дополнительной информации.
БЛАГОДАРНОСТИ
Благодарим Р. П. Бэрна за его программу Shrink.Pas, которая послужила вдохновением для этого проекта, и из которой был позаимствован алгоритм сжатия; Фила Катца за то, что он предоставил в общественное достояние формат zip-файла, формат сжатия и расширение имени файла .ZIP, а также за то, что он принял незначительные изменения в формате файла; Стива Бурга за разъяснения по формату deflate; Харухико Окумуру и Леонида Брухиса за предоставление некоторых полезных идей для алгоритма сжатия; Кейта Петерсена, Рича Уэйлса, Хантера Готли и Марка Адлера за предоставление списка рассылки и FTP-сайта для использования группой Info-ZIP; и, самое главное, самой группе Info-ZIP (указанной в файле infozip.who), без чьих неустанных усилий по тестированию и исправлению ошибок портативная версия zip была бы невозможна. Наконец, мы должны поблагодарить (или обвинить) первого модератора Info-ZIP, Дэвида Киршбаума, за то, что он втянул нас в это. Страница руководства была переписана для Unix Р. П. К. Роджерсом и обновлена Э. Гордоном для zip 3.0.