2027 lines
95 KiB
Text
2027 lines
95 KiB
Text
ZIP(1L) ZIP(1L)
|
|
|
|
NAME
|
|
zip - package and compress (archive) files
|
|
|
|
SYNOPSIS
|
|
zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path]
|
|
[-n suffixes] [-t date] [-tt date] [zipfile [file ...]] [-xi list]
|
|
|
|
zipcloak (see separate man page)
|
|
|
|
zipnote (see separate man page)
|
|
|
|
zipsplit (see separate man page)
|
|
|
|
Note: Command line processing in zip has been changed to support long
|
|
options and handle all options and arguments more consistently. Some
|
|
old command lines that depend on command line inconsistencies may no
|
|
longer work.
|
|
|
|
DESCRIPTION
|
|
zip is a compression and file packaging utility for Unix, VMS, MSDOS,
|
|
OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and Acorn RISC
|
|
OS. 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 (supporting
|
|
most PKZIP features up to PKZIP version 4.6), and PKZIP and PKUNZIP can
|
|
work with archives produced by zip (with some exceptions, notably
|
|
streamed archives, but recent changes in the zip file standard may
|
|
facilitate better compatibility). zip version 3.0 is compatible with
|
|
PKZIP 2.04 and also supports the Zip64 extensions of PKZIP 4.5 which
|
|
allow archives as well as files to exceed the previous 2 GB limit (4 GB
|
|
in some cases). zip also now supports bzip2 compression if the bzip2
|
|
library is included when zip is compiled. Note that PKUNZIP 1.10 can-
|
|
not extract files produced by PKZIP 2.04 or zip 3.0. You must use PKUN-
|
|
ZIP 2.04g or unzip 5.0p1 (or later versions) to extract them.
|
|
|
|
See the EXAMPLES section at the bottom of this page for examples of
|
|
some typical uses of zip.
|
|
|
|
Large Archives and Zip64. zip automatically uses the Zip64 extensions
|
|
when files larger than 4 GB are added to an archive, an archive con-
|
|
taining Zip64 entries is updated (if the resulting archive still needs
|
|
Zip64), the size of the archive will exceed 4 GB, or when the number of
|
|
entries in the archive will exceed about 64K. Zip64 is also used for
|
|
archives streamed from standard input as the size of such archives are
|
|
not known in advance, but the option -fz- can be used to force zip to
|
|
create PKZIP 2 compatible archives (as long as Zip64 extensions are not
|
|
needed). You must use a PKZIP 4.5 compatible unzip, such as unzip 6.0
|
|
or later, to extract files using the Zip64 extensions.
|
|
|
|
In addition, streamed archives, entries encrypted with standard encryp-
|
|
tion, or split archives created with the pause option may not be com-
|
|
patible with PKZIP as data descriptors are used and PKZIP at the time
|
|
of this writing does not support data descriptors (but recent changes
|
|
in the PKWare published zip standard now include some support for the
|
|
data descriptor format zip uses).
|
|
|
|
Mac OS X. Though previous Mac versions had their own zip port, zip
|
|
supports Mac OS X as part of the Unix port and most Unix features
|
|
apply. References to "MacOS" below generally refer to MacOS versions
|
|
older than OS X. Support for some Mac OS features in the Unix Mac OS X
|
|
port, such as resource forks, is expected in the next zip release.
|
|
|
|
For a brief help on zip and unzip, run each without specifying any
|
|
parameters on the command line.
|
|
|
|
USE
|
|
The program is useful for packaging a set of files for distribution;
|
|
for archiving files; and for saving disk space by temporarily compress-
|
|
ing 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. (If bzip2 support is added,
|
|
zip can also compress using bzip2 compression, but such entries require
|
|
a reasonably modern unzip to decompress. When bzip2 compression is
|
|
selected, it replaces deflation as the default method.) zip automati-
|
|
cally chooses the better of the two (deflation or store or, if bzip2 is
|
|
selected, bzip2 or store) for each file to be compressed.
|
|
|
|
Command format. The basic command format is
|
|
|
|
zip options archive inpath inpath ...
|
|
|
|
where archive is a new or existing zip archive and inpath is a direc-
|
|
tory or file path optionally including wildcards. When given the name
|
|
of an existing zip archive, zip will replace identically named entries
|
|
in the zip archive (matching the relative names as stored in the
|
|
archive) or add entries for new names. For example, if foo.zip exists
|
|
and contains foo/file1 and foo/file2, and the directory foo contains
|
|
the files foo/file1 and foo/file3, then:
|
|
|
|
zip -r foo.zip foo
|
|
|
|
or more concisely
|
|
|
|
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.
|
|
|
|
So if before the zip command is executed foo.zip has:
|
|
|
|
foo/file1 foo/file2
|
|
|
|
and directory foo has:
|
|
|
|
file1 file3
|
|
|
|
then foo.zip will have:
|
|
|
|
foo/file1 foo/file2 foo/file3
|
|
|
|
where foo/file1 is replaced and foo/file3 is new.
|
|
|
|
-@ file lists. If a file list is specified as -@ [Not on MacOS], zip
|
|
takes the list of input files from standard input instead of from the
|
|
command line. For example,
|
|
|
|
zip -@ foo
|
|
|
|
will store the files listed one per line on stdin in foo.zip.
|
|
|
|
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).
|
|
|
|
Streaming input and output. zip will also accept a single dash ("-")
|
|
as the zip file name, in which case it will write the zip file to stan-
|
|
dard 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 com-
|
|
pressed, in which case it will read the file from standard input,
|
|
allowing zip to take input from another program. 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 exam-
|
|
ple,
|
|
|
|
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, or by gunzip which is
|
|
provided in the gzip package (but some gunzip may not support this if
|
|
zip used the Zip64 extensions). For example:
|
|
|
|
dd if=/dev/nrst0 ibs=16k | funzip | tar xvf -
|
|
|
|
The stream can also be saved to a file and unzip used.
|
|
|
|
If Zip64 support for large files and archives is enabled and zip is
|
|
used as a filter, zip creates a Zip64 archive that requires a PKZIP 4.5
|
|
or later compatible unzip to read it. This is to avoid amgibuities in
|
|
the zip file structure as defined in the current zip standard (PKWARE
|
|
AppNote) where the decision to use Zip64 needs to be made before data
|
|
is written for the entry, but for a stream the size of the data is not
|
|
known at that point. If the data is known to be smaller than 4 GB, the
|
|
option -fz- can be used to prevent use of Zip64, but zip will exit with
|
|
an error if Zip64 was in fact needed. zip 3 and unzip 6 and later can
|
|
read archives with Zip64 entries. Also, zip removes the Zip64 exten-
|
|
sions if not needed when archive entries are copied (see the -U
|
|
(--copy) option).
|
|
|
|
When directing the output to another file, note that all options should
|
|
be before the redirection including -x. For example:
|
|
|
|
zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile
|
|
|
|
Zip files. When changing an existing zip archive, zip will write a
|
|
temporary file with the new contents, and only replace the old one when
|
|
the process of creating the new version has been completed without
|
|
error.
|
|
|
|
If the name of the zip archive does not contain an extension, the
|
|
extension .zip is added. If the name already contains an extension
|
|
other than .zip, the existing extension is kept unchanged. However,
|
|
split archives (archives split over multiple files) require the .zip
|
|
extension on the last split.
|
|
|
|
Scanning and reading files. When zip starts, it scans for files to
|
|
process (if needed). If this scan takes longer than about 5 seconds,
|
|
zip will display a "Scanning files" message and start displaying
|
|
progress dots every 2 seconds or every so many entries processed,
|
|
whichever takes longer. If there is more than 2 seconds between dots
|
|
it could indicate that finding each file is taking time and could mean
|
|
a slow network connection for example. (Actually the initial file scan
|
|
is a two-step process where the directory scan is followed by a sort
|
|
and these two steps are separated with a space in the dots. If updat-
|
|
ing an existing archive, a space also appears between the existing file
|
|
scan and the new file scan.) The scanning files dots are not con-
|
|
trolled by the -ds dot size option, but the dots are turned off by the
|
|
-q quiet option. The -sf show files option can be used to scan for
|
|
files and get the list of files scanned without actually processing
|
|
them.
|
|
|
|
If zip is not able to read a file, it issues a warning but continues.
|
|
See the -MM option below for more on how zip handles patterns that are
|
|
not matched and files that are not readable. If some files were
|
|
skipped, a warning is issued at the end of the zip operation noting how
|
|
many files were read and how many skipped.
|
|
|
|
Command modes. zip now supports two distinct types of command modes,
|
|
external and internal. The external modes (add, update, and freshen)
|
|
read files from the file system (as well as from an existing archive)
|
|
while the internal modes (delete and copy) operate exclusively on
|
|
entries in an existing archive.
|
|
|
|
add
|
|
Update existing entries and add new files. If the archive does
|
|
not exist create it. This is the default mode.
|
|
|
|
update (-u)
|
|
Update existing entries if newer on the file system and add new
|
|
files. If the archive does not exist issue warning then create
|
|
a new archive.
|
|
|
|
freshen (-f)
|
|
Update existing entries of an archive if newer on the file sys-
|
|
tem. Does not add new files to the archive.
|
|
|
|
delete (-d)
|
|
Select entries in an existing archive and delete them.
|
|
|
|
copy (-U)
|
|
Select entries in an existing archive and copy them to a new
|
|
archive. This new mode is similar to update but command line
|
|
patterns select entries in the existing archive rather than
|
|
files from the file system and it uses the --out option to write
|
|
the resulting archive to a new file rather than update the
|
|
existing archive, leaving the original archive unchanged.
|
|
|
|
The new File Sync option (-FS) is also considered a new mode, though it
|
|
is similar to update. This mode synchronizes the archive with the
|
|
files on the OS, only replacing files in the archive if the file time
|
|
or size of the OS file is different, adding new files, and deleting
|
|
entries from the archive where there is no matching file. As this mode
|
|
can delete entries from the archive, consider making a backup copy of
|
|
the archive.
|
|
|
|
Also see -DF for creating difference archives.
|
|
|
|
See each option description below for details and the EXAMPLES section
|
|
below for examples.
|
|
|
|
Split archives. zip version 3.0 and later can create split archives.
|
|
A split archive is a standard zip archive split over multiple files.
|
|
(Note that split archives are not just archives split in to pieces, as
|
|
the offsets of entries are now based on the start of each split. Con-
|
|
catenating the pieces together will invalidate these offsets, but unzip
|
|
can usually deal with it. zip will usually refuse to process such a
|
|
spliced archive unless the -FF fix option is used to fix the offsets.)
|
|
|
|
One use of split archives is storing a large archive on multiple remov-
|
|
able media. For a split archive with 20 split files the files are typ-
|
|
ically named (replace ARCHIVE with the name of your archive)
|
|
ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Note that the
|
|
last file is the .zip file. In contrast, spanned archives are the
|
|
original multi-disk archive generally requiring floppy disks and using
|
|
volume labels to store disk numbers. zip supports split archives but
|
|
not spanned archives, though a procedure exists for converting split
|
|
archives of the right size to spanned archives. The reverse is also
|
|
true, where each file of a spanned archive can be copied in order to
|
|
files with the above names to create a split archive.
|
|
|
|
Use -s to set the split size and create a split archive. The size is
|
|
given as a number followed optionally by one of k (kB), m (MB), g (GB),
|
|
or t (TB) (the default is m). The -sp option can be used to pause zip
|
|
between splits to allow changing removable media, for example, but read
|
|
the descriptions and warnings for both -s and -sp below.
|
|
|
|
Though zip does not update split archives, zip provides the new option
|
|
-O (--output-file or --out) to allow split archives to be updated and
|
|
saved in a new archive. For example,
|
|
|
|
zip inarchive.zip foo.c bar.c --out outarchive.zip
|
|
|
|
reads archive inarchive.zip, even if split, adds the files foo.c and
|
|
bar.c, and writes the resulting archive to outarchive.zip. If inar-
|
|
chive.zip is split then outarchive.zip defaults to the same split size.
|
|
Be aware that if outarchive.zip and any split files that are created
|
|
with it already exist, these are always overwritten as needed without
|
|
warning. This may be changed in the future.
|
|
|
|
Unicode. Though the zip standard requires storing paths in an archive
|
|
using a specific character set, in practice zips have stored paths in
|
|
archives in whatever the local character set is. This creates problems
|
|
when an archive is created or updated on a system using one character
|
|
set and then extracted on another system using a different character
|
|
set. When compiled with Unicode support enabled on platforms that sup-
|
|
port wide characters, zip now stores, in addition to the standard local
|
|
path for backward compatibility, the UTF-8 translation of the path.
|
|
This provides a common universal character set for storing paths that
|
|
allows these paths to be fully extracted on other systems that support
|
|
Unicode and to match as close as possible on systems that don't.
|
|
|
|
On Win32 systems where paths are internally stored as Unicode but rep-
|
|
resented in the local character set, it's possible that some paths will
|
|
be skipped during a local character set directory scan. zip with Uni-
|
|
code support now can read and store these paths. Note that Win 9x sys-
|
|
tems and FAT file systems don't fully support Unicode.
|
|
|
|
Be aware that console windows on Win32 and Unix, for example, sometimes
|
|
don't accurately show all characters due to how each operating system
|
|
switches in character sets for display. However, directory navigation
|
|
tools should show the correct paths if the needed fonts are loaded.
|
|
|
|
Command line format. This version of zip has updated command line pro-
|
|
cessing and support for long options.
|
|
|
|
Short options take the form
|
|
|
|
-s[-][s[-]...][value][=value][ value]
|
|
|
|
where s is a one or two character short option. A short option that
|
|
takes a value is last in an argument and anything after it is taken as
|
|
the value. If the option can be negated and "-" immediately follows
|
|
the option, the option is negated. Short options can also be given as
|
|
separate arguments
|
|
|
|
-s[-][value][=value][ value] -s[-][value][=value][ value] ...
|
|
|
|
Short options in general take values either as part of the same argu-
|
|
ment or as the following argument. An optional = is also supported.
|
|
So
|
|
|
|
-ttmmddyyyy
|
|
|
|
and
|
|
|
|
-tt=mmddyyyy
|
|
|
|
and
|
|
|
|
-tt mmddyyyy
|
|
|
|
all work. The -x and -i options accept lists of values and use a
|
|
slightly different format described below. See the -x and -i options.
|
|
|
|
Long options take the form
|
|
|
|
--longoption[-][=value][ value]
|
|
|
|
where the option starts with --, has a multicharacter name, can include
|
|
a trailing dash to negate the option (if the option supports it), and
|
|
can have a value (option argument) specified by preceeding it with =
|
|
(no spaces). Values can also follow the argument. So
|
|
|
|
--before-date=mmddyyyy
|
|
|
|
and
|
|
|
|
--before-date mmddyyyy
|
|
|
|
both work.
|
|
|
|
Long option names can be shortened to the shortest unique abbreviation.
|
|
See the option descriptions below for which support long options. To
|
|
avoid confusion, avoid abbreviating a negatable option with an embedded
|
|
dash ("-") at the dash if you plan to negate it (the parser would con-
|
|
sider a trailing dash, such as for the option --some-option using
|
|
--some- as the option, as part of the name rather than a negating
|
|
dash). This may be changed to force the last dash in --some- to be
|
|
negating in the future.
|
|
|
|
OPTIONS
|
|
-a
|
|
--ascii
|
|
[Systems using EBCDIC] Translate file to ASCII format.
|
|
|
|
-A
|
|
--adjust-sfx
|
|
Adjust self-extracting executable archive. A self-extracting
|
|
executable archive is created by prepending the SFX stub to an
|
|
existing archive. The -A option tells zip to adjust the entry
|
|
offsets stored in the archive to take into account this "pream-
|
|
ble" data.
|
|
|
|
Note: self-extracting archives for the Amiga are a special case. At
|
|
present, only the Amiga port of zip is capable of adjusting or updating
|
|
these without corrupting them. -J can be used to remove the SFX stub if
|
|
other updates need to be made.
|
|
|
|
-AC
|
|
--archive-clear
|
|
[WIN32] Once archive is created (and tested if -T is used,
|
|
which is recommended), clear the archive bits of files pro-
|
|
cessed. WARNING: Once the bits are cleared they are cleared.
|
|
You may want to use the -sf show files option to store the list
|
|
of files processed in case the archive operation must be
|
|
repeated. Also consider using the -MM must match option. Be
|
|
sure to check out -DF as a possibly better way to do incremental
|
|
backups.
|
|
|
|
-AS
|
|
--archive-set
|
|
[WIN32] Only include files that have the archive bit set.
|
|
Directories are not stored when -AS is used, though by default
|
|
the paths of entries, including directories, are stored as usual
|
|
and can be used by most unzips to recreate directories.
|
|
|
|
The archive bit is set by the operating system when a file is
|
|
modified and, if used with -AC, -AS can provide an incremental
|
|
backup capability. However, other applications can modify the
|
|
archive bit and it may not be a reliable indicator of which
|
|
files have changed since the last archive operation. Alterna-
|
|
tive ways to create incremental backups are using -t to use file
|
|
dates, though this won't catch old files copied to directories
|
|
being archived, and -DF to create a differential archive.
|
|
|
|
-B
|
|
--binary
|
|
[VM/CMS and MVS] force file to be read binary (default is text).
|
|
|
|
-Bn [TANDEM] set Edit/Enscribe formatting options with n defined as
|
|
bit 0: Don't add delimiter (Edit/Enscribe)
|
|
bit 1: Use LF rather than CR/LF as delimiter (Edit/Enscribe)
|
|
bit 2: Space fill record to maximum record length (Enscribe)
|
|
bit 3: Trim trailing space (Enscribe)
|
|
bit 8: Force 30K (Expand) large read for unstructured files
|
|
|
|
-b path
|
|
--temp-path path
|
|
Use the specified path for the temporary zip archive. For exam-
|
|
ple:
|
|
|
|
zip -b /tmp stuff *
|
|
|
|
will put the temporary zip archive in the directory /tmp, copy-
|
|
ing over stuff.zip to the current directory when done. This
|
|
option is 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 archives at the same time. It may also be
|
|
useful when streaming in some cases to avoid the need for data
|
|
descriptors. Note that using this option may require zip take
|
|
additional time to copy the archive file when done to the desti-
|
|
nation file system.
|
|
|
|
-c
|
|
--entry-comments
|
|
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.
|
|
|
|
-C
|
|
--preserve-case
|
|
[VMS] Preserve case all on VMS. Negating this option (-C-)
|
|
downcases.
|
|
|
|
-C2
|
|
--preserve-case-2
|
|
[VMS] Preserve case ODS2 on VMS. Negating this option (-C2-)
|
|
downcases.
|
|
|
|
-C5
|
|
--preserve-case-5
|
|
[VMS] Preserve case ODS5 on VMS. Negating this option (-C5-)
|
|
downcases.
|
|
|
|
-d
|
|
--delete
|
|
Remove (delete) entries from a zip archive. For example:
|
|
|
|
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. (The backslashes are not
|
|
used on MSDOS-based platforms.) Can also use quotes to escape
|
|
the asterisks as in
|
|
|
|
zip -d foo foo/tom/junk "foo/harry/*" "*.o"
|
|
|
|
Not escaping the asterisks on a system where the shell expands
|
|
wildcards could result in the asterisks being converted to a
|
|
list of files in the current directory and that list used to
|
|
delete entries from the archive.
|
|
|
|
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. (We con-
|
|
sidered making this case insensitive on systems where paths were
|
|
case insensitive, but it is possible the archive came from a
|
|
system where case does matter and the archive could include both
|
|
Bar and bar as separate files in the archive.) But see the new
|
|
option -ic to ignore case in the archive.
|
|
|
|
-db
|
|
--display-bytes
|
|
Display running byte counts showing the bytes zipped and the
|
|
bytes to go.
|
|
|
|
-dc
|
|
--display-counts
|
|
Display running count of entries zipped and entries to go.
|
|
|
|
-dd
|
|
--display-dots
|
|
Display dots while each entry is zipped (except on ports that
|
|
have their own progress indicator). See -ds below for setting
|
|
dot size. The default is a dot every 10 MB of input file pro-
|
|
cessed. The -v option also displays dots (previously at a much
|
|
higher rate than this but now -v also defaults to 10 MB) and
|
|
this rate is also controlled by -ds.
|
|
|
|
-df
|
|
--datafork
|
|
[MacOS] Include only data-fork of files zipped into the archive.
|
|
Good for exporting files to foreign operating-systems.
|
|
Resource-forks will be ignored at all.
|
|
|
|
-dg
|
|
--display-globaldots
|
|
Display progress dots for the archive instead of for each file.
|
|
The command
|
|
|
|
zip -qdgds 10m
|
|
|
|
will turn off most output except dots every 10 MB.
|
|
|
|
-ds size
|
|
--dot-size size
|
|
Set amount of input file processed for each dot displayed. See
|
|
-dd to enable displaying dots. Setting this option implies -dd.
|
|
Size is in the format nm where n is a number and m is a multi-
|
|
plier. Currently m can be k (KB), m (MB), g (GB), or t (TB), so
|
|
if n is 100 and m is k, size would be 100k which is 100 KB. The
|
|
default is 10 MB.
|
|
|
|
The -v option also displays dots and now defaults to 10 MB also.
|
|
This rate is also controlled by this option. A size of 0 turns
|
|
dots off.
|
|
|
|
This option does not control the dots from the "Scanning files"
|
|
message as zip scans for input files. The dot size for that is
|
|
fixed at 2 seconds or a fixed number of entries, whichever is
|
|
longer.
|
|
|
|
-du
|
|
--display-usize
|
|
Display the uncompressed size of each entry.
|
|
|
|
-dv
|
|
--display-volume
|
|
Display the volume (disk) number each entry is being read from,
|
|
if reading an existing archive, and being written to.
|
|
|
|
-D
|
|
--no-dir-entries
|
|
Do not create entries in the zip archive for directories.
|
|
Directory entries are created by default so that their
|
|
attributes can be saved in the zip archive. The environment
|
|
variable ZIPOPT can be used to change the default options. For
|
|
example under Unix with sh:
|
|
|
|
ZIPOPT="-D"; export ZIPOPT
|
|
|
|
(The variable ZIPOPT can be used for any option, including -i
|
|
and -x using a new option format detailed below, and can include
|
|
several options.) The option -D is a shorthand for -x "*/" but
|
|
the latter previously could not be set as default in the ZIPOPT
|
|
environment variable as the contents of ZIPOPT gets inserted
|
|
near the beginning of the command line and the file list had to
|
|
end at the end of the line.
|
|
|
|
This version of zip does allow -x and -i options in ZIPOPT if
|
|
the form
|
|
|
|
-x file file ... @
|
|
|
|
is used, where the @ (an argument that is just @) terminates the
|
|
list.
|
|
|
|
-DF
|
|
--difference-archive
|
|
Create an archive that contains all new and changed files since
|
|
the original archive was created. For this to work, the input
|
|
file list and current directory must be the same as during the
|
|
original zip operation.
|
|
|
|
For example, if the existing archive was created using
|
|
|
|
zip -r foofull .
|
|
|
|
from the bar directory, then the command
|
|
|
|
zip -r foofull . -DF --out foonew
|
|
|
|
also from the bar directory creates the archive foonew with just
|
|
the files not in foofull and the files where the size or file
|
|
time of the files do not match those in foofull.
|
|
|
|
Note that the timezone environment variable TZ should be set
|
|
according to the local timezone in order for this option to work
|
|
correctly. A change in timezone since the original archive was
|
|
created could result in no times matching and all files being
|
|
included.
|
|
|
|
A possible approach to backing up a directory might be to create
|
|
a normal archive of the contents of the directory as a full
|
|
backup, then use this option to create incremental backups.
|
|
|
|
-e
|
|
--encrypt
|
|
Encrypt the contents of the zip archive using a password 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). The password prompt is repeated to save the
|
|
user from typing errors.
|
|
|
|
-E
|
|
--longnames
|
|
[OS/2] Use the .LONGNAME Extended Attribute (if found) as file-
|
|
name.
|
|
|
|
-f
|
|
--freshen
|
|
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.
|
|
|
|
Note that the timezone environment variable TZ should be set
|
|
according to the local timezone in order for the -f, -u and -o
|
|
options to work correctly.
|
|
|
|
The reasons behind this are somewhat subtle but have to do with
|
|
the differences between the Unix-format file times (always in
|
|
GMT) and most of the other operating systems (always local time)
|
|
and the necessity to compare the two. A typical TZ value is
|
|
``MET-1MEST'' (Middle European time with automatic adjustment
|
|
for ``summertime'' or Daylight Savings Time).
|
|
|
|
The format is TTThhDDD, where TTT is the time zone such as MET,
|
|
hh is the difference between GMT and local time such as -1
|
|
above, and DDD is the time zone when daylight savings time is in
|
|
effect. Leave off the DDD if there is no daylight savings time.
|
|
For the US Eastern time zone EST5EDT.
|
|
|
|
-F
|
|
--fix
|
|
-FF
|
|
--fixfix
|
|
Fix the zip archive. The -F option can be used if some portions
|
|
of the archive are missing, but requires a reasonably intact
|
|
central directory. The input archive is scanned as usual, but
|
|
zip will ignore some problems. The resulting archive should be
|
|
valid, but any inconsistent entries will be left out.
|
|
|
|
When doubled as in -FF, the archive is scanned from the begin-
|
|
ning and zip scans for special signatures to identify the limits
|
|
between the archive members. The single -F is more reliable if
|
|
the archive is not too much damaged, so try this option first.
|
|
|
|
If the archive is too damaged or the end has been truncated, you
|
|
must use -FF. This is a change from zip 2.32, where the -F
|
|
option is able to read a truncated archive. The -F option now
|
|
more reliably fixes archives with minor damage and the -FF
|
|
option is needed to fix archives where -F might have been suffi-
|
|
cient before.
|
|
|
|
Neither option will recover archives that have been incorrectly
|
|
transferred in ascii mode instead of binary. After the repair,
|
|
the -t option of unzip may show that some files have a bad CRC.
|
|
Such files cannot be recovered; you can remove them from the
|
|
archive using the -d option of zip.
|
|
|
|
Note that -FF may have trouble fixing archives that include an
|
|
embedded zip archive that was stored (without compression) in
|
|
the archive and, depending on the damage, it may find the
|
|
entries in the embedded archive rather than the archive itself.
|
|
Try -F first as it does not have this problem.
|
|
|
|
The format of the fix commands have changed. For example, to
|
|
fix the damaged archive foo.zip,
|
|
|
|
zip -F foo --out foofix
|
|
|
|
tries to read the entries normally, copying good entries to the
|
|
new archive foofix.zip. If this doesn't work, as when the
|
|
archive is truncated, or if some entries you know are in the
|
|
archive are missed, then try
|
|
|
|
zip -FF foo --out foofixfix
|
|
|
|
and compare the resulting archive to the archive created by -F.
|
|
The -FF option may create an inconsistent archive. Depending on
|
|
what is damaged, you can then use the -F option to fix that
|
|
archive.
|
|
|
|
A split archive with missing split files can be fixed using -F
|
|
if you have the last split of the archive (the .zip file). If
|
|
this file is missing, you must use -FF to fix the archive, which
|
|
will prompt you for the splits you have.
|
|
|
|
Currently the fix options can't recover entries that have a bad
|
|
checksum or are otherwise damaged.
|
|
|
|
-FI
|
|
--fifo [Unix] Normally zip skips reading any FIFOs (named pipes)
|
|
encountered, as zip can hang if the FIFO is not being fed. This
|
|
option tells zip to read the contents of any FIFO it finds.
|
|
|
|
-FS
|
|
--filesync
|
|
Synchronize the contents of an archive with the files on the OS.
|
|
Normally when an archive is updated, new files are added and
|
|
changed files are updated but files that no longer exist on the
|
|
OS are not deleted from the archive. This option enables a new
|
|
mode that checks entries in the archive against the file system.
|
|
If the file time and file size of the entry matches that of the
|
|
OS file, the entry is copied from the old archive instead of
|
|
being read from the file system and compressed. If the OS file
|
|
has changed, the entry is read and compressed as usual. If the
|
|
entry in the archive does not match a file on the OS, the entry
|
|
is deleted. Enabling this option should create archives that
|
|
are the same as new archives, but since existing entries are
|
|
copied instead of compressed, updating an existing archive with
|
|
-FS can be much faster than creating a new archive. Also con-
|
|
sider using -u for updating an archive.
|
|
|
|
For this option to work, the archive should be updated from the
|
|
same directory it was created in so the relative paths match.
|
|
If few files are being copied from the old archive, it may be
|
|
faster to create a new archive instead.
|
|
|
|
Note that the timezone environment variable TZ should be set
|
|
according to the local timezone in order for this option to work
|
|
correctly. A change in timezone since the original archive was
|
|
created could result in no times matching and recompression of
|
|
all files.
|
|
|
|
This option deletes files from the archive. If you need to pre-
|
|
serve the original archive, make a copy of the archive first or
|
|
use the --out option to output the updated archive to a new
|
|
file. Even though it may be slower, creating a new archive with
|
|
a new archive name is safer, avoids mismatches between archive
|
|
and OS paths, and is preferred.
|
|
|
|
-g
|
|
--grow
|
|
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 corrupted. This option is ignored when
|
|
there's no existing archive or when at least one archive member
|
|
must be updated or deleted.
|
|
|
|
-h
|
|
-?
|
|
--help
|
|
Display the zip help information (this also appears if zip is
|
|
run with no arguments).
|
|
|
|
-h2
|
|
--more-help
|
|
Display extended help including more on command line format,
|
|
pattern matching, and more obscure options.
|
|
|
|
-i files
|
|
--include files
|
|
Include only the specified files, as in:
|
|
|
|
zip -r foo . -i \*.c
|
|
|
|
which will include only the files that end in .c in the current
|
|
directory and its subdirectories. (Note for PKZIP users: the
|
|
equivalent command is
|
|
|
|
pkzip -rP foo *.c
|
|
|
|
PKZIP does not allow recursion in directories other than the
|
|
current one.) The backslash avoids the shell filename substitu-
|
|
tion, so that the name matching is performed by zip at all
|
|
directory levels. [This is for Unix and other systems where \
|
|
escapes the next character. For other systems where the shell
|
|
does not process * do not use \ and the above is
|
|
|
|
zip -r foo . -i *.c
|
|
|
|
Examples are for Unix unless otherwise specified.] So to
|
|
include dir, a directory directly under the current directory,
|
|
use
|
|
|
|
zip -r foo . -i dir/\*
|
|
|
|
or
|
|
|
|
zip -r foo . -i "dir/*"
|
|
|
|
to match paths such as dir/a and dir/b/file.c [on ports without
|
|
wildcard expansion in the shell such as MSDOS and Windows
|
|
|
|
zip -r foo . -i dir/*
|
|
|
|
is used.] Note that currently the trailing / is needed for
|
|
directories (as in
|
|
|
|
zip -r foo . -i dir/
|
|
|
|
to include directory dir).
|
|
|
|
The long option form of the first example is
|
|
|
|
zip -r foo . --include \*.c
|
|
|
|
and does the same thing as the short option form.
|
|
|
|
Though the command syntax used to require -i at the end of the
|
|
command line, this version actually allows -i (or --include)
|
|
anywhere. The list of files terminates at the next argument
|
|
starting with -, the end of the command line, or the list termi-
|
|
nator @ (an argument that is just @). So the above can be given
|
|
as
|
|
|
|
zip -i \*.c @ -r foo .
|
|
|
|
for example. There must be a space between the option and the
|
|
first file of a list. For just one file you can use the single
|
|
value form
|
|
|
|
zip -i\*.c -r foo .
|
|
|
|
(no space between option and value) or
|
|
|
|
zip --include=\*.c -r foo .
|
|
|
|
as additional examples. The single value forms are not recom-
|
|
mended because they can be confusing and, in particular, the
|
|
-ifile format can cause problems if the first letter of file
|
|
combines with i to form a two-letter option starting with i.
|
|
Use -sc to see how your command line will be parsed.
|
|
|
|
Also possible:
|
|
|
|
zip -r foo . -i@include.lst
|
|
|
|
which will only include the files in the current directory and
|
|
its subdirectories that match the patterns in the file
|
|
include.lst.
|
|
|
|
Files to -i and -x are patterns matching internal archive paths.
|
|
See -R for more on patterns.
|
|
|
|
-I
|
|
--no-image
|
|
[Acorn RISC OS] Don't scan through Image files. When used, zip
|
|
will not consider Image files (eg. DOS partitions or Spark
|
|
archives when SparkFS is loaded) as directories but will store
|
|
them as single files.
|
|
|
|
For example, if you have SparkFS loaded, zipping a Spark archive
|
|
will result in a zipfile containing a directory (and its con-
|
|
tent) while using the 'I' option will result in a zipfile con-
|
|
taining a Spark archive. Obviously this second case will also be
|
|
obtained (without the 'I' option) if SparkFS isn't loaded.
|
|
|
|
-ic
|
|
--ignore-case
|
|
[VMS, WIN32] Ignore case when matching archive entries. This
|
|
option is only available on systems where the case of files is
|
|
ignored. On systems with case-insensitive file systems, case is
|
|
normally ignored when matching files on the file system but is
|
|
not ignored for -f (freshen), -d (delete), -U (copy), and simi-
|
|
lar modes when matching against archive entries (currently -f
|
|
ignores case on VMS) because archive entries can be from systems
|
|
where case does matter and names that are the same except for
|
|
case can exist in an archive. The -ic option makes all matching
|
|
case insensitive. This can result in multiple archive entries
|
|
matching a command line pattern.
|
|
|
|
-j
|
|
--junk-paths
|
|
Store just the name of a saved file (junk the path), and do not
|
|
store directory names. By default, zip will store the full path
|
|
(relative to the current directory).
|
|
|
|
-jj
|
|
--absolute-path
|
|
[MacOS] record Fullpath (+ Volname). The complete path including
|
|
volume will be stored. By default the relative path will be
|
|
stored.
|
|
|
|
-J
|
|
--junk-sfx
|
|
Strip any prepended data (e.g. a SFX stub) from the archive.
|
|
|
|
-k
|
|
--DOS-names
|
|
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 which
|
|
cannot handle certain names such as those with two dots.
|
|
|
|
-l
|
|
--to-crlf
|
|
Translate the Unix end-of-line character LF into the MSDOS con-
|
|
vention 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 is to ensure that unzip -a on
|
|
Unix will get back an exact copy of the original file, to undo
|
|
the effect of zip -l. See -ll for how binary files are handled.
|
|
|
|
-la
|
|
--log-append
|
|
Append to existing logfile. Default is to overwrite.
|
|
|
|
-lf logfilepath
|
|
--logfile-path logfilepath
|
|
Open a logfile at the given path. By default any existing file
|
|
at that location is overwritten, but the -la option will result
|
|
in an existing file being opened and the new log information
|
|
appended to any existing information. Only warnings and errors
|
|
are written to the log unless the -li option is also given, then
|
|
all information messages are also written to the log.
|
|
|
|
-li
|
|
--log-info
|
|
Include information messages, such as file names being zipped,
|
|
in the log. The default is to only include the command line,
|
|
any warnings and errors, and the final status.
|
|
|
|
-ll
|
|
--from-crlf
|
|
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. If the
|
|
file is converted and the file is later determined to be binary
|
|
a warning is issued and the file is probably corrupted. In this
|
|
release if -ll detects binary in the first buffer read from a
|
|
file, zip now issues a warning and skips line end conversion on
|
|
the file. This check seems to catch all binary files tested,
|
|
but the original check remains and if a converted file is later
|
|
determined to be binary that warning is still issued. A new
|
|
algorithm is now being used for binary detection that should
|
|
allow line end conversion of text files in UTF-8 and similar
|
|
encodings.
|
|
|
|
-L
|
|
--license
|
|
Display the zip license.
|
|
|
|
-m
|
|
--move
|
|
Move the specified files into the zip archive; actually, 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 so it is
|
|
recommended to use it in combination with -T to test the archive
|
|
before removing all input files.
|
|
|
|
-MM
|
|
--must-match
|
|
All input patterns must match at least one file and all input
|
|
files found must be readable. Normally when an input pattern
|
|
does not match a file the "name not matched" warning is issued
|
|
and when an input file has been found but later is missing or
|
|
not readable a missing or not readable warning is issued. In
|
|
either case zip continues creating the archive, with missing or
|
|
unreadable new files being skipped and files already in the
|
|
archive remaining unchanged. After the archive is created, if
|
|
any files were not readable zip returns the OPEN error code (18
|
|
on most systems) instead of the normal success return (0 on most
|
|
systems). With -MM set, zip exits as soon as an input pattern
|
|
is not matched (whenever the "name not matched" warning would be
|
|
issued) or when an input file is not readable. In either case
|
|
zip exits with an OPEN error and no archive is created.
|
|
|
|
This option is useful when a known list of files is to be zipped
|
|
so any missing or unreadable files will result in an error. It
|
|
is less useful when used with wildcards, but zip will still exit
|
|
with an error if any input pattern doesn't match at least one
|
|
file and if any matched files are unreadable. If you want to
|
|
create the archive anyway and only need to know if files were
|
|
skipped, don't use -MM and just check the return code. Also -lf
|
|
could be useful.
|
|
|
|
-n suffixes
|
|
--suffixes 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 semi-
|
|
colons. 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 com-
|
|
press 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"
|
|
|
|
To attempt compression on all files, use:
|
|
|
|
zip -n : foo
|
|
|
|
The maximum compression option -9 also attempts compression on
|
|
all files regardless of extension.
|
|
|
|
On Acorn RISC OS systems the suffixes are actually filetypes (3
|
|
hex digit format). By default, zip does not compress files with
|
|
filetypes in the list DDC:D96:68E (i.e. Archives, CFS files and
|
|
PackDir files).
|
|
|
|
-nw
|
|
--no-wild
|
|
Do not perform internal wildcard processing (shell processing of
|
|
wildcards is still done by the shell unless the arguments are
|
|
escaped). Useful if a list of paths is being read and no wild-
|
|
card substitution is desired.
|
|
|
|
-N
|
|
--notes
|
|
[Amiga, MacOS] Save Amiga or MacOS filenotes as zipfile com-
|
|
ments. They can be restored by using the -N option of unzip. If
|
|
-c is used also, you are prompted for comments only for those
|
|
files that do not have filenotes.
|
|
|
|
-o
|
|
--latest-time
|
|
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.
|
|
|
|
-O output-file
|
|
--output-file output-file
|
|
Process the archive changes as usual, but instead of updating
|
|
the existing archive, output the new archive to output-file.
|
|
Useful for updating an archive without changing the existing
|
|
archive and the input archive must be a different file than the
|
|
output archive.
|
|
|
|
This option can be used to create updated split archives. It
|
|
can also be used with -U to copy entries from an existing
|
|
archive to a new archive. See the EXAMPLES section below.
|
|
|
|
Another use is converting zip files from one split size to
|
|
another. For instance, to convert an archive with 700 MB CD
|
|
splits to one with 2 GB DVD splits, can use:
|
|
|
|
zip -s 2g cd-split.zip --out dvd-split.zip
|
|
|
|
which uses copy mode. See -U below. Also:
|
|
|
|
zip -s 0 split.zip --out unsplit.zip
|
|
|
|
will convert a split archive to a single-file archive.
|
|
|
|
Copy mode will convert stream entries (using data descriptors
|
|
and which should be compatible with most unzips) to normal
|
|
entries (which should be compatible with all unzips), except if
|
|
standard encryption was used. For archives with encrypted
|
|
entries, zipcloak will decrypt the entries and convert them to
|
|
normal entries.
|
|
|
|
-p
|
|
--paths
|
|
Include relative file paths as part of the names of files stored
|
|
in the archive. This is the default. The -j option junks the
|
|
paths and just stores the names of the files.
|
|
|
|
-P password
|
|
--password password
|
|
Use password to encrypt zipfile entries (if any). THIS IS INSE-
|
|
CURE! Many multi-user operating systems provide ways for any
|
|
user to see the current command line of any other user; even on
|
|
stand-alone systems there is always the threat of over-the-
|
|
shoulder peeking. Storing the plaintext password as part of a
|
|
command line in an automated script is even worse. Whenever
|
|
possible, use the non-echoing, interactive prompt to enter pass-
|
|
words. (And where security is truly important, use strong
|
|
encryption such as Pretty Good Privacy instead of the relatively
|
|
weak standard encryption provided by zipfile utilities.)
|
|
|
|
-q
|
|
--quiet
|
|
Quiet mode; eliminate informational messages and comment
|
|
prompts. (Useful, for example, in shell scripts and background
|
|
tasks).
|
|
|
|
-Qn
|
|
--Q-flag n
|
|
[QDOS] store information about the file in the file header with
|
|
n defined as
|
|
bit 0: Don't add headers for any file
|
|
bit 1: Add headers for all files
|
|
bit 2: Don't wait for interactive key press on exit
|
|
|
|
-r
|
|
--recurse-paths
|
|
Travel the directory structure recursively; for example:
|
|
|
|
zip -r foo.zip foo
|
|
|
|
or more concisely
|
|
|
|
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 names starting
|
|
with ".", since the recursion does not use the shell's file-name
|
|
substitution mechanism. If you wish to include only a specific
|
|
subset of the files in directory foo and its subdirectories, use
|
|
the -i option to specify the pattern of files to be included.
|
|
You should not use -r with the name ".*", since that matches
|
|
".." which will attempt to zip up the parent directory (proba-
|
|
bly not what was intended).
|
|
|
|
Multiple source directories are allowed as in
|
|
|
|
zip -r foo foo1 foo2
|
|
|
|
which first zips up foo1 and then foo2, going down each direc-
|
|
tory.
|
|
|
|
Note that while wildcards to -r are typically resolved while
|
|
recursing down directories in the file system, any -R, -x, and
|
|
-i wildcards are applied to internal archive pathnames once the
|
|
directories are scanned. To have wildcards apply to files in
|
|
subdirectories when recursing on Unix and similar systems where
|
|
the shell does wildcard substitution, either escape all wild-
|
|
cards or put all arguments with wildcards in quotes. This lets
|
|
zip see the wildcards and match files in subdirectories using
|
|
them as it recurses.
|
|
|
|
-R
|
|
--recurse-patterns
|
|
Travel the directory structure recursively starting at the cur-
|
|
rent directory; for example:
|
|
|
|
zip -R foo "*.c"
|
|
|
|
In this case, all the files matching *.c in the tree starting at
|
|
the current directory are stored into a zip archive named
|
|
foo.zip. Note that *.c will match file.c, a/file.c and a/b/.c.
|
|
More than one pattern can be listed as separate arguments. Note
|
|
for PKZIP users: the equivalent command is
|
|
|
|
pkzip -rP foo *.c
|
|
|
|
Patterns are relative file paths as they appear in the archive,
|
|
or will after zipping, and can have optional wildcards in them.
|
|
For example, given the current directory is foo and under it are
|
|
directories foo1 and foo2 and in foo1 is the file bar.c,
|
|
|
|
zip -R foo/*
|
|
|
|
will zip up foo, foo/foo1, foo/foo1/bar.c, and foo/foo2.
|
|
|
|
zip -R */bar.c
|
|
|
|
will zip up foo/foo1/bar.c. See the note for -r on escaping
|
|
wildcards.
|
|
|
|
-RE
|
|
--regex
|
|
[WIN32] Before zip 3.0, regular expression list matching was
|
|
enabled by default on Windows platforms. Because of confusion
|
|
resulting from the need to escape "[" and "]" in names, it is
|
|
now off by default for Windows so "[" and "]" are just normal
|
|
characters in names. This option enables [] matching again.
|
|
|
|
-s splitsize
|
|
--split-size splitsize
|
|
Enable creating a split archive and set the split size. A split
|
|
archive is an archive that could be split over many files. As
|
|
the archive is created, if the size of the archive reaches the
|
|
specified split size, that split is closed and the next split
|
|
opened. In general all splits but the last will be the split
|
|
size and the last will be whatever is left. If the entire
|
|
archive is smaller than the split size a single-file archive is
|
|
created.
|
|
|
|
Split archives are stored in numbered files. For example, if
|
|
the output archive is named archive and three splits are
|
|
required, the resulting archive will be in the three files
|
|
archive.z01, archive.z02, and archive.zip. Do not change the
|
|
numbering of these files or the archive will not be readable as
|
|
these are used to determine the order the splits are read.
|
|
|
|
Split size is a number optionally followed by a multiplier.
|
|
Currently the number must be an integer. The multiplier can
|
|
currently be one of k (kilobytes), m (megabytes), g (gigabytes),
|
|
or t (terabytes). As 64k is the minimum split size, numbers
|
|
without multipliers default to megabytes. For example, to cre-
|
|
ate a split archive called foo with the contents of the bar
|
|
directory with splits of 670 MB that might be useful for burning
|
|
on CDs, the command:
|
|
|
|
zip -s 670m -r foo bar
|
|
|
|
could be used.
|
|
|
|
Currently the old splits of a split archive are not excluded
|
|
from a new archive, but they can be specifically excluded. If
|
|
possible, keep the input and output archives out of the path
|
|
being zipped when creating split archives.
|
|
|
|
Using -s without -sp as above creates all the splits where foo
|
|
is being written, in this case the current directory. This
|
|
split mode updates the splits as the archive is being created,
|
|
requiring all splits to remain writable, but creates split
|
|
archives that are readable by any unzip that supports split
|
|
archives. See -sp below for enabling split pause mode which
|
|
allows splits to be written directly to removable media.
|
|
|
|
The option -sv can be used to enable verbose splitting and pro-
|
|
vide details of how the splitting is being done. The -sb option
|
|
can be used to ring the bell when zip pauses for the next split
|
|
destination.
|
|
|
|
Split archives cannot be updated, but see the -O (--out) option
|
|
for how a split archive can be updated as it is copied to a new
|
|
archive. A split archive can also be converted into a single-
|
|
file archive using a split size of 0 or negating the -s option:
|
|
|
|
zip -s 0 split.zip --out single.zip
|
|
|
|
Also see -U (--copy) for more on using copy mode.
|
|
|
|
-sb
|
|
--split-bell
|
|
If splitting and using split pause mode, ring the bell when zip
|
|
pauses for each split destination.
|
|
|
|
-sc
|
|
--show-command
|
|
Show the command line starting zip as processed and exit. The
|
|
new command parser permutes the arguments, putting all options
|
|
and any values associated with them before any non-option argu-
|
|
ments. This allows an option to appear anywhere in the command
|
|
line as long as any values that go with the option go with it.
|
|
This option displays the command line as zip sees it, including
|
|
any arguments from the environment such as from the ZIPOPT vari-
|
|
able. Where allowed, options later in the command line can
|
|
override options earlier in the command line.
|
|
|
|
-sf
|
|
--show-files
|
|
Show the files that would be operated on, then exit. For
|
|
instance, if creating a new archive, this will list the files
|
|
that would be added. If the option is negated, -sf-, output
|
|
only to an open log file. Screen display is not recommended for
|
|
large lists.
|
|
|
|
-so
|
|
--show-options
|
|
Show all available options supported by zip as compiled on the
|
|
current system. As this command reads the option table, it
|
|
should include all options. Each line includes the short option
|
|
(if defined), the long option (if defined), the format of any
|
|
value that goes with the option, if the option can be negated,
|
|
and a small description. The value format can be no value,
|
|
required value, optional value, single character value, number
|
|
value, or a list of values. The output of this option is not
|
|
intended to show how to use any option but only show what
|
|
options are available.
|
|
|
|
-sp
|
|
--split-pause
|
|
If splitting is enabled with -s, enable split pause mode. This
|
|
creates split archives as -s does, but stream writing is used so
|
|
each split can be closed as soon as it is written and zip will
|
|
pause between each split to allow changing split destination or
|
|
media.
|
|
|
|
Though this split mode allows writing splits directly to remov-
|
|
able media, it uses stream archive format that may not be read-
|
|
able by some unzips. Before relying on splits created with -sp,
|
|
test a split archive with the unzip you will be using.
|
|
|
|
To convert a stream split archive (created with -sp) to a stan-
|
|
dard archive see the --out option.
|
|
|
|
-su
|
|
--show-unicode
|
|
As -sf, but also show Unicode version of the path if exists.
|
|
|
|
-sU
|
|
--show-just-unicode
|
|
As -sf, but only show Unicode version of the path if exists,
|
|
otherwise show the standard version of the path.
|
|
|
|
-sv
|
|
--split-verbose
|
|
Enable various verbose messages while splitting, showing how the
|
|
splitting is being done.
|
|
|
|
-S
|
|
--system-hidden
|
|
[MSDOS, OS/2, WIN32 and ATARI] Include system and hidden files.
|
|
[MacOS] Includes finder invisible files, which are ignored oth-
|
|
erwise.
|
|
|
|
-t mmddyyyy
|
|
--from-date mmddyyyy
|
|
Do not operate on files modified prior to the specified date,
|
|
where mm is the month (00-12), dd is the day of the month
|
|
(01-31), and yyyy is the year. The ISO 8601 date format
|
|
yyyy-mm-dd is also accepted. For example:
|
|
|
|
zip -rt 12071991 infamy foo
|
|
|
|
zip -rt 1991-12-07 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.
|
|
|
|
-tt mmddyyyy
|
|
--before-date mmddyyyy
|
|
Do not operate on files modified after or at the specified date,
|
|
where mm is the month (00-12), dd is the day of the month
|
|
(01-31), and yyyy is the year. The ISO 8601 date format
|
|
yyyy-mm-dd is also accepted. For example:
|
|
|
|
zip -rtt 11301995 infamy foo
|
|
|
|
zip -rtt 1995-11-30 infamy foo
|
|
|
|
will add all the files in foo and its subdirectories that were
|
|
last modified before 30 November 1995, to the zip archive
|
|
infamy.zip.
|
|
|
|
-T
|
|
--test
|
|
Test the integrity of the new zip file. If the check fails, the
|
|
old zip file is unchanged and (with the -m option) no input
|
|
files are removed.
|
|
|
|
-TT cmd
|
|
--unzip-command cmd
|
|
Use command cmd instead of 'unzip -tqq' to test an archive when
|
|
the -T option is used. On Unix, to use a copy of unzip in the
|
|
current directory instead of the standard system unzip, could
|
|
use:
|
|
|
|
zip archive file1 file2 -T -TT "./unzip -tqq"
|
|
|
|
In cmd, {} is replaced by the name of the temporary archive,
|
|
otherwise the name of the archive is appended to the end of the
|
|
command. The return code is checked for success (0 on Unix).
|
|
|
|
-u
|
|
--update
|
|
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 input file arguments acts like
|
|
the -f (freshen) option.
|
|
|
|
-U
|
|
--copy-entries
|
|
Copy entries from one archive to another. Requires the --out
|
|
option to specify a different output file than the input
|
|
archive. Copy mode is the reverse of -d delete. When delete is
|
|
being used with --out, the selected entries are deleted from the
|
|
archive and all other entries are copied to the new archive,
|
|
while copy mode selects the files to include in the new archive.
|
|
Unlike -u update, input patterns on the command line are matched
|
|
against archive entries only and not the file system files. For
|
|
instance,
|
|
|
|
zip inarchive "*.c" --copy --out outarchive
|
|
|
|
copies entries with names ending in .c from inarchive to out-
|
|
archive. The wildcard must be escaped on some systems to pre-
|
|
vent the shell from substituting names of files from the file
|
|
system which may have no relevance to the entries in the
|
|
archive.
|
|
|
|
If no input files appear on the command line and --out is used,
|
|
copy mode is assumed:
|
|
|
|
zip inarchive --out outarchive
|
|
|
|
This is useful for changing split size for instance. Encrypting
|
|
and decrypting entries is not yet supported using copy mode.
|
|
Use zipcloak for that.
|
|
|
|
-UN v
|
|
--unicode v
|
|
Determine what zip should do with Unicode file names. zip 3.0,
|
|
in addition to the standard file path, now includes the UTF-8
|
|
translation of the path if the entry path is not entirely 7-bit
|
|
ASCII. When an entry is missing the Unicode path, zip reverts
|
|
back to the standard file path. The problem with using the
|
|
standard path is this path is in the local character set of the
|
|
zip that created the entry, which may contain characters that
|
|
are not valid in the character set being used by the unzip.
|
|
When zip is reading an archive, if an entry also has a Unicode
|
|
path, zip now defaults to using the Unicode path to recreate the
|
|
standard path using the current local character set.
|
|
|
|
This option can be used to determine what zip should do with
|
|
this path if there is a mismatch between the stored standard
|
|
path and the stored UTF-8 path (which can happen if the standard
|
|
path was updated). In all cases, if there is a mismatch it is
|
|
assumed that the standard path is more current and zip uses
|
|
that. Values for v are
|
|
|
|
q - quit if paths do not match
|
|
|
|
w - warn, continue with standard path
|
|
|
|
i - ignore, continue with standard path
|
|
|
|
n - no Unicode, do not use Unicode paths
|
|
|
|
The default is to warn and continue.
|
|
|
|
Characters that are not valid in the current character set are
|
|
escaped as #Uxxxx and #Lxxxxxx, where x is an ASCII character
|
|
for a hex digit. The first is used if a 16-bit character number
|
|
is sufficient to represent the Unicode character and the second
|
|
if the character needs more than 16 bits to represent it's Uni-
|
|
code character code. Setting -UN to
|
|
|
|
e - escape
|
|
|
|
as in
|
|
|
|
zip archive -sU -UN=e
|
|
|
|
forces zip to escape all characters that are not printable 7-bit
|
|
ASCII.
|
|
|
|
Normally zip stores UTF-8 directly in the standard path field on
|
|
systems where UTF-8 is the current character set and stores the
|
|
UTF-8 in the new extra fields otherwise. The option
|
|
|
|
u - UTF-8
|
|
|
|
as in
|
|
|
|
zip archive dir -r -UN=UTF8
|
|
|
|
forces zip to store UTF-8 as native in the archive. Note that
|
|
storing UTF-8 directly is the default on Unix systems that sup-
|
|
port it. This option could be useful on Windows systems where
|
|
the escaped path is too large to be a valid path and the UTF-8
|
|
version of the path is smaller, but native UTF-8 is not backward
|
|
compatible on Windows systems.
|
|
|
|
-v
|
|
--verbose
|
|
Verbose mode or print diagnostic version info.
|
|
|
|
Normally, when applied to real operations, this option enables
|
|
the display of a progress indicator during compression (see -dd
|
|
for more on dots) and requests verbose diagnostic info about
|
|
zipfile structure oddities.
|
|
|
|
However, when -v is the only command line argument a diagnostic
|
|
screen is printed instead. This should now work even if stdout
|
|
is redirected to a file, allowing easy saving of the information
|
|
for sending with bug reports to Info-ZIP. The version screen
|
|
provides the help screen header with program name, version, and
|
|
release date, some pointers to the Info-ZIP home and distribu-
|
|
tion sites, and shows information about the target environment
|
|
(compiler type and version, OS version, compilation date and the
|
|
enabled optional features used to create the zip executable).
|
|
|
|
-V
|
|
--VMS-portable
|
|
[VMS] Save VMS file attributes. (Files are truncated at EOF.)
|
|
When a -V archive is unpacked on a non-VMS system, some file
|
|
types (notably Stream_LF text files and pure binary files
|
|
like fixed-512) should be extracted intact. Indexed files and
|
|
file types with embedded record sizes (notably variable-length
|
|
record types) will probably be seen as corrupt elsewhere.
|
|
|
|
-VV
|
|
--VMS-specific
|
|
[VMS] Save VMS file attributes, and all allocated blocks in a
|
|
file, including any data beyond EOF. Useful for moving ill-
|
|
formed files among VMS systems. When a -VV archive is
|
|
unpacked on a non-VMS system, almost all files will appear cor-
|
|
rupt.
|
|
|
|
-w
|
|
--VMS-versions
|
|
[VMS] Append the version number of the files to the name,
|
|
including multiple versions of files. Default is to use only
|
|
the most recent version of a specified file.
|
|
|
|
-ww
|
|
--VMS-dot-versions
|
|
[VMS] Append the version number of the files to the name,
|
|
including multiple versions of files, using the .nnn format.
|
|
Default is to use only the most recent version of a specified
|
|
file.
|
|
|
|
-ws
|
|
--wild-stop-dirs
|
|
Wildcards match only at a directory level. Normally zip handles
|
|
paths as strings and given the paths
|
|
|
|
/foo/bar/dir/file1.c
|
|
|
|
/foo/bar/file2.c
|
|
|
|
an input pattern such as
|
|
|
|
/foo/bar/*
|
|
|
|
normally would match both paths, the * matching dir/file1.c and
|
|
file2.c. Note that in the first case a directory boundary (/)
|
|
was crossed in the match. With -ws no directory bounds will be
|
|
included in the match, making wildcards local to a specific
|
|
directory level. So, with -ws enabled, only the second path
|
|
would be matched.
|
|
|
|
When using -ws, use ** to match across directory boundaries as *
|
|
does normally.
|
|
|
|
-x files
|
|
--exclude 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 exclud-
|
|
ing all the files that end in .o. The backslash avoids the
|
|
shell filename substitution, so that the name matching is per-
|
|
formed by zip at all directory levels.
|
|
|
|
Also possible:
|
|
|
|
zip -r foo foo -x@exclude.lst
|
|
|
|
which will include the contents of foo in foo.zip while exclud-
|
|
ing all the files that match the patterns in the file
|
|
exclude.lst.
|
|
|
|
The long option forms of the above are
|
|
|
|
zip -r foo foo --exclude \*.o
|
|
|
|
and
|
|
|
|
zip -r foo foo --exclude @exclude.lst
|
|
|
|
Multiple patterns can be specified, as in:
|
|
|
|
zip -r foo foo -x \*.o \*.c
|
|
|
|
If there is no space between -x and the pattern, just one value
|
|
is assumed (no list):
|
|
|
|
zip -r foo foo -x\*.o
|
|
|
|
See -i for more on include and exclude.
|
|
|
|
-X
|
|
--no-extra
|
|
Do not save extra file attributes (Extended Attributes on OS/2,
|
|
uid/gid and file times on Unix). The zip format uses extra
|
|
fields to include additional information for each entry. Some
|
|
extra fields are specific to particular systems while others are
|
|
applicable to all systems. Normally when zip reads entries from
|
|
an existing archive, it reads the extra fields it knows, strips
|
|
the rest, and adds the extra fields applicable to that system.
|
|
With -X, zip strips all old fields and only includes the Unicode
|
|
and Zip64 extra fields (currently these two extra fields cannot
|
|
be disabled).
|
|
|
|
Negating this option, -X-, includes all the default extra
|
|
fields, but also copies over any unrecognized extra fields.
|
|
|
|
-y
|
|
--symlinks
|
|
For UNIX and VMS (V8.3 and later), store symbolic links as such
|
|
in the zip archive, instead of compressing and storing the file
|
|
referred to by the link. This can avoid multiple copies of
|
|
files being included in the archive as zip recurses the direc-
|
|
tory trees and accesses files directly and by links.
|
|
|
|
-z
|
|
--archive-comment
|
|
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 VMS). The
|
|
comment can be taken from a file:
|
|
|
|
zip -z foo < foowhat
|
|
|
|
-Z cm
|
|
--compression-method cm
|
|
Set the default compression method. Currently the main methods
|
|
supported by zip are store and deflate. Compression method can
|
|
be set to:
|
|
|
|
store - Setting the compression method to store forces zip to
|
|
store entries with no compression. This is generally faster
|
|
than compressing entries, but results in no space savings. This
|
|
is the same as using -0 (compression level zero).
|
|
|
|
deflate - This is the default method for zip. If zip determines
|
|
that storing is better than deflation, the entry will be stored
|
|
instead.
|
|
|
|
bzip2 - If bzip2 support is compiled in, this compression method
|
|
also becomes available. Only some modern unzips currently sup-
|
|
port the bzip2 compression method, so test the unzip you will be
|
|
using before relying on archives using this method (compression
|
|
method 12).
|
|
|
|
For example, to add bar.c to archive foo using bzip2 compres-
|
|
sion:
|
|
|
|
zip -Z bzip2 foo bar.c
|
|
|
|
The compression method can be abbreviated:
|
|
|
|
zip -Zb foo bar.c
|
|
|
|
-#
|
|
(-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
|
|
Regulate the speed of compression using the specified digit #,
|
|
where -0 indicates no compression (store all files), -1 indi-
|
|
cates the fastest compression speed (less compression) and -9
|
|
indicates the slowest compression speed (optimal compression,
|
|
ignores the suffix list). The default compression level is -6.
|
|
|
|
Though still being worked, the intention is this setting will
|
|
control compression speed for all compression methods. Cur-
|
|
rently only deflation is controlled.
|
|
|
|
-!
|
|
--use-privileges
|
|
[WIN32] Use priviliges (if granted) to obtain all aspects of
|
|
WinNT security.
|
|
|
|
-@
|
|
--names-stdin
|
|
Take the list of input files from standard input. Only one file-
|
|
name per line.
|
|
|
|
-$
|
|
--volume-label
|
|
[MSDOS, OS/2, WIN32] Include the volume label for the drive
|
|
holding the first file to be compressed. If you want to include
|
|
only the volume label or to force a specific drive, use the
|
|
drive name as first file name, as in:
|
|
|
|
zip -$ foo a: c:bar
|
|
|
|
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 the archive name contains a dot
|
|
already; this allows the explicit specification of other suffixes).
|
|
|
|
Because of the way the shell on Unix 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 direc-
|
|
tory.
|
|
|
|
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 corresponding 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.
|
|
|
|
Use -s to set the split size and create a split archive. The size is
|
|
given as a number followed optionally by one of k (kB), m (MB), g (GB),
|
|
or t (TB). The command
|
|
|
|
zip -s 2g -r split.zip foo
|
|
|
|
creates a split archive of the directory foo with splits no bigger than
|
|
2 GB each. If foo contained 5 GB of contents and the contents were
|
|
stored in the split archive without compression (to make this example
|
|
simple), this would create three splits, split.z01 at 2 GB, split.z02
|
|
at 2 GB, and split.zip at a little over 1 GB.
|
|
|
|
The -sp option can be used to pause zip between splits to allow chang-
|
|
ing removable media, for example, but read the descriptions and warn-
|
|
ings for both -s and -sp below.
|
|
|
|
Though zip does not update split archives, zip provides the new option
|
|
-O (--output-file) to allow split archives to be updated and saved in a
|
|
new archive. For example,
|
|
|
|
zip inarchive.zip foo.c bar.c --out outarchive.zip
|
|
|
|
reads archive inarchive.zip, even if split, adds the files foo.c and
|
|
bar.c, and writes the resulting archive to outarchive.zip. If inar-
|
|
chive.zip is split then outarchive.zip defaults to the same split size.
|
|
Be aware that outarchive.zip and any split files that are created with
|
|
it are always overwritten without warning. This may be changed in the
|
|
future.
|
|
|
|
PATTERN MATCHING
|
|
This section applies only to Unix. Watch this space for details on
|
|
MSDOS and VMS operation. However, the special wildcard characters *
|
|
and [] below apply to at least MSDOS also.
|
|
|
|
The Unix shells (sh, csh, bash, and others) normally do filename sub-
|
|
stitution (also called "globbing") on command arguments. Generally 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]). This form of wildcard matching allows
|
|
a user to specify a list of characters between square brackets
|
|
and if any of the characters match the expression matches. For
|
|
example:
|
|
|
|
zip archive "*.[hc]"
|
|
|
|
would archive all files in the current directory that end in .h
|
|
or .c.
|
|
|
|
Ranges of characters are supported:
|
|
|
|
zip archive "[a-f]*"
|
|
|
|
would add to the archive all files starting with "a" through
|
|
"f".
|
|
|
|
Negation is also supported, where any character in that position
|
|
not in the list matches. Negation is supported by adding ! or ^
|
|
to the beginning of the list:
|
|
|
|
zip archive "*.[!o]"
|
|
|
|
matches files that don't end in ".o".
|
|
|
|
On WIN32, [] matching needs to be turned on with the -RE option
|
|
to avoid the confusion that names with [ or ] have caused.
|
|
|
|
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) or -i
|
|
(include) options, 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,
|
|
unless this name matches one given with the -x option, or does not
|
|
match any name given with the -i option.
|
|
|
|
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 special character (i.e. ?*[]), or the
|
|
entire argument must be enclosed in double quotes ("").
|
|
|
|
In general, use backslashes or double quotes for paths that have wild-
|
|
cards to make zip do the pattern matching for file paths, and always
|
|
for paths and strings that have spaces or wildcards for -i, -x, -R, -d,
|
|
and -U and anywhere zip needs to process the wildcards.
|
|
|
|
ENVIRONMENT
|
|
The following environment variables are read and used by zip as
|
|
described.
|
|
|
|
ZIPOPT
|
|
contains default options that will be used when running zip.
|
|
The contents of this environment variable will get added to the
|
|
command line just after the zip command.
|
|
|
|
ZIP
|
|
[Not on RISC OS and VMS] see ZIPOPT
|
|
|
|
Zip$Options
|
|
[RISC OS] see ZIPOPT
|
|
|
|
Zip$Exts
|
|
[RISC OS] contains extensions separated by a : that will cause
|
|
native filenames with one of the specified extensions to be
|
|
added to the zip file with basename and extension swapped.
|
|
|
|
ZIP_OPTS
|
|
[VMS] see ZIPOPT
|
|
|
|
SEE ALSO
|
|
compress(1), shar(1L), tar(1), unzip(1L), gzip(1L)
|
|
|
|
DIAGNOSTICS
|
|
The exit status (or error level) approximates the exit codes defined by
|
|
PKWARE and takes on the following values, except under VMS:
|
|
|
|
0 normal; no errors or warnings detected.
|
|
|
|
2 unexpected end of zip file.
|
|
|
|
3 a generic error in the zipfile format was detected. Pro-
|
|
cessing may have completed successfully anyway; some bro-
|
|
ken zipfiles created by other archivers have simple work-
|
|
arounds.
|
|
|
|
4 zip was unable to allocate memory for one or more buffers
|
|
during program initialization.
|
|
|
|
5 a severe error in the zipfile format was detected. Pro-
|
|
cessing probably failed immediately.
|
|
|
|
6 entry too large to be processed (such as input files
|
|
larger than 2 GB when not using Zip64 or trying to read
|
|
an existing archive that is too large) or entry too large
|
|
to be split with zipsplit
|
|
|
|
7 invalid comment format
|
|
|
|
8 zip -T failed or out of memory
|
|
|
|
9 the user aborted zip prematurely with control-C (or simi-
|
|
lar)
|
|
|
|
10 zip encountered an error while using a temp file
|
|
|
|
11 read or seek error
|
|
|
|
12 zip has nothing to do
|
|
|
|
13 missing or empty zip file
|
|
|
|
14 error writing to a file
|
|
|
|
15 zip was unable to create a file to write to
|
|
|
|
16 bad command line parameters
|
|
|
|
18 zip could not open a specified file to read
|
|
|
|
19 zip was compiled with options not supported on this sys-
|
|
tem
|
|
|
|
VMS interprets standard Unix (or PC) return values as other, scarier-
|
|
looking things, so zip instead maps them into VMS-style status codes.
|
|
In general, zip sets VMS Facility = 1955 (0x07A3), Code = 2* Unix_sta-
|
|
tus, and an appropriate Severity (as specified in ziperr.h). More
|
|
details are included in the VMS-specific documentation. See
|
|
[.vms]NOTES.TXT and [.vms]vms_msg_gen.c.
|
|
|
|
BUGS
|
|
zip 3.0 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 3.0 must not be updated by zip 1.1 or PKZIP
|
|
1.10, 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 versions can
|
|
list the contents of the zip file but cannot extract it anyway (because
|
|
of the new compression algorithm). If you do not use encryption and
|
|
use regular disk files, you do not have to care about this problem.
|
|
|
|
Under VMS, not all of the odd file formats are treated properly. 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 trans-
|
|
fer zip files from VMS to MSDOS, type "set file type block" on VMS.
|
|
When transfering from MSDOS to VMS, type "set file type fixed" on VMS.
|
|
In both cases, type "set file type binary" on MSDOS.
|
|
|
|
Under some older VMS versions, zip may hang for file specifications
|
|
that use DECnet syntax foo::*.*.
|
|
|
|
On OS/2, zip cannot match some names, such as those including an excla-
|
|
mation 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 Extended Attributes displayed by DIR is (for
|
|
compatibility) the amount returned by the 16-bit version of DosQuery-
|
|
PathInfo(). Otherwise OS/2 1.3 and 2.0 would report different EA sizes
|
|
when DIRing a file. However, 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. There-
|
|
fore the value reported by zip (which uses this 32-bit-mode size) dif-
|
|
fers 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) 1997-2008 Info-ZIP.
|
|
|
|
Currently distributed under the Info-ZIP license.
|
|
|
|
Copyright (C) 1990-1997 Mark Adler, Richard B. Wales, Jean-loup Gailly,
|
|
Onno van der Linden, Kai Uwe Rommel, Igor Mandrichenko, John Bush and
|
|
Paul Kienitz.
|
|
|
|
Original copyright:
|
|
|
|
Permission is granted to any individual or institution to use, copy, or
|
|
redistribute this software so long as all of the original files are
|
|
included, that it is not sold for profit, and that this copyright
|
|
notice is retained.
|
|
|
|
LIKE ANYTHING ELSE THAT'S FREE, ZIP AND ITS ASSOCIATED UTILITIES 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 using the web page at: www.info-
|
|
zip.org. For bug reports, please include the version of zip (see
|
|
zip -h), the make options used to compile it (see zip -v), the machine
|
|
and operating system in use, and as much additional information as pos-
|
|
sible.
|
|
|
|
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 for-
|
|
mat, and .ZIP filename extension, and for accepting minor changes to
|
|
the file format; to Steve Burg for clarifications on the deflate for-
|
|
mat; to Haruhiko Okumura and Leonid Broukhis for providing some useful
|
|
ideas for the compression algorithm; 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 tireless
|
|
testing and bug-fixing efforts a portable zip would not have been pos-
|
|
sible. 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 and updated
|
|
by E. Gordon for zip 3.0.
|
|
|
|
Info-ZIP 16 June 2008 (v3.0) ZIP(1L)
|