12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027 |
- 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)
|