home *** CD-ROM | disk | FTP | other *** search
-
- ZIP(1L) MISC. REFERENCE MANUAL PAGES ZIP(1L)
-
- NAME
- zip, zipcloak, zipnote, zipsplit - package and compress
- (archive) files
-
- SYNOPSIS
- zip [-cdeEfghijklLmoqrTuwyz@] [-b path] [-n suffixes]
- [-t mmddyy] [-x list] [ zipfile [ file1 file2 ...]]
-
- zipcloak [-dhL] [-b path] zipfile
-
- zipnote [-hwL] [-b path] zipfile
-
- zipsplit [-hitL] [-b path] zipfile
-
- DESCRIPTION
- zip is a compression and file packaging utility for Unix,
- VMS, MSDOS, OS/2, Windows NT, Minix, Atari and Macintosh.
- It is analogous to a combination of the UNIX commands tar(1)
- and compress(1) and is compatible with PKZIP (Phil Katz's
- ZIP for MSDOS systems).
-
- A companion program (unzip(1L)), unpacks zip archives. The
- zip and unzip(1L) programs can work with archives produced
- by PKZIP, and PKZIP and PKUNZIP can work with archives pro-
- duced by zip. zip version 1.9 is compatible with PKZIP
- 1.93a. Note that PKUNZIP 1.10 cannot extract files produced
- by PKZIP 1.93a or zip 1.9. You must use PKUNZIP 1.93a or
- unzip 5.0 (or later versions) to extract them.
-
- For a brief help on zip and unzip, run each without specify-
- ing any parameters on the command line.
-
- The program is useful for packaging a set of files for dis-
- tribution; for archiving files; and for saving disk space by
- temporarily compressing unused files or directories.
-
- The zip program puts one or more compressed files into a
- single zip archive, along with information about the files
- (name, path, date, time of last modification, protection,
- and check information to verify file integrity). An entire
- directory structure can be packed into a zip archive with a
- single command. Compression ratios of 2:1 to 3:1 are common
- for text files. zip has one compression method (deflation)
- and can also store files without compression. zip automati-
- cally chooses the better of the two for each file to be
- compressed.
-
- When given the name of an existing zip archive, zip will
- replace identically named entries in the zip archive or add
- entries for new names. For example, if foo.zip exists and
- contains foo/file1 and foo/file2, and the directory foo con-
- tains the files foo/file1 and foo/file3, then:
-
- zip -r foo foo
-
- will replace foo/file1 in foo.zip and add foo/file3 to
- foo.zip. After this, foo.zip contains foo/file1, foo/file2,
- and foo/file3, with foo/file2 unchanged from before.
-
- If the file list is specified as -@, zip takes the list of
- input files from standard input. Under UNIX, this option
- can be used to powerful effect in conjunction with the
- find(1) command. For example, to archive all the C source
- files in the current directory and its subdirectories:
-
- find . -name "*.[ch]" -print | zip source -@
-
- (note that the pattern must be quoted to keep the shell from
- expanding it). zip will also accept a single dash ("-") as
- the zip file name, in which case it will write the zip file
- to standard output, allowing the output to be piped to
- another program. For example:
-
- zip -r - . | dd of=/dev/nrst0 obs=16k
-
- would write the zip output directly to a tape with the
- specified block size for the purpose of backing up the
- current directory.
-
- zip also accepts a single dash ("-") as the name of a file
- to be compressed, in which case it will read the file from
- standard input, allowing zip to take input from another pro-
- gram. For example:
-
- tar cf - . | zip backup -
-
- would compress the output of the tar command for the purpose
- of backing up the current directory. This generally produces
- better compression than the previous example using the -r
- option, because zip can take advantage of redundancy between
- files. The backup can be restored using the command
-
- unzip -p backup | tar xf -
-
- When no zip file name is given and stdout is not a terminal,
- zip acts as a filter, compressing standard input to standard
- output. For example,
-
- tar cf - . | zip | dd of=/dev/nrst0 obs=16k
-
- is equivalent to
-
- tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k
-
- zip archives created in this manner can be extracted with
- the program funzip which is provided in the unzip package.
- For example:
-
- dd if=/dev/nrst0 ibs=16k | funzip | tar xvf -
-
- When changing an existing zip archive, zip will write a tem-
- porary file with the new contents, and only replace the old
- one when the process of creating the new version has been
- completed without error.
-
- OPTIONS
- -b path
- Use the specified path for the temporary zip archive.
- For example:
-
- zip -b /tmp stuff *
-
- will put the temporary zip archive in the directory
- /tmp, copying over stuff.zip to the current directory
- when done. This option is only useful when updating an
- existing archive, and the file system containing this
- old archive does not have enough space to hold both old
- and new archive at the same time.
-
- -c Add one-line comments for each file. File operations
- (adding, updating) are done first, and the user is then
- prompted for a one-line comment for each file. Enter
- the comment followed by return, or just return for no
- comment.
-
- -d Remove (delete) entries from a zip archive. For exam-
- ple:
-
- zip -d foo foo/tom/junk foo/harry/\* \*.o
-
- will remove the entry foo/tom/junk, all of the files
- that start with foo/harry/, and all of the files that
- end with .o (in any path). Note that shell pathname
- expansion has been inhibited with backslashes, so that
- zip can see the asterisks, enabling zip to match on the
- contents of the zip archive instead of the contents of
- the current directory.
-
- Under MSDOS, -d is case sensitive when it matches names
- in the zip archive. This requires that file names be
- entered in upper case if they were zipped by PKZIP on
- an MSDOS system.
-
- -e Encrypt the contents of the zip archive using a pass-
- word which is entered on the terminal in response to a
- prompt (this will not be echoed; if standard error is
- not a tty, zip will exit with an error).
-
- -ee Encrypt contents, prompting for the password twice,
- checking that the two entries are identical before
- using the password.
-
- -f Replace (freshen) an existing entry in the zip archive
- only if it has been modified more recently than the
- version already in the zip archive; unlike the update
- option (-u) this will not add files that are not
- already in the zip archive. For example:
-
- zip -f foo
-
- This command should be run from the same directory from
- which the original zip command was run, since paths
- stored in zip archives are always relative.
-
- -g Grow (append to) the specified zip archive, instead of
- creating a new one. If this operation fails, zip
- attempts to restore the archive to its original state.
- If the restoration fails, the archive might become cor-
- rupted.
-
- -h Display the zip help information (this also appears if
- zip is run with no arguments).
-
- -j Store just the name of a saved file (junk the path). By
- default, zip will store the full path (relative to the
- current path).
-
- -k Attempt to convert the names and paths to conform to
- MSDOS, store only the MSDOS attribute (just the user
- write attribute from UNIX), and mark the entry as made
- under MSDOS (even though it was not); for compatibility
- with PKUNZIP under MSDOS.
-
- -l Translate the Unix end-of-line character LF into the
- MSDOS convention CR LF. This option should not be used
- on binary files. This option can be used on Unix if
- the zip file is intended for PKUNZIP under MSDOS. If
- the input files already contain CR LF, this option adds
- an extra CR. This ensure that unzip -a on Unix will get
- back an exact copy of the original file, to undo the
- effect of zip -l.
-
- -ll Translate the MSDOS end-of-line CR LF into Unix LF.
- This option should not be used on binary files. This
- option can be used on MSDOS if the zip file is intended
- for unzip under Unix.
-
- -L Display the zip license.
-
- -m Move the specified files into the zip archive; actu-
- ally, this deletes the target directories/files after
- making the specified zip archive. If a directory
- becomes empty after removal of the files, the directory
- is also removed. No deletions are done until zip has
- created the archive without error. This is useful for
- conserving disk space, but is potentially dangerous and
- should be used with care.
-
- -n suffixes
- Do not attempt to compress files named with the given
- suffixes. Such files are simply stored (0% compression)
- in the output zip file, so that zip doesn't waste its
- time trying to compress them. The suffixes are
- separated by either colons or semicolons. For example:
-
- zip -rn .Z:.zip:.tiff:.gif:.snd foo foo
-
- will copy everything from foo into foo.zip, but will
- store any files that end in .Z, .zip, .tiff, .gif, or
- .snd without trying to compress them (image and sound
- files often have their own specialized compression
- methods). By default, zip does not compress files with
- extensions in the list .Z:.zip:.zoo:.arc:.lzh:.arj.
- Such files are stored directly in the output archive.
- The environment variable ZIPOPT can be used to change
- the default options. For example under Unix with csh:
-
- setenv ZIPOPT "-n .gif:.zip"
-
- (The variable ZIPOPT can be used for any option and can
- include several options.) To attempt compression on all
- files, use:
-
- zip -n : foo
-
- The maximum compression option -9 also attempts
- compression on all files regardless of extension.
-
- -o Set the "last modified" time of the zip archive to the
- latest (oldest) "last modified" time found among the
- entries in the zip archive. This can be used without
- any other operations, if desired. For example:
-
- zip -o foo
-
- will change the last modified time of foo.zip to the
- latest time of the entries in foo.zip.
-
- -q Quiet mode; eliminate informational messages and com-
- ment prompts. (useful, for example, in shell scripts
- and background tasks).
-
- -r Travel the directory structure recursively; for exam-
- ple:
-
- zip -r foo foo
-
- In this case, all the files and directories in foo are
- saved in a zip archive named foo.zip, including files
- with named starting with ".", since the recursion does
- not use the shell's file-name substitution mechanism.
- You should not use -r with the name ".*", since that
- matches ".." which will attempt to zip up the parent
- directory (probably not what was intended).
-
- -t mmddyy
- Do not operate on files modified prior to the specified
- date, where mm is the month (0-12), dd is the day of
- the month (1-31), and yy are the last two digits of the
- year. For example:
-
- zip -rt 120791 infamy foo
-
- will add all the files in foo and its subdirectories
- that were last modified on or after 7 December 1991, to
- the zip archive infamy.zip.
-
- -T Test the integrity of the new zip file. If the check
- fails, the old zip file is unchanged and (with the -m
- option) not input files are removed.
-
- -u Replace (update) an existing entry in the zip archive
- only if it has been modified more recently than the
- version already in the zip archive. For example:
-
- zip -u stuff *
-
- will add any new files in the current directory, and
- update any files which have been modified since the zip
- archive stuff.zip was last created/modified (note that
- zip will not try to pack stuff.zip into itself when you
- do this).
-
- Note that the -u option with no arguments acts like the
- -f (freshen) option.
-
- -w Append the version number of the files to the name,
- including multiple versions of files. (VMS only;
- default: use only the most recent version of a speci-
- fied file).
-
- -x files
- Explicitly exclude the specified files, as in:
-
- zip -r foo foo -x \*.o
-
- which will include the contents of foo in foo.zip while
- excluding all the files that end in .o. The backslash
- causes zip to match file names that were found when foo
- was searched.
-
- -y Store symbolic links as such in the zip archive,
- instead of compressing and storing the file referred to
- by the link (UNIX only).
-
- -z Prompt for a multi-line comment for the entire zip
- archive. The comment is ended by a line containing
- just a period, or an end of file condition (^D on UNIX,
- ^Z on MSDOS, OS/2, and VAX/VMS). The comment can be
- taken from a file:
-
- zip -z foo < foowhat
-
- -# Regulate the speed of compression using the specified
- digit #, where -0 indicates no compression (store all
- files), -1 indicates the fastest compression method
- (less compression) and -9 indicates the slowest
- compression method (optimal compression, ignores the
- suffix list). The default compression level is -5.
-
- -@ Take the list of input files from standard input.
-
- EXAMPLES
- The simplest example:
-
- zip stuff *
-
- creates the archive stuff.zip (assuming it does not exist)
- and puts all the files in the current directory in it, in
- compressed form (the .zip suffix is added automatically,
- unless that archive name given contains a dot already; this
- allows the explicit specification of other suffixes).
-
- Because of the way the shell does filename substitution,
- files starting with "." are not included; to include these
- as well:
-
- zip stuff .* *
-
- Even this will not include any subdirectories from the
- current directory.
-
- To zip up an entire directory, the command:
-
- zip -r foo foo
-
- creates the archive foo.zip, containing all the files and
- directories in the directory foo that is contained within
- the current directory.
-
- You may want to make a zip archive that contains the files
- in foo, without recording the directory name, foo. You can
- use the -j option to leave off the paths, as in:
-
- zip -j foo foo/*
-
- If you are short on disk space, you might not have enough
- room to hold both the original directory and the correspond-
- ing compressed zip archive. In this case, you can create
- the archive in steps using the -m option. If foo contains
- the subdirectories tom, dick, and harry, you can:
-
- zip -rm foo foo/tom
- zip -rm foo foo/dick
- zip -rm foo foo/harry
-
- where the first command creates foo.zip, and the next two
- add to it. At the completion of each zip command, the last
- created archive is deleted, making room for the next zip
- command to function.
-
- PATTERN MATCHING
- This section applies only to UNIX. Watch this space for
- details on MSDOS and VMS operation.
-
- The UNIX shells (sh(1) and csh(1)) do filename substitution
- on command arguments. The special characters are:
-
- ? match any single character
-
- * match any number of characters (including none)
-
- [] match any character in the range indicated within the
- brackets (example: [a-f], [0-9]).
-
- When these characters are encountered (without being escaped
- with a backslash or quotes), the shell will look for files
- relative to the current path that match the pattern, and
- replace the argument with a list of the names that matched.
-
- The zip program can do the same matching on names that are
- in the zip archive being modified or, in the case of the -x
- (exclude) option, on the list of files to be operated on, by
- using backslashes or quotes to tell the shell not to do the
- name expansion. In general, when zip encounters a name in
- the list of files to do, it first looks for the name in the
- file system. If it finds it, it then adds it to the list of
- files to do. If it does not find it, it looks for the name
- in the zip archive being modified (if it exists), using the
- pattern matching characters described above, if present.
- For each match, it will add that name to the list of files
- to be processed. File names following the -x (exclude)
- option are removed from the processing list instead of being
- added.
-
- The pattern matching includes the path, and so patterns like
- \*.o match names that end in ".o", no matter what the path
- prefix is. Note that the backslash must precede every spe-
- cial character (i.e. ?*[]), or the entire argument must be
- enclosed in double quotes ("").
-
- In general, use backslash to make zip do the pattern match-
- ing with the -f (freshen) and -d (delete) options, and some-
- times after the -x (exclude) option when used with an
- appropriate operation (add, -u, -f, or -d). The zip program
- will never use pattern matching to search the file system.
- If it has recursively travelled a directory, all files (and
- all directories) found there are fair game.
-
- SEE ALSO
- compress(1), shar(1L), tar(1), unzip(1L)
-
- BUGS
- zip 1.9 is not compatible with PKUNZIP 1.10. Use zip 1.1 to
- produce zip files which can be extracted by PKUNZIP 1.10.
-
- zip files produced by zip 1.9 must not be updated by zip 1.1
- or PKZIP 1.10 or PKZIP 1.93a, if they contain encrypted
- members, or if they have been produced in a pipe or on a non
- seekable device. The old versions of zip or PKZIP would
- create an archive with an incorrect format. The old ver-
- sions can list the contents of the zip file but cannot
- extract it anyway (because of the new compression algo-
- rithm). If you do not use encryption and use regular disk
- files, you do not have to care about this problem.
-
- zip 1.9 is compatible with PKZIP 1.93a, except when two
- features are used: encryption or zip file created in a pipe
- or on a non seekable device. PKZIP versions above 2.0 will
- support such files, and unzip 5.0 already supports them.
-
- Without -y when zip must compress a symbolic link to an non
- existing file, it only displays a warning "name not
- matched". A better warning should be given.
-
- Under VMS, not all of the odd file formats are treated prop-
- erly. Only stream-LF format zip files are expected to work
- with zip. Others can be converted using Rahul Dhesi's BILF
- program. This version of zip handles some of the conversion
- internally. When using Kermit to transfer zip files from
- Vax to MSDOS, type "set file type block" on the Vax. When
- transfering from MSDOS to Vax, type "set file type fixed" on
- the Vax. In both cases, type "set file type binary" on
- MSDOS.
-
- Under VMS, zip hangs for file specification that uses DECnet
- syntax foo::*.*.
-
- On OS/2, zip cannot match some names, such as those includ-
- ing an exclamation mark or a hash sign. This is a bug in
- OS/2 itself: the 32-bit DosFindFirst/Next don't find such
- names. Other programs such as GNU tar are also affected by
- this bug.
-
- Under OS/2, the amount of External Attributes displayed by
- DIR is (for compatibility) the amount returned by the 16-bit
- version of DosQueryPathInfo(). Otherwise OS/2 1.3 and 2.0
- would report different EA sizes when DIRing a file. How-
- ever, the structure layout returned by the 32-bit
- DosQueryPathInfo() is a bit different, it uses extra padding
- bytes and link pointers (it's a linked list) to have all
- fields on 4-byte boundaries for portability to future RISC
- OS/2 versions. Therefore the value reported by zip (which
- uses this 32-bit-mode size) differs from that reported by
- DIR. zip stores the 32-bit format for portability, even the
- 16-bit MS-C-compiled version running on OS/2 1.3, so even
- this one shows the 32-bit-mode size.
-
- AUTHORS
- Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, Jean-
- loup Gailly, Kai Uwe Rommel and Igor Mandrichenko. Permis-
- sion is granted to any individual or institution to use,
- copy, or redistribute this software so long as all of the
- original files are included unmodified, that it is not sold
- for profit, and that this copyright notice is retained.
-
- LIKE ANYTHING ELSE THAT'S FREE, ZIP AND ITS ASSOCIATED UTIL-
- ITIES ARE PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY
- KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE
- COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES RESULTING FROM
- THE USE OF THIS SOFTWARE.
-
- Please send bug reports and comments to:
- zip-bugs@wkuvx1.bitnet. For bug reports, please include the
- version of zip, the make options used to compile it, the
- machine and operating system in use, and as much additional
- information as possible.
-
- ACKNOWLEDGEMENTS
- Thanks to R. P. Byrne for his Shrink.Pas program, which
- inspired this project, and from which the shrink algorithm
- was stolen; to Phil Katz for placing in the public domain
- the zip file format, compression format, and .ZIP filename
- extension, and for accepting minor changes to the file for-
- mat; to Steve Burg for clarifications on the deflate format;
- to Keith Petersen, Rich Wales, Hunter Goatley and Mark Adler
- for providing a mailing list and ftp site for the INFO-ZIP
- group to use; and most importantly, to the INFO-ZIP group
- itself (listed in the file infozip.who) without whose tire-
- less testing and bug-fixing efforts a portable zip would not
- have been possible. Finally we should thank (blame) the
- first INFO-ZIP moderator, David Kirschbaum, for getting us
- into this mess in the first place. The manual page was
- rewritten for UNIX by R. P. C. Rodgers.
-