1ZIP(1L) ZIP(1L) 2 3NAME 4 zip - package and compress (archive) files 5 6SYNOPSIS 7 zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] 8 [-n suffixes] [-t date] [-tt date] [zipfile [file ...]] [-xi list] 9 10 zipcloak (see separate man page) 11 12 zipnote (see separate man page) 13 14 zipsplit (see separate man page) 15 16 Note: Command line processing in zip has been changed to support long 17 options and handle all options and arguments more consistently. Some 18 old command lines that depend on command line inconsistencies may no 19 longer work. 20 21DESCRIPTION 22 zip is a compression and file packaging utility for Unix, VMS, MSDOS, 23 OS/2, Windows 9x/NT/XP, Minix, Atari, Macintosh, Amiga, and Acorn RISC 24 OS. It is analogous to a combination of the Unix commands tar(1) and 25 compress(1) and is compatible with PKZIP (Phil Katz's ZIP for MSDOS 26 systems). 27 28 A companion program (unzip(1L)) unpacks zip archives. The zip and 29 unzip(1L) programs can work with archives produced by PKZIP (supporting 30 most PKZIP features up to PKZIP version 4.6), and PKZIP and PKUNZIP can 31 work with archives produced by zip (with some exceptions, notably 32 streamed archives, but recent changes in the zip file standard may 33 facilitate better compatibility). zip version 3.0 is compatible with 34 PKZIP 2.04 and also supports the Zip64 extensions of PKZIP 4.5 which 35 allow archives as well as files to exceed the previous 2 GB limit (4 GB 36 in some cases). zip also now supports bzip2 compression if the bzip2 37 library is included when zip is compiled. Note that PKUNZIP 1.10 can- 38 not extract files produced by PKZIP 2.04 or zip 3.0. You must use PKUN- 39 ZIP 2.04g or unzip 5.0p1 (or later versions) to extract them. 40 41 See the EXAMPLES section at the bottom of this page for examples of 42 some typical uses of zip. 43 44 Large Archives and Zip64. zip automatically uses the Zip64 extensions 45 when files larger than 4 GB are added to an archive, an archive con- 46 taining Zip64 entries is updated (if the resulting archive still needs 47 Zip64), the size of the archive will exceed 4 GB, or when the number of 48 entries in the archive will exceed about 64K. Zip64 is also used for 49 archives streamed from standard input as the size of such archives are 50 not known in advance, but the option -fz- can be used to force zip to 51 create PKZIP 2 compatible archives (as long as Zip64 extensions are not 52 needed). You must use a PKZIP 4.5 compatible unzip, such as unzip 6.0 53 or later, to extract files using the Zip64 extensions. 54 55 In addition, streamed archives, entries encrypted with standard encryp- 56 tion, or split archives created with the pause option may not be com- 57 patible with PKZIP as data descriptors are used and PKZIP at the time 58 of this writing does not support data descriptors (but recent changes 59 in the PKWare published zip standard now include some support for the 60 data descriptor format zip uses). 61 62 Mac OS X. Though previous Mac versions had their own zip port, zip 63 supports Mac OS X as part of the Unix port and most Unix features 64 apply. References to "MacOS" below generally refer to MacOS versions 65 older than OS X. Support for some Mac OS features in the Unix Mac OS X 66 port, such as resource forks, is expected in the next zip release. 67 68 For a brief help on zip and unzip, run each without specifying any 69 parameters on the command line. 70 71USE 72 The program is useful for packaging a set of files for distribution; 73 for archiving files; and for saving disk space by temporarily compress- 74 ing unused files or directories. 75 76 The zip program puts one or more compressed files into a single zip 77 archive, along with information about the files (name, path, date, time 78 of last modification, protection, and check information to verify file 79 integrity). An entire directory structure can be packed into a zip 80 archive with a single command. Compression ratios of 2:1 to 3:1 are 81 common for text files. zip has one compression method (deflation) and 82 can also store files without compression. (If bzip2 support is added, 83 zip can also compress using bzip2 compression, but such entries require 84 a reasonably modern unzip to decompress. When bzip2 compression is 85 selected, it replaces deflation as the default method.) zip automati- 86 cally chooses the better of the two (deflation or store or, if bzip2 is 87 selected, bzip2 or store) for each file to be compressed. 88 89 Command format. The basic command format is 90 91 zip options archive inpath inpath ... 92 93 where archive is a new or existing zip archive and inpath is a direc- 94 tory or file path optionally including wildcards. When given the name 95 of an existing zip archive, zip will replace identically named entries 96 in the zip archive (matching the relative names as stored in the 97 archive) or add entries for new names. For example, if foo.zip exists 98 and contains foo/file1 and foo/file2, and the directory foo contains 99 the files foo/file1 and foo/file3, then: 100 101 zip -r foo.zip foo 102 103 or more concisely 104 105 zip -r foo foo 106 107 will replace foo/file1 in foo.zip and add foo/file3 to foo.zip. After 108 this, foo.zip contains foo/file1, foo/file2, and foo/file3, with 109 foo/file2 unchanged from before. 110 111 So if before the zip command is executed foo.zip has: 112 113 foo/file1 foo/file2 114 115 and directory foo has: 116 117 file1 file3 118 119 then foo.zip will have: 120 121 foo/file1 foo/file2 foo/file3 122 123 where foo/file1 is replaced and foo/file3 is new. 124 125 -@ file lists. If a file list is specified as -@ [Not on MacOS], zip 126 takes the list of input files from standard input instead of from the 127 command line. For example, 128 129 zip -@ foo 130 131 will store the files listed one per line on stdin in foo.zip. 132 133 Under Unix, this option can be used to powerful effect in conjunction 134 with the find (1) command. For example, to archive all the C source 135 files in the current directory and its subdirectories: 136 137 find . -name "*.[ch]" -print | zip source -@ 138 139 (note that the pattern must be quoted to keep the shell from expanding 140 it). 141 142 Streaming input and output. zip will also accept a single dash ("-") 143 as the zip file name, in which case it will write the zip file to stan- 144 dard output, allowing the output to be piped to another program. For 145 example: 146 147 zip -r - . | dd of=/dev/nrst0 obs=16k 148 149 would write the zip output directly to a tape with the specified block 150 size for the purpose of backing up the current directory. 151 152 zip also accepts a single dash ("-") as the name of a file to be com- 153 pressed, in which case it will read the file from standard input, 154 allowing zip to take input from another program. For example: 155 156 tar cf - . | zip backup - 157 158 would compress the output of the tar command for the purpose of backing 159 up the current directory. This generally produces better compression 160 than the previous example using the -r option because zip can take 161 advantage of redundancy between files. The backup can be restored using 162 the command 163 164 unzip -p backup | tar xf - 165 166 When no zip file name is given and stdout is not a terminal, zip acts 167 as a filter, compressing standard input to standard output. For exam- 168 ple, 169 170 tar cf - . | zip | dd of=/dev/nrst0 obs=16k 171 172 is equivalent to 173 174 tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k 175 176 zip archives created in this manner can be extracted with the program 177 funzip which is provided in the unzip package, or by gunzip which is 178 provided in the gzip package (but some gunzip may not support this if 179 zip used the Zip64 extensions). For example: 180 181 dd if=/dev/nrst0 ibs=16k | funzip | tar xvf - 182 183 The stream can also be saved to a file and unzip used. 184 185 If Zip64 support for large files and archives is enabled and zip is 186 used as a filter, zip creates a Zip64 archive that requires a PKZIP 4.5 187 or later compatible unzip to read it. This is to avoid amgibuities in 188 the zip file structure as defined in the current zip standard (PKWARE 189 AppNote) where the decision to use Zip64 needs to be made before data 190 is written for the entry, but for a stream the size of the data is not 191 known at that point. If the data is known to be smaller than 4 GB, the 192 option -fz- can be used to prevent use of Zip64, but zip will exit with 193 an error if Zip64 was in fact needed. zip 3 and unzip 6 and later can 194 read archives with Zip64 entries. Also, zip removes the Zip64 exten- 195 sions if not needed when archive entries are copied (see the -U 196 (--copy) option). 197 198 When directing the output to another file, note that all options should 199 be before the redirection including -x. For example: 200 201 zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile 202 203 Zip files. When changing an existing zip archive, zip will write a 204 temporary file with the new contents, and only replace the old one when 205 the process of creating the new version has been completed without 206 error. 207 208 If the name of the zip archive does not contain an extension, the 209 extension .zip is added. If the name already contains an extension 210 other than .zip, the existing extension is kept unchanged. However, 211 split archives (archives split over multiple files) require the .zip 212 extension on the last split. 213 214 Scanning and reading files. When zip starts, it scans for files to 215 process (if needed). If this scan takes longer than about 5 seconds, 216 zip will display a "Scanning files" message and start displaying 217 progress dots every 2 seconds or every so many entries processed, 218 whichever takes longer. If there is more than 2 seconds between dots 219 it could indicate that finding each file is taking time and could mean 220 a slow network connection for example. (Actually the initial file scan 221 is a two-step process where the directory scan is followed by a sort 222 and these two steps are separated with a space in the dots. If updat- 223 ing an existing archive, a space also appears between the existing file 224 scan and the new file scan.) The scanning files dots are not con- 225 trolled by the -ds dot size option, but the dots are turned off by the 226 -q quiet option. The -sf show files option can be used to scan for 227 files and get the list of files scanned without actually processing 228 them. 229 230 If zip is not able to read a file, it issues a warning but continues. 231 See the -MM option below for more on how zip handles patterns that are 232 not matched and files that are not readable. If some files were 233 skipped, a warning is issued at the end of the zip operation noting how 234 many files were read and how many skipped. 235 236 Command modes. zip now supports two distinct types of command modes, 237 external and internal. The external modes (add, update, and freshen) 238 read files from the file system (as well as from an existing archive) 239 while the internal modes (delete and copy) operate exclusively on 240 entries in an existing archive. 241 242 add 243 Update existing entries and add new files. If the archive does 244 not exist create it. This is the default mode. 245 246 update (-u) 247 Update existing entries if newer on the file system and add new 248 files. If the archive does not exist issue warning then create 249 a new archive. 250 251 freshen (-f) 252 Update existing entries of an archive if newer on the file sys- 253 tem. Does not add new files to the archive. 254 255 delete (-d) 256 Select entries in an existing archive and delete them. 257 258 copy (-U) 259 Select entries in an existing archive and copy them to a new 260 archive. This new mode is similar to update but command line 261 patterns select entries in the existing archive rather than 262 files from the file system and it uses the --out option to write 263 the resulting archive to a new file rather than update the 264 existing archive, leaving the original archive unchanged. 265 266 The new File Sync option (-FS) is also considered a new mode, though it 267 is similar to update. This mode synchronizes the archive with the 268 files on the OS, only replacing files in the archive if the file time 269 or size of the OS file is different, adding new files, and deleting 270 entries from the archive where there is no matching file. As this mode 271 can delete entries from the archive, consider making a backup copy of 272 the archive. 273 274 Also see -DF for creating difference archives. 275 276 See each option description below for details and the EXAMPLES section 277 below for examples. 278 279 Split archives. zip version 3.0 and later can create split archives. 280 A split archive is a standard zip archive split over multiple files. 281 (Note that split archives are not just archives split in to pieces, as 282 the offsets of entries are now based on the start of each split. Con- 283 catenating the pieces together will invalidate these offsets, but unzip 284 can usually deal with it. zip will usually refuse to process such a 285 spliced archive unless the -FF fix option is used to fix the offsets.) 286 287 One use of split archives is storing a large archive on multiple remov- 288 able media. For a split archive with 20 split files the files are typ- 289 ically named (replace ARCHIVE with the name of your archive) 290 ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Note that the 291 last file is the .zip file. In contrast, spanned archives are the 292 original multi-disk archive generally requiring floppy disks and using 293 volume labels to store disk numbers. zip supports split archives but 294 not spanned archives, though a procedure exists for converting split 295 archives of the right size to spanned archives. The reverse is also 296 true, where each file of a spanned archive can be copied in order to 297 files with the above names to create a split archive. 298 299 Use -s to set the split size and create a split archive. The size is 300 given as a number followed optionally by one of k (kB), m (MB), g (GB), 301 or t (TB) (the default is m). The -sp option can be used to pause zip 302 between splits to allow changing removable media, for example, but read 303 the descriptions and warnings for both -s and -sp below. 304 305 Though zip does not update split archives, zip provides the new option 306 -O (--output-file or --out) to allow split archives to be updated and 307 saved in a new archive. For example, 308 309 zip inarchive.zip foo.c bar.c --out outarchive.zip 310 311 reads archive inarchive.zip, even if split, adds the files foo.c and 312 bar.c, and writes the resulting archive to outarchive.zip. If inar- 313 chive.zip is split then outarchive.zip defaults to the same split size. 314 Be aware that if outarchive.zip and any split files that are created 315 with it already exist, these are always overwritten as needed without 316 warning. This may be changed in the future. 317 318 Unicode. Though the zip standard requires storing paths in an archive 319 using a specific character set, in practice zips have stored paths in 320 archives in whatever the local character set is. This creates problems 321 when an archive is created or updated on a system using one character 322 set and then extracted on another system using a different character 323 set. When compiled with Unicode support enabled on platforms that sup- 324 port wide characters, zip now stores, in addition to the standard local 325 path for backward compatibility, the UTF-8 translation of the path. 326 This provides a common universal character set for storing paths that 327 allows these paths to be fully extracted on other systems that support 328 Unicode and to match as close as possible on systems that don't. 329 330 On Win32 systems where paths are internally stored as Unicode but rep- 331 resented in the local character set, it's possible that some paths will 332 be skipped during a local character set directory scan. zip with Uni- 333 code support now can read and store these paths. Note that Win 9x sys- 334 tems and FAT file systems don't fully support Unicode. 335 336 Be aware that console windows on Win32 and Unix, for example, sometimes 337 don't accurately show all characters due to how each operating system 338 switches in character sets for display. However, directory navigation 339 tools should show the correct paths if the needed fonts are loaded. 340 341 Command line format. This version of zip has updated command line pro- 342 cessing and support for long options. 343 344 Short options take the form 345 346 -s[-][s[-]...][value][=value][ value] 347 348 where s is a one or two character short option. A short option that 349 takes a value is last in an argument and anything after it is taken as 350 the value. If the option can be negated and "-" immediately follows 351 the option, the option is negated. Short options can also be given as 352 separate arguments 353 354 -s[-][value][=value][ value] -s[-][value][=value][ value] ... 355 356 Short options in general take values either as part of the same argu- 357 ment or as the following argument. An optional = is also supported. 358 So 359 360 -ttmmddyyyy 361 362 and 363 364 -tt=mmddyyyy 365 366 and 367 368 -tt mmddyyyy 369 370 all work. The -x and -i options accept lists of values and use a 371 slightly different format described below. See the -x and -i options. 372 373 Long options take the form 374 375 --longoption[-][=value][ value] 376 377 where the option starts with --, has a multicharacter name, can include 378 a trailing dash to negate the option (if the option supports it), and 379 can have a value (option argument) specified by preceeding it with = 380 (no spaces). Values can also follow the argument. So 381 382 --before-date=mmddyyyy 383 384 and 385 386 --before-date mmddyyyy 387 388 both work. 389 390 Long option names can be shortened to the shortest unique abbreviation. 391 See the option descriptions below for which support long options. To 392 avoid confusion, avoid abbreviating a negatable option with an embedded 393 dash ("-") at the dash if you plan to negate it (the parser would con- 394 sider a trailing dash, such as for the option --some-option using 395 --some- as the option, as part of the name rather than a negating 396 dash). This may be changed to force the last dash in --some- to be 397 negating in the future. 398 399OPTIONS 400 -a 401 --ascii 402 [Systems using EBCDIC] Translate file to ASCII format. 403 404 -A 405 --adjust-sfx 406 Adjust self-extracting executable archive. A self-extracting 407 executable archive is created by prepending the SFX stub to an 408 existing archive. The -A option tells zip to adjust the entry 409 offsets stored in the archive to take into account this "pream- 410 ble" data. 411 412 Note: self-extracting archives for the Amiga are a special case. At 413 present, only the Amiga port of zip is capable of adjusting or updating 414 these without corrupting them. -J can be used to remove the SFX stub if 415 other updates need to be made. 416 417 -AC 418 --archive-clear 419 [WIN32] Once archive is created (and tested if -T is used, 420 which is recommended), clear the archive bits of files pro- 421 cessed. WARNING: Once the bits are cleared they are cleared. 422 You may want to use the -sf show files option to store the list 423 of files processed in case the archive operation must be 424 repeated. Also consider using the -MM must match option. Be 425 sure to check out -DF as a possibly better way to do incremental 426 backups. 427 428 -AS 429 --archive-set 430 [WIN32] Only include files that have the archive bit set. 431 Directories are not stored when -AS is used, though by default 432 the paths of entries, including directories, are stored as usual 433 and can be used by most unzips to recreate directories. 434 435 The archive bit is set by the operating system when a file is 436 modified and, if used with -AC, -AS can provide an incremental 437 backup capability. However, other applications can modify the 438 archive bit and it may not be a reliable indicator of which 439 files have changed since the last archive operation. Alterna- 440 tive ways to create incremental backups are using -t to use file 441 dates, though this won't catch old files copied to directories 442 being archived, and -DF to create a differential archive. 443 444 -B 445 --binary 446 [VM/CMS and MVS] force file to be read binary (default is text). 447 448 -Bn [TANDEM] set Edit/Enscribe formatting options with n defined as 449 bit 0: Don't add delimiter (Edit/Enscribe) 450 bit 1: Use LF rather than CR/LF as delimiter (Edit/Enscribe) 451 bit 2: Space fill record to maximum record length (Enscribe) 452 bit 3: Trim trailing space (Enscribe) 453 bit 8: Force 30K (Expand) large read for unstructured files 454 455 -b path 456 --temp-path path 457 Use the specified path for the temporary zip archive. For exam- 458 ple: 459 460 zip -b /tmp stuff * 461 462 will put the temporary zip archive in the directory /tmp, copy- 463 ing over stuff.zip to the current directory when done. This 464 option is useful when updating an existing archive and the file 465 system containing this old archive does not have enough space to 466 hold both old and new archives at the same time. It may also be 467 useful when streaming in some cases to avoid the need for data 468 descriptors. Note that using this option may require zip take 469 additional time to copy the archive file when done to the desti- 470 nation file system. 471 472 -c 473 --entry-comments 474 Add one-line comments for each file. File operations (adding, 475 updating) are done first, and the user is then prompted for a 476 one-line comment for each file. Enter the comment followed by 477 return, or just return for no comment. 478 479 -C 480 --preserve-case 481 [VMS] Preserve case all on VMS. Negating this option (-C-) 482 downcases. 483 484 -C2 485 --preserve-case-2 486 [VMS] Preserve case ODS2 on VMS. Negating this option (-C2-) 487 downcases. 488 489 -C5 490 --preserve-case-5 491 [VMS] Preserve case ODS5 on VMS. Negating this option (-C5-) 492 downcases. 493 494 -d 495 --delete 496 Remove (delete) entries from a zip archive. For example: 497 498 zip -d foo foo/tom/junk foo/harry/\* \*.o 499 500 will remove the entry foo/tom/junk, all of the files that start 501 with foo/harry/, and all of the files that end with .o (in any 502 path). Note that shell pathname expansion has been inhibited 503 with backslashes, so that zip can see the asterisks, enabling 504 zip to match on the contents of the zip archive instead of the 505 contents of the current directory. (The backslashes are not 506 used on MSDOS-based platforms.) Can also use quotes to escape 507 the asterisks as in 508 509 zip -d foo foo/tom/junk "foo/harry/*" "*.o" 510 511 Not escaping the asterisks on a system where the shell expands 512 wildcards could result in the asterisks being converted to a 513 list of files in the current directory and that list used to 514 delete entries from the archive. 515 516 Under MSDOS, -d is case sensitive when it matches names in the 517 zip archive. This requires that file names be entered in upper 518 case if they were zipped by PKZIP on an MSDOS system. (We con- 519 sidered making this case insensitive on systems where paths were 520 case insensitive, but it is possible the archive came from a 521 system where case does matter and the archive could include both 522 Bar and bar as separate files in the archive.) But see the new 523 option -ic to ignore case in the archive. 524 525 -db 526 --display-bytes 527 Display running byte counts showing the bytes zipped and the 528 bytes to go. 529 530 -dc 531 --display-counts 532 Display running count of entries zipped and entries to go. 533 534 -dd 535 --display-dots 536 Display dots while each entry is zipped (except on ports that 537 have their own progress indicator). See -ds below for setting 538 dot size. The default is a dot every 10 MB of input file pro- 539 cessed. The -v option also displays dots (previously at a much 540 higher rate than this but now -v also defaults to 10 MB) and 541 this rate is also controlled by -ds. 542 543 -df 544 --datafork 545 [MacOS] Include only data-fork of files zipped into the archive. 546 Good for exporting files to foreign operating-systems. 547 Resource-forks will be ignored at all. 548 549 -dg 550 --display-globaldots 551 Display progress dots for the archive instead of for each file. 552 The command 553 554 zip -qdgds 10m 555 556 will turn off most output except dots every 10 MB. 557 558 -ds size 559 --dot-size size 560 Set amount of input file processed for each dot displayed. See 561 -dd to enable displaying dots. Setting this option implies -dd. 562 Size is in the format nm where n is a number and m is a multi- 563 plier. Currently m can be k (KB), m (MB), g (GB), or t (TB), so 564 if n is 100 and m is k, size would be 100k which is 100 KB. The 565 default is 10 MB. 566 567 The -v option also displays dots and now defaults to 10 MB also. 568 This rate is also controlled by this option. A size of 0 turns 569 dots off. 570 571 This option does not control the dots from the "Scanning files" 572 message as zip scans for input files. The dot size for that is 573 fixed at 2 seconds or a fixed number of entries, whichever is 574 longer. 575 576 -du 577 --display-usize 578 Display the uncompressed size of each entry. 579 580 -dv 581 --display-volume 582 Display the volume (disk) number each entry is being read from, 583 if reading an existing archive, and being written to. 584 585 -D 586 --no-dir-entries 587 Do not create entries in the zip archive for directories. 588 Directory entries are created by default so that their 589 attributes can be saved in the zip archive. The environment 590 variable ZIPOPT can be used to change the default options. For 591 example under Unix with sh: 592 593 ZIPOPT="-D"; export ZIPOPT 594 595 (The variable ZIPOPT can be used for any option, including -i 596 and -x using a new option format detailed below, and can include 597 several options.) The option -D is a shorthand for -x "*/" but 598 the latter previously could not be set as default in the ZIPOPT 599 environment variable as the contents of ZIPOPT gets inserted 600 near the beginning of the command line and the file list had to 601 end at the end of the line. 602 603 This version of zip does allow -x and -i options in ZIPOPT if 604 the form 605 606 -x file file ... @ 607 608 is used, where the @ (an argument that is just @) terminates the 609 list. 610 611 -DF 612 --difference-archive 613 Create an archive that contains all new and changed files since 614 the original archive was created. For this to work, the input 615 file list and current directory must be the same as during the 616 original zip operation. 617 618 For example, if the existing archive was created using 619 620 zip -r foofull . 621 622 from the bar directory, then the command 623 624 zip -r foofull . -DF --out foonew 625 626 also from the bar directory creates the archive foonew with just 627 the files not in foofull and the files where the size or file 628 time of the files do not match those in foofull. 629 630 Note that the timezone environment variable TZ should be set 631 according to the local timezone in order for this option to work 632 correctly. A change in timezone since the original archive was 633 created could result in no times matching and all files being 634 included. 635 636 A possible approach to backing up a directory might be to create 637 a normal archive of the contents of the directory as a full 638 backup, then use this option to create incremental backups. 639 640 -e 641 --encrypt 642 Encrypt the contents of the zip archive using a password which 643 is entered on the terminal in response to a prompt (this will 644 not be echoed; if standard error is not a tty, zip will exit 645 with an error). The password prompt is repeated to save the 646 user from typing errors. 647 648 -E 649 --longnames 650 [OS/2] Use the .LONGNAME Extended Attribute (if found) as file- 651 name. 652 653 -f 654 --freshen 655 Replace (freshen) an existing entry in the zip archive only if 656 it has been modified more recently than the version already in 657 the zip archive; unlike the update option (-u) this will not add 658 files that are not already in the zip archive. For example: 659 660 zip -f foo 661 662 This command should be run from the same directory from which 663 the original zip command was run, since paths stored in zip 664 archives are always relative. 665 666 Note that the timezone environment variable TZ should be set 667 according to the local timezone in order for the -f, -u and -o 668 options to work correctly. 669 670 The reasons behind this are somewhat subtle but have to do with 671 the differences between the Unix-format file times (always in 672 GMT) and most of the other operating systems (always local time) 673 and the necessity to compare the two. A typical TZ value is 674 ``MET-1MEST'' (Middle European time with automatic adjustment 675 for ``summertime'' or Daylight Savings Time). 676 677 The format is TTThhDDD, where TTT is the time zone such as MET, 678 hh is the difference between GMT and local time such as -1 679 above, and DDD is the time zone when daylight savings time is in 680 effect. Leave off the DDD if there is no daylight savings time. 681 For the US Eastern time zone EST5EDT. 682 683 -F 684 --fix 685 -FF 686 --fixfix 687 Fix the zip archive. The -F option can be used if some portions 688 of the archive are missing, but requires a reasonably intact 689 central directory. The input archive is scanned as usual, but 690 zip will ignore some problems. The resulting archive should be 691 valid, but any inconsistent entries will be left out. 692 693 When doubled as in -FF, the archive is scanned from the begin- 694 ning and zip scans for special signatures to identify the limits 695 between the archive members. The single -F is more reliable if 696 the archive is not too much damaged, so try this option first. 697 698 If the archive is too damaged or the end has been truncated, you 699 must use -FF. This is a change from zip 2.32, where the -F 700 option is able to read a truncated archive. The -F option now 701 more reliably fixes archives with minor damage and the -FF 702 option is needed to fix archives where -F might have been suffi- 703 cient before. 704 705 Neither option will recover archives that have been incorrectly 706 transferred in ascii mode instead of binary. After the repair, 707 the -t option of unzip may show that some files have a bad CRC. 708 Such files cannot be recovered; you can remove them from the 709 archive using the -d option of zip. 710 711 Note that -FF may have trouble fixing archives that include an 712 embedded zip archive that was stored (without compression) in 713 the archive and, depending on the damage, it may find the 714 entries in the embedded archive rather than the archive itself. 715 Try -F first as it does not have this problem. 716 717 The format of the fix commands have changed. For example, to 718 fix the damaged archive foo.zip, 719 720 zip -F foo --out foofix 721 722 tries to read the entries normally, copying good entries to the 723 new archive foofix.zip. If this doesn't work, as when the 724 archive is truncated, or if some entries you know are in the 725 archive are missed, then try 726 727 zip -FF foo --out foofixfix 728 729 and compare the resulting archive to the archive created by -F. 730 The -FF option may create an inconsistent archive. Depending on 731 what is damaged, you can then use the -F option to fix that 732 archive. 733 734 A split archive with missing split files can be fixed using -F 735 if you have the last split of the archive (the .zip file). If 736 this file is missing, you must use -FF to fix the archive, which 737 will prompt you for the splits you have. 738 739 Currently the fix options can't recover entries that have a bad 740 checksum or are otherwise damaged. 741 742 -FI 743 --fifo [Unix] Normally zip skips reading any FIFOs (named pipes) 744 encountered, as zip can hang if the FIFO is not being fed. This 745 option tells zip to read the contents of any FIFO it finds. 746 747 -FS 748 --filesync 749 Synchronize the contents of an archive with the files on the OS. 750 Normally when an archive is updated, new files are added and 751 changed files are updated but files that no longer exist on the 752 OS are not deleted from the archive. This option enables a new 753 mode that checks entries in the archive against the file system. 754 If the file time and file size of the entry matches that of the 755 OS file, the entry is copied from the old archive instead of 756 being read from the file system and compressed. If the OS file 757 has changed, the entry is read and compressed as usual. If the 758 entry in the archive does not match a file on the OS, the entry 759 is deleted. Enabling this option should create archives that 760 are the same as new archives, but since existing entries are 761 copied instead of compressed, updating an existing archive with 762 -FS can be much faster than creating a new archive. Also con- 763 sider using -u for updating an archive. 764 765 For this option to work, the archive should be updated from the 766 same directory it was created in so the relative paths match. 767 If few files are being copied from the old archive, it may be 768 faster to create a new archive instead. 769 770 Note that the timezone environment variable TZ should be set 771 according to the local timezone in order for this option to work 772 correctly. A change in timezone since the original archive was 773 created could result in no times matching and recompression of 774 all files. 775 776 This option deletes files from the archive. If you need to pre- 777 serve the original archive, make a copy of the archive first or 778 use the --out option to output the updated archive to a new 779 file. Even though it may be slower, creating a new archive with 780 a new archive name is safer, avoids mismatches between archive 781 and OS paths, and is preferred. 782 783 -g 784 --grow 785 Grow (append to) the specified zip archive, instead of creating 786 a new one. If this operation fails, zip attempts to restore the 787 archive to its original state. If the restoration fails, the 788 archive might become corrupted. This option is ignored when 789 there's no existing archive or when at least one archive member 790 must be updated or deleted. 791 792 -h 793 -? 794 --help 795 Display the zip help information (this also appears if zip is 796 run with no arguments). 797 798 -h2 799 --more-help 800 Display extended help including more on command line format, 801 pattern matching, and more obscure options. 802 803 -i files 804 --include files 805 Include only the specified files, as in: 806 807 zip -r foo . -i \*.c 808 809 which will include only the files that end in .c in the current 810 directory and its subdirectories. (Note for PKZIP users: the 811 equivalent command is 812 813 pkzip -rP foo *.c 814 815 PKZIP does not allow recursion in directories other than the 816 current one.) The backslash avoids the shell filename substitu- 817 tion, so that the name matching is performed by zip at all 818 directory levels. [This is for Unix and other systems where \ 819 escapes the next character. For other systems where the shell 820 does not process * do not use \ and the above is 821 822 zip -r foo . -i *.c 823 824 Examples are for Unix unless otherwise specified.] So to 825 include dir, a directory directly under the current directory, 826 use 827 828 zip -r foo . -i dir/\* 829 830 or 831 832 zip -r foo . -i "dir/*" 833 834 to match paths such as dir/a and dir/b/file.c [on ports without 835 wildcard expansion in the shell such as MSDOS and Windows 836 837 zip -r foo . -i dir/* 838 839 is used.] Note that currently the trailing / is needed for 840 directories (as in 841 842 zip -r foo . -i dir/ 843 844 to include directory dir). 845 846 The long option form of the first example is 847 848 zip -r foo . --include \*.c 849 850 and does the same thing as the short option form. 851 852 Though the command syntax used to require -i at the end of the 853 command line, this version actually allows -i (or --include) 854 anywhere. The list of files terminates at the next argument 855 starting with -, the end of the command line, or the list termi- 856 nator @ (an argument that is just @). So the above can be given 857 as 858 859 zip -i \*.c @ -r foo . 860 861 for example. There must be a space between the option and the 862 first file of a list. For just one file you can use the single 863 value form 864 865 zip -i\*.c -r foo . 866 867 (no space between option and value) or 868 869 zip --include=\*.c -r foo . 870 871 as additional examples. The single value forms are not recom- 872 mended because they can be confusing and, in particular, the 873 -ifile format can cause problems if the first letter of file 874 combines with i to form a two-letter option starting with i. 875 Use -sc to see how your command line will be parsed. 876 877 Also possible: 878 879 zip -r foo . -i@include.lst 880 881 which will only include the files in the current directory and 882 its subdirectories that match the patterns in the file 883 include.lst. 884 885 Files to -i and -x are patterns matching internal archive paths. 886 See -R for more on patterns. 887 888 -I 889 --no-image 890 [Acorn RISC OS] Don't scan through Image files. When used, zip 891 will not consider Image files (eg. DOS partitions or Spark 892 archives when SparkFS is loaded) as directories but will store 893 them as single files. 894 895 For example, if you have SparkFS loaded, zipping a Spark archive 896 will result in a zipfile containing a directory (and its con- 897 tent) while using the 'I' option will result in a zipfile con- 898 taining a Spark archive. Obviously this second case will also be 899 obtained (without the 'I' option) if SparkFS isn't loaded. 900 901 -ic 902 --ignore-case 903 [VMS, WIN32] Ignore case when matching archive entries. This 904 option is only available on systems where the case of files is 905 ignored. On systems with case-insensitive file systems, case is 906 normally ignored when matching files on the file system but is 907 not ignored for -f (freshen), -d (delete), -U (copy), and simi- 908 lar modes when matching against archive entries (currently -f 909 ignores case on VMS) because archive entries can be from systems 910 where case does matter and names that are the same except for 911 case can exist in an archive. The -ic option makes all matching 912 case insensitive. This can result in multiple archive entries 913 matching a command line pattern. 914 915 -j 916 --junk-paths 917 Store just the name of a saved file (junk the path), and do not 918 store directory names. By default, zip will store the full path 919 (relative to the current directory). 920 921 -jj 922 --absolute-path 923 [MacOS] record Fullpath (+ Volname). The complete path including 924 volume will be stored. By default the relative path will be 925 stored. 926 927 -J 928 --junk-sfx 929 Strip any prepended data (e.g. a SFX stub) from the archive. 930 931 -k 932 --DOS-names 933 Attempt to convert the names and paths to conform to MSDOS, 934 store only the MSDOS attribute (just the user write attribute 935 from Unix), and mark the entry as made under MSDOS (even though 936 it was not); for compatibility with PKUNZIP under MSDOS which 937 cannot handle certain names such as those with two dots. 938 939 -l 940 --to-crlf 941 Translate the Unix end-of-line character LF into the MSDOS con- 942 vention CR LF. This option should not be used on binary files. 943 This option can be used on Unix if the zip file is intended for 944 PKUNZIP under MSDOS. If the input files already contain CR LF, 945 this option adds an extra CR. This is to ensure that unzip -a on 946 Unix will get back an exact copy of the original file, to undo 947 the effect of zip -l. See -ll for how binary files are handled. 948 949 -la 950 --log-append 951 Append to existing logfile. Default is to overwrite. 952 953 -lf logfilepath 954 --logfile-path logfilepath 955 Open a logfile at the given path. By default any existing file 956 at that location is overwritten, but the -la option will result 957 in an existing file being opened and the new log information 958 appended to any existing information. Only warnings and errors 959 are written to the log unless the -li option is also given, then 960 all information messages are also written to the log. 961 962 -li 963 --log-info 964 Include information messages, such as file names being zipped, 965 in the log. The default is to only include the command line, 966 any warnings and errors, and the final status. 967 968 -ll 969 --from-crlf 970 Translate the MSDOS end-of-line CR LF into Unix LF. This option 971 should not be used on binary files. This option can be used on 972 MSDOS if the zip file is intended for unzip under Unix. If the 973 file is converted and the file is later determined to be binary 974 a warning is issued and the file is probably corrupted. In this 975 release if -ll detects binary in the first buffer read from a 976 file, zip now issues a warning and skips line end conversion on 977 the file. This check seems to catch all binary files tested, 978 but the original check remains and if a converted file is later 979 determined to be binary that warning is still issued. A new 980 algorithm is now being used for binary detection that should 981 allow line end conversion of text files in UTF-8 and similar 982 encodings. 983 984 -L 985 --license 986 Display the zip license. 987 988 -m 989 --move 990 Move the specified files into the zip archive; actually, this 991 deletes the target directories/files after making the specified 992 zip archive. If a directory becomes empty after removal of the 993 files, the directory is also removed. No deletions are done 994 until zip has created the archive without error. This is useful 995 for conserving disk space, but is potentially dangerous so it is 996 recommended to use it in combination with -T to test the archive 997 before removing all input files. 998 999 -MM 1000 --must-match 1001 All input patterns must match at least one file and all input 1002 files found must be readable. Normally when an input pattern 1003 does not match a file the "name not matched" warning is issued 1004 and when an input file has been found but later is missing or 1005 not readable a missing or not readable warning is issued. In 1006 either case zip continues creating the archive, with missing or 1007 unreadable new files being skipped and files already in the 1008 archive remaining unchanged. After the archive is created, if 1009 any files were not readable zip returns the OPEN error code (18 1010 on most systems) instead of the normal success return (0 on most 1011 systems). With -MM set, zip exits as soon as an input pattern 1012 is not matched (whenever the "name not matched" warning would be 1013 issued) or when an input file is not readable. In either case 1014 zip exits with an OPEN error and no archive is created. 1015 1016 This option is useful when a known list of files is to be zipped 1017 so any missing or unreadable files will result in an error. It 1018 is less useful when used with wildcards, but zip will still exit 1019 with an error if any input pattern doesn't match at least one 1020 file and if any matched files are unreadable. If you want to 1021 create the archive anyway and only need to know if files were 1022 skipped, don't use -MM and just check the return code. Also -lf 1023 could be useful. 1024 1025 -n suffixes 1026 --suffixes suffixes 1027 Do not attempt to compress files named with the given suffixes. 1028 Such files are simply stored (0% compression) in the output zip 1029 file, so that zip doesn't waste its time trying to compress 1030 them. The suffixes are separated by either colons or semi- 1031 colons. For example: 1032 1033 zip -rn .Z:.zip:.tiff:.gif:.snd foo foo 1034 1035 will copy everything from foo into foo.zip, but will store any 1036 files that end in .Z, .zip, .tiff, .gif, or .snd without trying 1037 to compress them (image and sound files often have their own 1038 specialized compression methods). By default, zip does not com- 1039 press files with extensions in the list 1040 .Z:.zip:.zoo:.arc:.lzh:.arj. Such files are stored directly in 1041 the output archive. The environment variable ZIPOPT can be used 1042 to change the default options. For example under Unix with csh: 1043 1044 setenv ZIPOPT "-n .gif:.zip" 1045 1046 To attempt compression on all files, use: 1047 1048 zip -n : foo 1049 1050 The maximum compression option -9 also attempts compression on 1051 all files regardless of extension. 1052 1053 On Acorn RISC OS systems the suffixes are actually filetypes (3 1054 hex digit format). By default, zip does not compress files with 1055 filetypes in the list DDC:D96:68E (i.e. Archives, CFS files and 1056 PackDir files). 1057 1058 -nw 1059 --no-wild 1060 Do not perform internal wildcard processing (shell processing of 1061 wildcards is still done by the shell unless the arguments are 1062 escaped). Useful if a list of paths is being read and no wild- 1063 card substitution is desired. 1064 1065 -N 1066 --notes 1067 [Amiga, MacOS] Save Amiga or MacOS filenotes as zipfile com- 1068 ments. They can be restored by using the -N option of unzip. If 1069 -c is used also, you are prompted for comments only for those 1070 files that do not have filenotes. 1071 1072 -o 1073 --latest-time 1074 Set the "last modified" time of the zip archive to the latest 1075 (oldest) "last modified" time found among the entries in the zip 1076 archive. This can be used without any other operations, if 1077 desired. For example: 1078 1079 zip -o foo 1080 1081 will change the last modified time of foo.zip to the latest time 1082 of the entries in foo.zip. 1083 1084 -O output-file 1085 --output-file output-file 1086 Process the archive changes as usual, but instead of updating 1087 the existing archive, output the new archive to output-file. 1088 Useful for updating an archive without changing the existing 1089 archive and the input archive must be a different file than the 1090 output archive. 1091 1092 This option can be used to create updated split archives. It 1093 can also be used with -U to copy entries from an existing 1094 archive to a new archive. See the EXAMPLES section below. 1095 1096 Another use is converting zip files from one split size to 1097 another. For instance, to convert an archive with 700 MB CD 1098 splits to one with 2 GB DVD splits, can use: 1099 1100 zip -s 2g cd-split.zip --out dvd-split.zip 1101 1102 which uses copy mode. See -U below. Also: 1103 1104 zip -s 0 split.zip --out unsplit.zip 1105 1106 will convert a split archive to a single-file archive. 1107 1108 Copy mode will convert stream entries (using data descriptors 1109 and which should be compatible with most unzips) to normal 1110 entries (which should be compatible with all unzips), except if 1111 standard encryption was used. For archives with encrypted 1112 entries, zipcloak will decrypt the entries and convert them to 1113 normal entries. 1114 1115 -p 1116 --paths 1117 Include relative file paths as part of the names of files stored 1118 in the archive. This is the default. The -j option junks the 1119 paths and just stores the names of the files. 1120 1121 -P password 1122 --password password 1123 Use password to encrypt zipfile entries (if any). THIS IS INSE- 1124 CURE! Many multi-user operating systems provide ways for any 1125 user to see the current command line of any other user; even on 1126 stand-alone systems there is always the threat of over-the- 1127 shoulder peeking. Storing the plaintext password as part of a 1128 command line in an automated script is even worse. Whenever 1129 possible, use the non-echoing, interactive prompt to enter pass- 1130 words. (And where security is truly important, use strong 1131 encryption such as Pretty Good Privacy instead of the relatively 1132 weak standard encryption provided by zipfile utilities.) 1133 1134 -q 1135 --quiet 1136 Quiet mode; eliminate informational messages and comment 1137 prompts. (Useful, for example, in shell scripts and background 1138 tasks). 1139 1140 -Qn 1141 --Q-flag n 1142 [QDOS] store information about the file in the file header with 1143 n defined as 1144 bit 0: Don't add headers for any file 1145 bit 1: Add headers for all files 1146 bit 2: Don't wait for interactive key press on exit 1147 1148 -r 1149 --recurse-paths 1150 Travel the directory structure recursively; for example: 1151 1152 zip -r foo.zip foo 1153 1154 or more concisely 1155 1156 zip -r foo foo 1157 1158 In this case, all the files and directories in foo are saved in 1159 a zip archive named foo.zip, including files with names starting 1160 with ".", since the recursion does not use the shell's file-name 1161 substitution mechanism. If you wish to include only a specific 1162 subset of the files in directory foo and its subdirectories, use 1163 the -i option to specify the pattern of files to be included. 1164 You should not use -r with the name ".*", since that matches 1165 ".." which will attempt to zip up the parent directory (proba- 1166 bly not what was intended). 1167 1168 Multiple source directories are allowed as in 1169 1170 zip -r foo foo1 foo2 1171 1172 which first zips up foo1 and then foo2, going down each direc- 1173 tory. 1174 1175 Note that while wildcards to -r are typically resolved while 1176 recursing down directories in the file system, any -R, -x, and 1177 -i wildcards are applied to internal archive pathnames once the 1178 directories are scanned. To have wildcards apply to files in 1179 subdirectories when recursing on Unix and similar systems where 1180 the shell does wildcard substitution, either escape all wild- 1181 cards or put all arguments with wildcards in quotes. This lets 1182 zip see the wildcards and match files in subdirectories using 1183 them as it recurses. 1184 1185 -R 1186 --recurse-patterns 1187 Travel the directory structure recursively starting at the cur- 1188 rent directory; for example: 1189 1190 zip -R foo "*.c" 1191 1192 In this case, all the files matching *.c in the tree starting at 1193 the current directory are stored into a zip archive named 1194 foo.zip. Note that *.c will match file.c, a/file.c and a/b/.c. 1195 More than one pattern can be listed as separate arguments. Note 1196 for PKZIP users: the equivalent command is 1197 1198 pkzip -rP foo *.c 1199 1200 Patterns are relative file paths as they appear in the archive, 1201 or will after zipping, and can have optional wildcards in them. 1202 For example, given the current directory is foo and under it are 1203 directories foo1 and foo2 and in foo1 is the file bar.c, 1204 1205 zip -R foo/* 1206 1207 will zip up foo, foo/foo1, foo/foo1/bar.c, and foo/foo2. 1208 1209 zip -R */bar.c 1210 1211 will zip up foo/foo1/bar.c. See the note for -r on escaping 1212 wildcards. 1213 1214 -RE 1215 --regex 1216 [WIN32] Before zip 3.0, regular expression list matching was 1217 enabled by default on Windows platforms. Because of confusion 1218 resulting from the need to escape "[" and "]" in names, it is 1219 now off by default for Windows so "[" and "]" are just normal 1220 characters in names. This option enables [] matching again. 1221 1222 -s splitsize 1223 --split-size splitsize 1224 Enable creating a split archive and set the split size. A split 1225 archive is an archive that could be split over many files. As 1226 the archive is created, if the size of the archive reaches the 1227 specified split size, that split is closed and the next split 1228 opened. In general all splits but the last will be the split 1229 size and the last will be whatever is left. If the entire 1230 archive is smaller than the split size a single-file archive is 1231 created. 1232 1233 Split archives are stored in numbered files. For example, if 1234 the output archive is named archive and three splits are 1235 required, the resulting archive will be in the three files 1236 archive.z01, archive.z02, and archive.zip. Do not change the 1237 numbering of these files or the archive will not be readable as 1238 these are used to determine the order the splits are read. 1239 1240 Split size is a number optionally followed by a multiplier. 1241 Currently the number must be an integer. The multiplier can 1242 currently be one of k (kilobytes), m (megabytes), g (gigabytes), 1243 or t (terabytes). As 64k is the minimum split size, numbers 1244 without multipliers default to megabytes. For example, to cre- 1245 ate a split archive called foo with the contents of the bar 1246 directory with splits of 670 MB that might be useful for burning 1247 on CDs, the command: 1248 1249 zip -s 670m -r foo bar 1250 1251 could be used. 1252 1253 Currently the old splits of a split archive are not excluded 1254 from a new archive, but they can be specifically excluded. If 1255 possible, keep the input and output archives out of the path 1256 being zipped when creating split archives. 1257 1258 Using -s without -sp as above creates all the splits where foo 1259 is being written, in this case the current directory. This 1260 split mode updates the splits as the archive is being created, 1261 requiring all splits to remain writable, but creates split 1262 archives that are readable by any unzip that supports split 1263 archives. See -sp below for enabling split pause mode which 1264 allows splits to be written directly to removable media. 1265 1266 The option -sv can be used to enable verbose splitting and pro- 1267 vide details of how the splitting is being done. The -sb option 1268 can be used to ring the bell when zip pauses for the next split 1269 destination. 1270 1271 Split archives cannot be updated, but see the -O (--out) option 1272 for how a split archive can be updated as it is copied to a new 1273 archive. A split archive can also be converted into a single- 1274 file archive using a split size of 0 or negating the -s option: 1275 1276 zip -s 0 split.zip --out single.zip 1277 1278 Also see -U (--copy) for more on using copy mode. 1279 1280 -sb 1281 --split-bell 1282 If splitting and using split pause mode, ring the bell when zip 1283 pauses for each split destination. 1284 1285 -sc 1286 --show-command 1287 Show the command line starting zip as processed and exit. The 1288 new command parser permutes the arguments, putting all options 1289 and any values associated with them before any non-option argu- 1290 ments. This allows an option to appear anywhere in the command 1291 line as long as any values that go with the option go with it. 1292 This option displays the command line as zip sees it, including 1293 any arguments from the environment such as from the ZIPOPT vari- 1294 able. Where allowed, options later in the command line can 1295 override options earlier in the command line. 1296 1297 -sf 1298 --show-files 1299 Show the files that would be operated on, then exit. For 1300 instance, if creating a new archive, this will list the files 1301 that would be added. If the option is negated, -sf-, output 1302 only to an open log file. Screen display is not recommended for 1303 large lists. 1304 1305 -so 1306 --show-options 1307 Show all available options supported by zip as compiled on the 1308 current system. As this command reads the option table, it 1309 should include all options. Each line includes the short option 1310 (if defined), the long option (if defined), the format of any 1311 value that goes with the option, if the option can be negated, 1312 and a small description. The value format can be no value, 1313 required value, optional value, single character value, number 1314 value, or a list of values. The output of this option is not 1315 intended to show how to use any option but only show what 1316 options are available. 1317 1318 -sp 1319 --split-pause 1320 If splitting is enabled with -s, enable split pause mode. This 1321 creates split archives as -s does, but stream writing is used so 1322 each split can be closed as soon as it is written and zip will 1323 pause between each split to allow changing split destination or 1324 media. 1325 1326 Though this split mode allows writing splits directly to remov- 1327 able media, it uses stream archive format that may not be read- 1328 able by some unzips. Before relying on splits created with -sp, 1329 test a split archive with the unzip you will be using. 1330 1331 To convert a stream split archive (created with -sp) to a stan- 1332 dard archive see the --out option. 1333 1334 -su 1335 --show-unicode 1336 As -sf, but also show Unicode version of the path if exists. 1337 1338 -sU 1339 --show-just-unicode 1340 As -sf, but only show Unicode version of the path if exists, 1341 otherwise show the standard version of the path. 1342 1343 -sv 1344 --split-verbose 1345 Enable various verbose messages while splitting, showing how the 1346 splitting is being done. 1347 1348 -S 1349 --system-hidden 1350 [MSDOS, OS/2, WIN32 and ATARI] Include system and hidden files. 1351 [MacOS] Includes finder invisible files, which are ignored oth- 1352 erwise. 1353 1354 -t mmddyyyy 1355 --from-date mmddyyyy 1356 Do not operate on files modified prior to the specified date, 1357 where mm is the month (00-12), dd is the day of the month 1358 (01-31), and yyyy is the year. The ISO 8601 date format 1359 yyyy-mm-dd is also accepted. For example: 1360 1361 zip -rt 12071991 infamy foo 1362 1363 zip -rt 1991-12-07 infamy foo 1364 1365 will add all the files in foo and its subdirectories that were 1366 last modified on or after 7 December 1991, to the zip archive 1367 infamy.zip. 1368 1369 -tt mmddyyyy 1370 --before-date mmddyyyy 1371 Do not operate on files modified after or at the specified date, 1372 where mm is the month (00-12), dd is the day of the month 1373 (01-31), and yyyy is the year. The ISO 8601 date format 1374 yyyy-mm-dd is also accepted. For example: 1375 1376 zip -rtt 11301995 infamy foo 1377 1378 zip -rtt 1995-11-30 infamy foo 1379 1380 will add all the files in foo and its subdirectories that were 1381 last modified before 30 November 1995, to the zip archive 1382 infamy.zip. 1383 1384 -T 1385 --test 1386 Test the integrity of the new zip file. If the check fails, the 1387 old zip file is unchanged and (with the -m option) no input 1388 files are removed. 1389 1390 -TT cmd 1391 --unzip-command cmd 1392 Use command cmd instead of 'unzip -tqq' to test an archive when 1393 the -T option is used. On Unix, to use a copy of unzip in the 1394 current directory instead of the standard system unzip, could 1395 use: 1396 1397 zip archive file1 file2 -T -TT "./unzip -tqq" 1398 1399 In cmd, {} is replaced by the name of the temporary archive, 1400 otherwise the name of the archive is appended to the end of the 1401 command. The return code is checked for success (0 on Unix). 1402 1403 -u 1404 --update 1405 Replace (update) an existing entry in the zip archive only if it 1406 has been modified more recently than the version already in the 1407 zip archive. For example: 1408 1409 zip -u stuff * 1410 1411 will add any new files in the current directory, and update any 1412 files which have been modified since the zip archive stuff.zip 1413 was last created/modified (note that zip will not try to pack 1414 stuff.zip into itself when you do this). 1415 1416 Note that the -u option with no input file arguments acts like 1417 the -f (freshen) option. 1418 1419 -U 1420 --copy-entries 1421 Copy entries from one archive to another. Requires the --out 1422 option to specify a different output file than the input 1423 archive. Copy mode is the reverse of -d delete. When delete is 1424 being used with --out, the selected entries are deleted from the 1425 archive and all other entries are copied to the new archive, 1426 while copy mode selects the files to include in the new archive. 1427 Unlike -u update, input patterns on the command line are matched 1428 against archive entries only and not the file system files. For 1429 instance, 1430 1431 zip inarchive "*.c" --copy --out outarchive 1432 1433 copies entries with names ending in .c from inarchive to out- 1434 archive. The wildcard must be escaped on some systems to pre- 1435 vent the shell from substituting names of files from the file 1436 system which may have no relevance to the entries in the 1437 archive. 1438 1439 If no input files appear on the command line and --out is used, 1440 copy mode is assumed: 1441 1442 zip inarchive --out outarchive 1443 1444 This is useful for changing split size for instance. Encrypting 1445 and decrypting entries is not yet supported using copy mode. 1446 Use zipcloak for that. 1447 1448 -UN v 1449 --unicode v 1450 Determine what zip should do with Unicode file names. zip 3.0, 1451 in addition to the standard file path, now includes the UTF-8 1452 translation of the path if the entry path is not entirely 7-bit 1453 ASCII. When an entry is missing the Unicode path, zip reverts 1454 back to the standard file path. The problem with using the 1455 standard path is this path is in the local character set of the 1456 zip that created the entry, which may contain characters that 1457 are not valid in the character set being used by the unzip. 1458 When zip is reading an archive, if an entry also has a Unicode 1459 path, zip now defaults to using the Unicode path to recreate the 1460 standard path using the current local character set. 1461 1462 This option can be used to determine what zip should do with 1463 this path if there is a mismatch between the stored standard 1464 path and the stored UTF-8 path (which can happen if the standard 1465 path was updated). In all cases, if there is a mismatch it is 1466 assumed that the standard path is more current and zip uses 1467 that. Values for v are 1468 1469 q - quit if paths do not match 1470 1471 w - warn, continue with standard path 1472 1473 i - ignore, continue with standard path 1474 1475 n - no Unicode, do not use Unicode paths 1476 1477 The default is to warn and continue. 1478 1479 Characters that are not valid in the current character set are 1480 escaped as #Uxxxx and #Lxxxxxx, where x is an ASCII character 1481 for a hex digit. The first is used if a 16-bit character number 1482 is sufficient to represent the Unicode character and the second 1483 if the character needs more than 16 bits to represent it's Uni- 1484 code character code. Setting -UN to 1485 1486 e - escape 1487 1488 as in 1489 1490 zip archive -sU -UN=e 1491 1492 forces zip to escape all characters that are not printable 7-bit 1493 ASCII. 1494 1495 Normally zip stores UTF-8 directly in the standard path field on 1496 systems where UTF-8 is the current character set and stores the 1497 UTF-8 in the new extra fields otherwise. The option 1498 1499 u - UTF-8 1500 1501 as in 1502 1503 zip archive dir -r -UN=UTF8 1504 1505 forces zip to store UTF-8 as native in the archive. Note that 1506 storing UTF-8 directly is the default on Unix systems that sup- 1507 port it. This option could be useful on Windows systems where 1508 the escaped path is too large to be a valid path and the UTF-8 1509 version of the path is smaller, but native UTF-8 is not backward 1510 compatible on Windows systems. 1511 1512 -v 1513 --verbose 1514 Verbose mode or print diagnostic version info. 1515 1516 Normally, when applied to real operations, this option enables 1517 the display of a progress indicator during compression (see -dd 1518 for more on dots) and requests verbose diagnostic info about 1519 zipfile structure oddities. 1520 1521 However, when -v is the only command line argument a diagnostic 1522 screen is printed instead. This should now work even if stdout 1523 is redirected to a file, allowing easy saving of the information 1524 for sending with bug reports to Info-ZIP. The version screen 1525 provides the help screen header with program name, version, and 1526 release date, some pointers to the Info-ZIP home and distribu- 1527 tion sites, and shows information about the target environment 1528 (compiler type and version, OS version, compilation date and the 1529 enabled optional features used to create the zip executable). 1530 1531 -V 1532 --VMS-portable 1533 [VMS] Save VMS file attributes. (Files are truncated at EOF.) 1534 When a -V archive is unpacked on a non-VMS system, some file 1535 types (notably Stream_LF text files and pure binary files 1536 like fixed-512) should be extracted intact. Indexed files and 1537 file types with embedded record sizes (notably variable-length 1538 record types) will probably be seen as corrupt elsewhere. 1539 1540 -VV 1541 --VMS-specific 1542 [VMS] Save VMS file attributes, and all allocated blocks in a 1543 file, including any data beyond EOF. Useful for moving ill- 1544 formed files among VMS systems. When a -VV archive is 1545 unpacked on a non-VMS system, almost all files will appear cor- 1546 rupt. 1547 1548 -w 1549 --VMS-versions 1550 [VMS] Append the version number of the files to the name, 1551 including multiple versions of files. Default is to use only 1552 the most recent version of a specified file. 1553 1554 -ww 1555 --VMS-dot-versions 1556 [VMS] Append the version number of the files to the name, 1557 including multiple versions of files, using the .nnn format. 1558 Default is to use only the most recent version of a specified 1559 file. 1560 1561 -ws 1562 --wild-stop-dirs 1563 Wildcards match only at a directory level. Normally zip handles 1564 paths as strings and given the paths 1565 1566 /foo/bar/dir/file1.c 1567 1568 /foo/bar/file2.c 1569 1570 an input pattern such as 1571 1572 /foo/bar/* 1573 1574 normally would match both paths, the * matching dir/file1.c and 1575 file2.c. Note that in the first case a directory boundary (/) 1576 was crossed in the match. With -ws no directory bounds will be 1577 included in the match, making wildcards local to a specific 1578 directory level. So, with -ws enabled, only the second path 1579 would be matched. 1580 1581 When using -ws, use ** to match across directory boundaries as * 1582 does normally. 1583 1584 -x files 1585 --exclude files 1586 Explicitly exclude the specified files, as in: 1587 1588 zip -r foo foo -x \*.o 1589 1590 which will include the contents of foo in foo.zip while exclud- 1591 ing all the files that end in .o. The backslash avoids the 1592 shell filename substitution, so that the name matching is per- 1593 formed by zip at all directory levels. 1594 1595 Also possible: 1596 1597 zip -r foo foo -x@exclude.lst 1598 1599 which will include the contents of foo in foo.zip while exclud- 1600 ing all the files that match the patterns in the file 1601 exclude.lst. 1602 1603 The long option forms of the above are 1604 1605 zip -r foo foo --exclude \*.o 1606 1607 and 1608 1609 zip -r foo foo --exclude @exclude.lst 1610 1611 Multiple patterns can be specified, as in: 1612 1613 zip -r foo foo -x \*.o \*.c 1614 1615 If there is no space between -x and the pattern, just one value 1616 is assumed (no list): 1617 1618 zip -r foo foo -x\*.o 1619 1620 See -i for more on include and exclude. 1621 1622 -X 1623 --no-extra 1624 Do not save extra file attributes (Extended Attributes on OS/2, 1625 uid/gid and file times on Unix). The zip format uses extra 1626 fields to include additional information for each entry. Some 1627 extra fields are specific to particular systems while others are 1628 applicable to all systems. Normally when zip reads entries from 1629 an existing archive, it reads the extra fields it knows, strips 1630 the rest, and adds the extra fields applicable to that system. 1631 With -X, zip strips all old fields and only includes the Unicode 1632 and Zip64 extra fields (currently these two extra fields cannot 1633 be disabled). 1634 1635 Negating this option, -X-, includes all the default extra 1636 fields, but also copies over any unrecognized extra fields. 1637 1638 -y 1639 --symlinks 1640 For UNIX and VMS (V8.3 and later), store symbolic links as such 1641 in the zip archive, instead of compressing and storing the file 1642 referred to by the link. This can avoid multiple copies of 1643 files being included in the archive as zip recurses the direc- 1644 tory trees and accesses files directly and by links. 1645 1646 -z 1647 --archive-comment 1648 Prompt for a multi-line comment for the entire zip archive. The 1649 comment is ended by a line containing just a period, or an end 1650 of file condition (^D on Unix, ^Z on MSDOS, OS/2, and VMS). The 1651 comment can be taken from a file: 1652 1653 zip -z foo < foowhat 1654 1655 -Z cm 1656 --compression-method cm 1657 Set the default compression method. Currently the main methods 1658 supported by zip are store and deflate. Compression method can 1659 be set to: 1660 1661 store - Setting the compression method to store forces zip to 1662 store entries with no compression. This is generally faster 1663 than compressing entries, but results in no space savings. This 1664 is the same as using -0 (compression level zero). 1665 1666 deflate - This is the default method for zip. If zip determines 1667 that storing is better than deflation, the entry will be stored 1668 instead. 1669 1670 bzip2 - If bzip2 support is compiled in, this compression method 1671 also becomes available. Only some modern unzips currently sup- 1672 port the bzip2 compression method, so test the unzip you will be 1673 using before relying on archives using this method (compression 1674 method 12). 1675 1676 For example, to add bar.c to archive foo using bzip2 compres- 1677 sion: 1678 1679 zip -Z bzip2 foo bar.c 1680 1681 The compression method can be abbreviated: 1682 1683 zip -Zb foo bar.c 1684 1685 -# 1686 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9) 1687 Regulate the speed of compression using the specified digit #, 1688 where -0 indicates no compression (store all files), -1 indi- 1689 cates the fastest compression speed (less compression) and -9 1690 indicates the slowest compression speed (optimal compression, 1691 ignores the suffix list). The default compression level is -6. 1692 1693 Though still being worked, the intention is this setting will 1694 control compression speed for all compression methods. Cur- 1695 rently only deflation is controlled. 1696 1697 -! 1698 --use-privileges 1699 [WIN32] Use priviliges (if granted) to obtain all aspects of 1700 WinNT security. 1701 1702 -@ 1703 --names-stdin 1704 Take the list of input files from standard input. Only one file- 1705 name per line. 1706 1707 -$ 1708 --volume-label 1709 [MSDOS, OS/2, WIN32] Include the volume label for the drive 1710 holding the first file to be compressed. If you want to include 1711 only the volume label or to force a specific drive, use the 1712 drive name as first file name, as in: 1713 1714 zip -$ foo a: c:bar 1715 1716EXAMPLES 1717 The simplest example: 1718 1719 zip stuff * 1720 1721 creates the archive stuff.zip (assuming it does not exist) and puts all 1722 the files in the current directory in it, in compressed form (the .zip 1723 suffix is added automatically, unless the archive name contains a dot 1724 already; this allows the explicit specification of other suffixes). 1725 1726 Because of the way the shell on Unix does filename substitution, files 1727 starting with "." are not included; to include these as well: 1728 1729 zip stuff .* * 1730 1731 Even this will not include any subdirectories from the current direc- 1732 tory. 1733 1734 To zip up an entire directory, the command: 1735 1736 zip -r foo foo 1737 1738 creates the archive foo.zip, containing all the files and directories 1739 in the directory foo that is contained within the current directory. 1740 1741 You may want to make a zip archive that contains the files in foo, 1742 without recording the directory name, foo. You can use the -j option 1743 to leave off the paths, as in: 1744 1745 zip -j foo foo/* 1746 1747 If you are short on disk space, you might not have enough room to hold 1748 both the original directory and the corresponding compressed zip 1749 archive. In this case, you can create the archive in steps using the 1750 -m option. If foo contains the subdirectories tom, dick, and harry, 1751 you can: 1752 1753 zip -rm foo foo/tom 1754 zip -rm foo foo/dick 1755 zip -rm foo foo/harry 1756 1757 where the first command creates foo.zip, and the next two add to it. 1758 At the completion of each zip command, the last created archive is 1759 deleted, making room for the next zip command to function. 1760 1761 Use -s to set the split size and create a split archive. The size is 1762 given as a number followed optionally by one of k (kB), m (MB), g (GB), 1763 or t (TB). The command 1764 1765 zip -s 2g -r split.zip foo 1766 1767 creates a split archive of the directory foo with splits no bigger than 1768 2 GB each. If foo contained 5 GB of contents and the contents were 1769 stored in the split archive without compression (to make this example 1770 simple), this would create three splits, split.z01 at 2 GB, split.z02 1771 at 2 GB, and split.zip at a little over 1 GB. 1772 1773 The -sp option can be used to pause zip between splits to allow chang- 1774 ing removable media, for example, but read the descriptions and warn- 1775 ings for both -s and -sp below. 1776 1777 Though zip does not update split archives, zip provides the new option 1778 -O (--output-file) to allow split archives to be updated and saved in a 1779 new archive. For example, 1780 1781 zip inarchive.zip foo.c bar.c --out outarchive.zip 1782 1783 reads archive inarchive.zip, even if split, adds the files foo.c and 1784 bar.c, and writes the resulting archive to outarchive.zip. If inar- 1785 chive.zip is split then outarchive.zip defaults to the same split size. 1786 Be aware that outarchive.zip and any split files that are created with 1787 it are always overwritten without warning. This may be changed in the 1788 future. 1789 1790PATTERN MATCHING 1791 This section applies only to Unix. Watch this space for details on 1792 MSDOS and VMS operation. However, the special wildcard characters * 1793 and [] below apply to at least MSDOS also. 1794 1795 The Unix shells (sh, csh, bash, and others) normally do filename sub- 1796 stitution (also called "globbing") on command arguments. Generally the 1797 special characters are: 1798 1799 ? match any single character 1800 1801 * match any number of characters (including none) 1802 1803 [] match any character in the range indicated within the brackets 1804 (example: [a-f], [0-9]). This form of wildcard matching allows 1805 a user to specify a list of characters between square brackets 1806 and if any of the characters match the expression matches. For 1807 example: 1808 1809 zip archive "*.[hc]" 1810 1811 would archive all files in the current directory that end in .h 1812 or .c. 1813 1814 Ranges of characters are supported: 1815 1816 zip archive "[a-f]*" 1817 1818 would add to the archive all files starting with "a" through 1819 "f". 1820 1821 Negation is also supported, where any character in that position 1822 not in the list matches. Negation is supported by adding ! or ^ 1823 to the beginning of the list: 1824 1825 zip archive "*.[!o]" 1826 1827 matches files that don't end in ".o". 1828 1829 On WIN32, [] matching needs to be turned on with the -RE option 1830 to avoid the confusion that names with [ or ] have caused. 1831 1832 When these characters are encountered (without being escaped with a 1833 backslash or quotes), the shell will look for files relative to the 1834 current path that match the pattern, and replace the argument with a 1835 list of the names that matched. 1836 1837 The zip program can do the same matching on names that are in the zip 1838 archive being modified or, in the case of the -x (exclude) or -i 1839 (include) options, on the list of files to be operated on, by using 1840 backslashes or quotes to tell the shell not to do the name expansion. 1841 In general, when zip encounters a name in the list of files to do, it 1842 first looks for the name in the file system. If it finds it, it then 1843 adds it to the list of files to do. If it does not find it, it looks 1844 for the name in the zip archive being modified (if it exists), using 1845 the pattern matching characters described above, if present. For each 1846 match, it will add that name to the list of files to be processed, 1847 unless this name matches one given with the -x option, or does not 1848 match any name given with the -i option. 1849 1850 The pattern matching includes the path, and so patterns like \*.o match 1851 names that end in ".o", no matter what the path prefix is. Note that 1852 the backslash must precede every special character (i.e. ?*[]), or the 1853 entire argument must be enclosed in double quotes (""). 1854 1855 In general, use backslashes or double quotes for paths that have wild- 1856 cards to make zip do the pattern matching for file paths, and always 1857 for paths and strings that have spaces or wildcards for -i, -x, -R, -d, 1858 and -U and anywhere zip needs to process the wildcards. 1859 1860ENVIRONMENT 1861 The following environment variables are read and used by zip as 1862 described. 1863 1864 ZIPOPT 1865 contains default options that will be used when running zip. 1866 The contents of this environment variable will get added to the 1867 command line just after the zip command. 1868 1869 ZIP 1870 [Not on RISC OS and VMS] see ZIPOPT 1871 1872 Zip$Options 1873 [RISC OS] see ZIPOPT 1874 1875 Zip$Exts 1876 [RISC OS] contains extensions separated by a : that will cause 1877 native filenames with one of the specified extensions to be 1878 added to the zip file with basename and extension swapped. 1879 1880 ZIP_OPTS 1881 [VMS] see ZIPOPT 1882 1883SEE ALSO 1884 compress(1), shar(1L), tar(1), unzip(1L), gzip(1L) 1885 1886DIAGNOSTICS 1887 The exit status (or error level) approximates the exit codes defined by 1888 PKWARE and takes on the following values, except under VMS: 1889 1890 0 normal; no errors or warnings detected. 1891 1892 2 unexpected end of zip file. 1893 1894 3 a generic error in the zipfile format was detected. Pro- 1895 cessing may have completed successfully anyway; some bro- 1896 ken zipfiles created by other archivers have simple work- 1897 arounds. 1898 1899 4 zip was unable to allocate memory for one or more buffers 1900 during program initialization. 1901 1902 5 a severe error in the zipfile format was detected. Pro- 1903 cessing probably failed immediately. 1904 1905 6 entry too large to be processed (such as input files 1906 larger than 2 GB when not using Zip64 or trying to read 1907 an existing archive that is too large) or entry too large 1908 to be split with zipsplit 1909 1910 7 invalid comment format 1911 1912 8 zip -T failed or out of memory 1913 1914 9 the user aborted zip prematurely with control-C (or simi- 1915 lar) 1916 1917 10 zip encountered an error while using a temp file 1918 1919 11 read or seek error 1920 1921 12 zip has nothing to do 1922 1923 13 missing or empty zip file 1924 1925 14 error writing to a file 1926 1927 15 zip was unable to create a file to write to 1928 1929 16 bad command line parameters 1930 1931 18 zip could not open a specified file to read 1932 1933 19 zip was compiled with options not supported on this sys- 1934 tem 1935 1936 VMS interprets standard Unix (or PC) return values as other, scarier- 1937 looking things, so zip instead maps them into VMS-style status codes. 1938 In general, zip sets VMS Facility = 1955 (0x07A3), Code = 2* Unix_sta- 1939 tus, and an appropriate Severity (as specified in ziperr.h). More 1940 details are included in the VMS-specific documentation. See 1941 [.vms]NOTES.TXT and [.vms]vms_msg_gen.c. 1942 1943BUGS 1944 zip 3.0 is not compatible with PKUNZIP 1.10. Use zip 1.1 to produce zip 1945 files which can be extracted by PKUNZIP 1.10. 1946 1947 zip files produced by zip 3.0 must not be updated by zip 1.1 or PKZIP 1948 1.10, if they contain encrypted members or if they have been produced 1949 in a pipe or on a non-seekable device. The old versions of zip or PKZIP 1950 would create an archive with an incorrect format. The old versions can 1951 list the contents of the zip file but cannot extract it anyway (because 1952 of the new compression algorithm). If you do not use encryption and 1953 use regular disk files, you do not have to care about this problem. 1954 1955 Under VMS, not all of the odd file formats are treated properly. Only 1956 stream-LF format zip files are expected to work with zip. Others can 1957 be converted using Rahul Dhesi's BILF program. This version of zip 1958 handles some of the conversion internally. When using Kermit to trans- 1959 fer zip files from VMS to MSDOS, type "set file type block" on VMS. 1960 When transfering from MSDOS to VMS, type "set file type fixed" on VMS. 1961 In both cases, type "set file type binary" on MSDOS. 1962 1963 Under some older VMS versions, zip may hang for file specifications 1964 that use DECnet syntax foo::*.*. 1965 1966 On OS/2, zip cannot match some names, such as those including an excla- 1967 mation mark or a hash sign. This is a bug in OS/2 itself: the 32-bit 1968 DosFindFirst/Next don't find such names. Other programs such as GNU 1969 tar are also affected by this bug. 1970 1971 Under OS/2, the amount of Extended Attributes displayed by DIR is (for 1972 compatibility) the amount returned by the 16-bit version of DosQuery- 1973 PathInfo(). Otherwise OS/2 1.3 and 2.0 would report different EA sizes 1974 when DIRing a file. However, the structure layout returned by the 1975 32-bit DosQueryPathInfo() is a bit different, it uses extra padding 1976 bytes and link pointers (it's a linked list) to have all fields on 1977 4-byte boundaries for portability to future RISC OS/2 versions. There- 1978 fore the value reported by zip (which uses this 32-bit-mode size) dif- 1979 fers from that reported by DIR. zip stores the 32-bit format for 1980 portability, even the 16-bit MS-C-compiled version running on OS/2 1.3, 1981 so even this one shows the 32-bit-mode size. 1982 1983AUTHORS 1984 Copyright (C) 1997-2008 Info-ZIP. 1985 1986 Currently distributed under the Info-ZIP license. 1987 1988 Copyright (C) 1990-1997 Mark Adler, Richard B. Wales, Jean-loup Gailly, 1989 Onno van der Linden, Kai Uwe Rommel, Igor Mandrichenko, John Bush and 1990 Paul Kienitz. 1991 1992 Original copyright: 1993 1994 Permission is granted to any individual or institution to use, copy, or 1995 redistribute this software so long as all of the original files are 1996 included, that it is not sold for profit, and that this copyright 1997 notice is retained. 1998 1999 LIKE ANYTHING ELSE THAT'S FREE, ZIP AND ITS ASSOCIATED UTILITIES ARE 2000 PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED 2001 OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY 2002 DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. 2003 2004 Please send bug reports and comments using the web page at: www.info- 2005 zip.org. For bug reports, please include the version of zip (see 2006 zip -h), the make options used to compile it (see zip -v), the machine 2007 and operating system in use, and as much additional information as pos- 2008 sible. 2009 2010ACKNOWLEDGEMENTS 2011 Thanks to R. P. Byrne for his Shrink.Pas program, which inspired this 2012 project, and from which the shrink algorithm was stolen; to Phil Katz 2013 for placing in the public domain the zip file format, compression for- 2014 mat, and .ZIP filename extension, and for accepting minor changes to 2015 the file format; to Steve Burg for clarifications on the deflate for- 2016 mat; to Haruhiko Okumura and Leonid Broukhis for providing some useful 2017 ideas for the compression algorithm; to Keith Petersen, Rich Wales, 2018 Hunter Goatley and Mark Adler for providing a mailing list and ftp site 2019 for the Info-ZIP group to use; and most importantly, to the Info-ZIP 2020 group itself (listed in the file infozip.who) without whose tireless 2021 testing and bug-fixing efforts a portable zip would not have been pos- 2022 sible. Finally we should thank (blame) the first Info-ZIP moderator, 2023 David Kirschbaum, for getting us into this mess in the first place. 2024 The manual page was rewritten for Unix by R. P. C. Rodgers and updated 2025 by E. Gordon for zip 3.0. 2026 2027Info-ZIP 16 June 2008 (v3.0) ZIP(1L) 2028