home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / packer / zip19 / zip.doc < prev    next >
Text File  |  1994-02-03  |  24KB  |  525 lines

  1.  
  2. ZIP(1)                   USER COMMANDS                     ZIP(1)
  3.  
  4. NAME
  5.      zip, zipcloak, zipnote,  zipsplit  -  package  and  compress
  6.      (archive) files
  7.  
  8. SYNOPSIS
  9.      zip [ -cdeEfghjklmoqruwyz@ ] [ -b temppath ] [ -n suffixes ]
  10.      [ -t mmddyy ] [ zipfile list ] [ -x list ]
  11.  
  12.      zipcloak [ -d ] [ -b path ] zipfile
  13.  
  14.      zipnote [ -w ] [ -b path ] zipfile
  15.  
  16.      zipsplit [ -ti ] [ -n size ] [ -b path ] zipfile
  17.  
  18. DESCRIPTION
  19.      zip is a compression and file packaging  utility  for  Unix,
  20.      VMS,  MSDOS,  OS/2,  Windows NT, Minix, Atari and Macintosh.
  21.      It is analogous to a combination of tar and compress and  is
  22.      compatible with PKZIP (Phil Katz ZIP) for MSDOS systems.
  23.  
  24.      There is a companion to zip called unzip (of  course)  which
  25.      you  should  be able to find the same place you got zip. zip
  26.      and unzip can work with files produced by PKZIP under MSDOS,
  27.      and PKZIP and PKUNZIP can work with files produced by zip.
  28.  
  29.      zip version 1.9 is compatible with pkzip 1.93a.   Note  that
  30.      pkunzip 1.10 cannot extract files produced by pkzip 1.93a or
  31.      zip 1.9b. You must use pkunzip 1.93a or unzip 5.0 to extract
  32.      them.
  33.  
  34.      For a brief help on zip and unzip, run each without specify-
  35.      ing any parameters on the command line.
  36.  
  37.      zip puts one or more compressed files  into  a  single  "zip
  38.      file"  along with information about the files, including the
  39.      name, path if requested, date and time last  modified,  pro-
  40.      tection,  and  check  information  to verify the fidelity of
  41.      each entry.  zip can also be used as a  filter,  compressing
  42.      standard  input  to standard output.  zip can pack an entire
  43.      directory structure in a zip file  with  a  single  command.
  44.      Compression  ratios of 2:1 to 3:1 are common for text files.
  45.      zip has one compression  method  (deflation)  and  can  also
  46.      store  files  without  compression. It automatically chooses
  47.      the better of the two for each file to be compressed.
  48.  
  49.      zip is useful for packaging a set of files to send to  some-
  50.      one  or for distribution; for archiving or backing up files;
  51.      and for saving disk space by temporarily compressing  unused
  52.      files or directories.
  53.  
  54. HOW TO USE ZIP
  55.      The simplest use of zip is as follows:
  56.  
  57.           zip stuff *
  58.  
  59.      This will create the file "stuff.zip" (assuming it does  not
  60.      exist)  and  put  all  the files in the current directory in
  61.      stuff.zip in a compressed form.  The .zip  suffix  is  added
  62.      automatically,  unless  that  file name given contains a dot
  63.      already.  This allows specifying suffixes other than ".zip".
  64.  
  65.      Because of the way the  shell  does  filename  substitution,
  66.      files  that  start  with a "." are not included.  To include
  67.      those as well, you can:
  68.  
  69.           zip stuff .* *
  70.  
  71.      Even this will not include any subdirectories  that  are  in
  72.      the  current  directory.  To zip up an entire directory, the
  73.      command:
  74.  
  75.           zip -r foo foo
  76.  
  77.      will create the file "foo.zip" containing all the files  and
  78.      directories  in  the  directory "foo" that is in the current
  79.      directory. (The first "foo" denotes the zip file, the second
  80.      one  denotes  the  directory.)  The "r" option means recurse
  81.      through the directory structure.   In  this  case,  all  the
  82.      files  and directories in foo are zipped, including the ones
  83.      that start with a ".", since the recursion does not use  the
  84.      shell's  file-name substitution.  You should not use -r with
  85.      the name ".*", since that matches ".." which will attempt to
  86.      zip up the parent directory--probably not what was intended.
  87.  
  88.      You may want to make a zip file that contains the  files  in
  89.      foo,  but  not  record the directory name, foo.  You can use
  90.      the -j (junk path) option to leave off the path:
  91.  
  92.           zip -j foo foo/*
  93.  
  94.      The -y option (only under Unix) will store symbolic links as
  95.      such in the zip file, instead of compressing and storing the
  96.      file referred to in the link.
  97.  
  98.      You might be zipping to save disk space, in which  case  you
  99.      could:
  100.  
  101.           zip -rm foo foo
  102.  
  103.      where the "m" option means "move".  This will delete foo and
  104.      its  contents  after  making  foo.zip.  No deletions will be
  105.      done until the zip  has  completed  with  no  errors.   This
  106.      option  is  obviously more dangerous and should be used with
  107.      care.
  108.  
  109.      If the zip file already exists, these commands will  replace
  110.      existing  or  add new entries to the zip file.  For example,
  111.      if you were really short on disk space, you might  not  have
  112.      enough room simultaneously to hold the directory foo and the
  113.      compressed foo.zip.  In this case, you could do it in steps.
  114.      If  foo  contained  the subdirectories tom, dick, and harry,
  115.      then you could:
  116.  
  117.           zip -rm foo foo/tom
  118.           zip -rm foo foo/dick
  119.           zip -rm foo foo/harry
  120.  
  121.      where the first command would create foo.zip, and  the  next
  122.      two would add to it.  At the completion of each zip command,
  123.      the directory just zipped would be deleted, making  room  in
  124.      which the next zip command could work.
  125.  
  126.      zip will also accept a single dash ("-")  as  the  zip  file
  127.      name,  in  which  case it will write the zip file to stdout,
  128.      allowing the output to be  piped  to  another  program.  For
  129.      example:
  130.  
  131.           zip -r - . | dd of=/dev/nrst0 obs=16k
  132.  
  133.      would write the zip output  directly  to  a  tape  with  the
  134.      specified  block  size  for  the  purpose  of backing up the
  135.      current directory.
  136.  
  137.      zip also accepts a single dash ("-") as the name of  a  file
  138.      to  be  compressed,  in which case it will read the zip file
  139.      from stdin, allowing zip to take input from another program.
  140.      For example:
  141.  
  142.           tar cf - . | zip backup -
  143.  
  144.      would compress the output of the tar command for the purpose
  145.      of backing up the current directory. This generally produces
  146.      better compression than the previous example  using  the  -r
  147.      option, because zip can take advantage of redundancy between
  148.      files. The backup can be restored using the command
  149.  
  150.           unzip -p backup | tar xf -
  151.  
  152.      When no zip file name is given and stdout is not a terminal,
  153.      zip acts as a filter, compressing standard input to standard
  154.      output.  For example,
  155.  
  156.           tar cf - . | zip | dd of=/dev/nrst0
  157.  
  158.      is equivalent to
  159.  
  160.           tar cf - . | zip - - | dd of=/dev/nrst0
  161.  
  162.      Zip archives created in this manner can  be  extracted  with
  163.      the  program  funzip which is provided in the unzip package.
  164.      For example,
  165.  
  166.              dd if=/dev/nrst0 | funzip | tar xvf -
  167.  
  168. MODIFYING EXISTING ZIP FILES
  169.      When given the name of an existing zip file with  the  above
  170.      commands,  zip will replace identically named entries in the
  171.      zip file or add entries for  new  names.   For  example,  if
  172.      foo.zip exists and contains foo/file1 and foo/file2, and the
  173.      directory foo contains the files  foo/file1  and  foo/file3,
  174.      then:
  175.  
  176.           zip -r foo foo
  177.  
  178.      will replace foo/file1  in  foo.zip  and  add  foo/file3  to
  179.      foo.zip.  After this, foo.zip contains foo/file1, foo/file2,
  180.      and foo/file3, with foo/file2 unchanged from before.
  181.  
  182.      When changing an existing zip file, zip will  write  a  tem-
  183.      porary  file with the new contents, and only replace the old
  184.      one when the zip has completed with no errors. You  can  use
  185.      the  -b  option  to specify a different path (usually a dif-
  186.      ferent device) to put the temporary file in.  For example:
  187.  
  188.           zip -b /tmp stuff *
  189.  
  190.      will put the temporary zip file and the  temporary  compres-
  191.      sion  files  in the directory "/tmp", copying over stuff.zip
  192.      in the current directory when done.
  193.  
  194.      If you are only adding entries to a zip file, not replacing,
  195.      and  the -g option is given, then zip grows (appends to) the
  196.      file instead of copying it.  The danger of this is  that  if
  197.      the  operation fails, the original zip file is corrupted and
  198.      lost.
  199.  
  200.      There are two other ways to change or add entries in  a  zip
  201.      file  that  are  restrictions of simple addition or replace-
  202.      ment.  The first is -u (update) which will add  new  entries
  203.      to  the zip file as before but will replace existing entries
  204.      only if the modified date of the file is  more  recent  than
  205.      the  date recorded for that name in the zip file.  For exam-
  206.      ple:
  207.  
  208.           zip -u stuff *
  209.  
  210.      will add any new files in the current directory, and  update
  211.      any  changed files in the zip file stuff.zip.  Note that zip
  212.      will not try to pack stuff.zip into itself when you do this.
  213.      zip will always exclude the zip file from the files on which
  214.      to be operated.
  215.  
  216.      The second restriction is -f (freshen) which,  like  update,
  217.      will  only  replace entries with newer files; unlike update,
  218.      will not add files that are not already  in  the  zip  file.
  219.      For  this  option, you may want to simply freshen all of the
  220.      files that are in the specified zip file.  To  do  this  you
  221.      would simply:
  222.  
  223.           zip -f foo
  224.  
  225.      Note that the -f option with no arguments freshens  all  the
  226.      entries  in the zip file.  The same is true of -u, and hence
  227.      "zip -u foo" and "zip -f foo" both do the same thing.
  228.  
  229.      This command should be run  from  the  same  directory  from
  230.      which  the  original zip command was run, since paths stored
  231.      in zip files are always relative.
  232.  
  233.      Another restriction that can be used with adding,  updating,
  234.      or  freshening is -t (time), which will not operate on files
  235.      modified earlier than the specified date.  For example:
  236.  
  237.           zip -rt 120791 infamy foo
  238.  
  239.      will add all the files in foo and  its  subdirectories  that
  240.      were  last modified on December 7, 1991, or later to the zip
  241.      file infamy.zip.
  242.  
  243.      Also, files can be explicitly excluded using the -x option:
  244.  
  245.           zip -r foo foo -x \*.o
  246.  
  247.      which will zip up the  contents  of  foo  into  foo.zip  but
  248.      exclude  all the files that end in ".o".  Here the backslash
  249.      causes zip to match file names that were found when foo  was
  250.      searched.
  251.  
  252.      The last operation is -d (delete) which will remove  entries
  253.      from a zip file.  An example might be:
  254.  
  255.           zip -d foo foo/tom/junk foo/harry/\* \*.o
  256.  
  257.      which will remove the entry foo/tom/junk, all of  the  files
  258.      that  start with "foo/harry/", and all of the files that end
  259.      with ".o" (in any path).  Note that once  again,  the  shell
  260.      expansion  has  been inhibited with backslashes, so that zip
  261.      can see the asterisks. zip can then match on the contents of
  262.      the  zip  file instead of the contents of the current direc-
  263.      tory.
  264.  
  265.      Under MSDOS, -d is case sensitive when it matches  names  in
  266.      the  zip  file.  This allows deleting names that were zipped
  267.      on other systems, but requires that the names be entered  in
  268.      upper  case  if they were zipped on an MSDOS system, so that
  269.      the names can be found in the zip file and deleted.
  270.  
  271. MORE OPTIONS
  272.      As mentioned before, zip will use the best of  two  methods:
  273.      deflate or store.
  274.  
  275.      The option -0 will force zip to use store on all files.  For
  276.      example:
  277.  
  278.           zip -r0 foo foo
  279.  
  280.      will zip up the directory foo into foo.zip using only store.
  281.  
  282.      The speed of deflation can also be controlled  with  options
  283.      -1  (fastest  method  but  less  compression)  to  -9  (best
  284.      compression but slower). The default value is -5. For  exam-
  285.      ple:
  286.  
  287.           zip -r8 foo foo
  288.  
  289.      In nearly all cases, a file that is already compressed  can-
  290.      not  be  compressed further by zip, or if it can, the effect
  291.      is minimal.  The -n  option  prevents  zip  from  trying  to
  292.      compress files that have the given suffixes.  Such files are
  293.      simply stored (0% compression) in the output  zip  file,  so
  294.      that  zip  doesn't  waste  its time trying to compress them.
  295.      The suffixes are separated by either colons  or  semicolons.
  296.      For example:
  297.  
  298.           zip -rn ".Z:.zip:.tiff:.gif:.snd"  foo foo
  299.  
  300.      will put everything in foo into foo.zip, but will store  any
  301.      files  that  end  in  .Z, .zip, .tiff, .gif, or .snd without
  302.      trying to compress them.  (Image and sound files often  have
  303.      their own specialized compression methods.) The default suf-
  304.      fix list is ".Z:.zip;.zoo:.arc:.lzh:.arj".  The  environment
  305.      variable  ZIPOPT  can  be  used  to change this default. For
  306.      example under Unix with csh:
  307.  
  308.           setenv ZIPOPT "-n .gif:.zip"
  309.  
  310.      The variable ZIPOPT can be  used  for  any  option  and  can
  311.      include several options.
  312.  
  313.      Under Unix and  under  OS/2  (if  files  from  an  HPFS  are
  314.      stored),  zip  will  store  the  full  path (relative to the
  315.      current path) and name of the file (or just the name  if  -j
  316.      is   specified)   in  the  zip  file  along  with  the  Unix
  317.      attributes, and it will mark the entry as made  under  Unix.
  318.      If  the  zip  file is intended for PKUNZIP under MSDOS, then
  319.      the -k (Katz) option should be used to  attempt  to  convert
  320.      the  names  and  paths  to  conform to MSDOS, store only the
  321.      MSDOS attribute (just the user write attribute  from  Unix),
  322.      and  mark  the  entry  as  made  under MSDOS (even though it
  323.      wasn't).
  324.  
  325.      The -o (older) option will set the "last modified"  time  of
  326.      the  zip  file  to  the  latest  "last modified" time of the
  327.      entries in the zip file.  This can be used without any other
  328.      operations, if desired.  For example:
  329.  
  330.           zip -o foo
  331.  
  332.      will change the last modified time of foo.zip to the  latest
  333.      time of the entries in foo.zip.
  334.  
  335.      The -e and -c options operate on all files updated or  added
  336.      to the zip file.  Encryption (-e) will prompt for a password
  337.      on the terminal and will not echo  the  password  as  it  is
  338.      typed (if stderr is not a TTY, zip will exit with an error).
  339.      New zip entries will be encrypted using that password.   For
  340.      added  peace of mind, you can use -ee, which will prompt for
  341.      the password twice, checking  that  the  two  are  the  same
  342.      before   using   it.  The  encryption  code  is  distributed
  343.      separately, so the -e option may not be  available  in  your
  344.      version.
  345.  
  346.      One-line comments can be added for each  file  with  the  -c
  347.      option.   The  zip file operations (adding or updating) will
  348.      be done first, and you will then be prompted for a  one-line
  349.      comment  for each file.  You can then enter the comment fol-
  350.      lowed by return, or just return for no comment.
  351.  
  352.      The -z option will prompt you for a multi-line  comment  for
  353.      the  entire zip file.  This option can be used by itself, or
  354.      in combination with other options.  The comment is ended  by
  355.      a line containing just a period, or an end of file condition
  356.      (^D on Unix, ^Z on MSDOS,  OS/2,  and  VAX/VMS).   Since  -z
  357.      reads  the lines from stdin, you can simply take the comment
  358.      from a file:
  359.  
  360.           zip -z foo < foowhat
  361.  
  362.      The -q (quiet) option eliminates the informational  messages
  363.      and  comment  prompts while zip is operating.  This might be
  364.      used in shell scripts, for example, or if the zip  operation
  365.      is  being  performed  as  a background task ("zip -q foo *.c
  366.      &").
  367.  
  368.      zip can take a list of file names to operate on  from  stdin
  369.      using  the -@ option.  In Unix, this option can be used with
  370.      the find command to extend greatly the functionality of zip.
  371.      For example, to zip up all the C source files in the current
  372.      directory and its subdirectories, you can:
  373.  
  374.           find . -type f -name "*.[ch]" -print | zip source -@
  375.  
  376.      Note that the pattern must be quoted to keep the shell  from
  377.      expanding it.
  378.  
  379.      Under VMS only, the -w option will append the version number
  380.      of  the  files  to  the name and zip up multiple versions of
  381.      files.  Without -w, zip will only use the most  recent  ver-
  382.      sion of the specified file(s).
  383.  
  384.      The -l option translates the Unix end-of-line  character  LF
  385.      into  the  MSDOS convention CR LF. This option should not be
  386.      used on binary files.  This option can be used  on  Unix  if
  387.      the  zip  file  is  intended for PKUNZIP under MSDOS. If the
  388.      input files already contain CR LF, this option adds an extra
  389.      CR.  This  ensure  that  "unzip -a" on Unix will get back an
  390.      exact copy of the original file, to undo the effect of  "zip
  391.      -l".
  392.  
  393.      If zip is run with the -h option, or with no  arguments  and
  394.      standard  output is a terminal, the license and the command-
  395.      argument and option help is shown.  The -L option just shows
  396.      the license.
  397.  
  398. ABOUT PATTERN MATCHING
  399.      (Note: this section applies to Unix.  Watch this  space  for
  400.      details on MSDOS and VMS operation.)
  401.  
  402.      The Unix shell (sh or csh)  does  filename  substitution  on
  403.      command  arguments.   The  special  characters  are ?, which
  404.      matches any single character; * which matches any number  of
  405.      characters  (including none); and [] which matches any char-
  406.      acter in the  range  inside  the  brackets  (like  [a-f]  or
  407.      [0-9]).   When  these  characters  are  encountered (and not
  408.      escaped with a backslash or quotes), the shell will look for
  409.      files  relative  to the current path that match the pattern,
  410.      and replace the argument with  a  list  of  the  names  that
  411.      matched.
  412.  
  413.      zip can do the same matching on names that are  in  the  zip
  414.      file  being  modified  or,  in  the case of the -x (exclude)
  415.      option, on the list of files to be  operated  on,  by  using
  416.      backslashes  or  quotes to tell the shell not to do the name
  417.      expansion.  In general, when zip encounters a  name  in  the
  418.      list of files to do, it first looks for the name in the file
  419.      system.  If it finds it, it then adds  it  to  the  list  of
  420.      files  to  do.  If it does not find it, it will look for the
  421.      name in the zip file being modified (if  it  exists),  using
  422.      the  pattern  matching  characters  above, if any.  For each
  423.      match, it will add that name to the list  of  files  to  do.
  424.      After  -x  (exclude),  the  names are removed from the to-do
  425.      list instead of added.
  426.  
  427.      The pattern matching includes the path, and so patterns like
  428.      \*.o  match  names that end in ".o", no matter what the path
  429.      prefix is.  Note that the backslash must precede every  spe-
  430.      cial  character  (i.e. ?*[]), or the entire argument must be
  431.      enclosed in double quotes ("").
  432.  
  433.      In general, using backslash  to  make  zip  do  the  pattern
  434.      matching  is  used  with  the  -f  (freshen) and -d (delete)
  435.      options, and sometimes after the -x  (exclude)  option  when
  436.      used  with  any  operation  (add,  -u, -f, or -d).  zip will
  437.      never use pattern matching to search the  file  system.   If
  438.      zip has recursed into a directory, all files (and all direc-
  439.      tories) in there are fair game.
  440.  
  441. COPYRIGHT
  442.      Copyright (C) 1990-1992 Mark Adler, Richard B. Wales,  Jean-
  443.      loup  Gailly, Kai Uwe Rommel and Igor Mandrichenko.  Permis-
  444.      sion is granted to any individual  or  institution  to  use,
  445.      copy,  or  redistribute  this software so long as all of the
  446.      original files are included unmodified, that it is not  sold
  447.      for profit, and that this copyright notice is retained.
  448.  
  449. ACKNOWLEDGEMENTS
  450.      Thanks to R. P.  Byrne  for  his  Shrink.Pas  program  which
  451.      inspired  this project; to Phil Katz for making the zip file
  452.      format, compression format, and .zip filename extension  all
  453.      public  domain;  to  Steve  Burg  and  Phil Katz for help on
  454.      unclear points of the deflate format; to Keith Petersen  and
  455.      Rich Wales for providing a mailing list and ftp site for the
  456.      INFO-ZIP group to use; and most importantly, to the INFO-ZIP
  457.      group  itself (listed in the file infozip.who) without whose
  458.      tireless testing and bug-fixing efforts a portable zip would
  459.      not have been possible.  Finally we should thank (blame) the
  460.      INFO-ZIP moderator, David Kirschbaum  for  getting  us  into
  461.      this mess in the first place.
  462.  
  463. SEE ALSO
  464.      unzip(1), tar(1), compress(1)
  465.  
  466. BUGS
  467.      WARNING: zip files produced by this version of zip must  not
  468.      be  *updated*  by  zip  1.0 or pkzip 1.10 or pkzip 1.93a, if
  469.      they contain encrypted members, or if they  have  been  pro-
  470.      duced  in  a  pipe or on a non seekable device. The old ver-
  471.      sions of zip or pkzip would destroy the zip  structure.  The
  472.      old  versions can list the contents of the zip file but can-
  473.      not extract it anyway (because of the new compression  algo-
  474.      rithm).   If  you do not use encryption and use regular disk
  475.      files, you do not have to care about this problem.
  476.  
  477.      zip 1.9 is compatible with  pkzip  1.93a,  except  when  two
  478.      features  are used: encryption or zip file created in a pipe
  479.      or on a non seekable device. pkzip versions above  2.0  will
  480.      support such files, and unzip 5.0 already supports them.
  481.  
  482.      Without -y, when zip must compress a symbolic link to an non
  483.      existing   file,  it  only  displays  a  warning  "name  not
  484.      matched". A better warnign should be given.
  485.  
  486.      Under VMS, not all of the odd file formats are treated prop-
  487.      erly.   Only  zip files of format stream-LF and fixed length
  488.      512 are expected to work with zip.  Others can be  converted
  489.      using  Rahul Dhesi's BILF program.  This version of zip does
  490.      handle some of the conversion internally.  When using Kermit
  491.      to transfer zip files from Vax to MSDOS, type "set file type
  492.      block" on the Vax.  When transfering from MSDOS to Vax, type
  493.      "set  file type fixed" on the Vax.  In both cases, type "set
  494.      file type binary" on MSDOS.
  495.  
  496.      Under VMS, zip hangs for file specification that uses DECnet
  497.      syntax (foo::*.*).
  498.  
  499.      Under OS/2, the amount of External Attributes  displayed  by
  500.      DIR is (for compatibility) the amount returned by the 16-bit
  501.      version of DosQueryPathInfo(). Otherwise OS/2  1.3  and  2.0
  502.      would  report  different  EA sizes when DIRing a file.  How-
  503.      ever,  the  structure  layout   returned   by   the   32-bit
  504.      DosQueryPathInfo() is a bit different, it uses extra padding
  505.      bytes and link pointers (it's a linked  list)  to  have  all
  506.      fields  on  4-byte boundaries for portability to future RISC
  507.      OS/2 versions. Therefore the value reported  by  ZIP  (which
  508.      uses  this  32-bit-mode  size) differs from that reported by
  509.      DIR.  ZIP stores the 32-bit format for portability, even the
  510.      16-bit  MS-C-compiled  version  running on OS/2 1.3, so even
  511.      this one shows the 32-bit-mode size.
  512.  
  513.      LIKE ANYTHING ELSE THAT'S FREE, ZIP AND ITS ASSOCIATED UTIL-
  514.      ITIES  ARE  PROVIDED  AS IS AND COME WITH NO WARRANTY OF ANY
  515.      KIND, EITHER EXPRESSED OR IMPLIED.  IN  NO  EVENT  WILL  THE
  516.      COPYRIGHT  HOLDERS  BE LIABLE FOR ANY DAMAGES RESULTING FROM
  517.      THE USE OF THIS SOFTWARE.
  518.  
  519.      That having been said, please send any problems or  comments
  520.      via email to the Internet address zip-bugs@cs.ucla.edu.  For
  521.      bug reports, please include the version  of  zip,  the  make
  522.      options  you  used  to compile it, the machine and operating
  523.      system you are using, and as much additional information  as
  524.      possible.  Thank you for your support.
  525.