Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cpio(C) — OpenDesktop 1.0.0y

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cat(C)

echo(C)

find(C)

ls(C)

tar(C)

cpio(F)


     CPIO(C)                                    UNIX System V



     Name
          cpio - copy file archives in and out


     Syntax
          cpio -o[acBvV] [-C bufsize] [[-O file] [-M message]]

          cpio  -i[BcdmrtuvVfsSb6k]  [-C  bufsize]  [[-I file]
          [-M message]] [pattern ...]

          cpio -p[adlmuvV] directory


     Description
          cpio -o (copy out) reads the standard input to obtain a list
          of  path  names  and  copies  those  files onto the standard
          output together  with  path  name  and  status  information.
          Output is padded to a 512-byte boundary by default.

          cpio -i (copy in) extracts files from  the  standard  input,
          which  is  assumed  to be the product of a previous cpio -o.
          Only files with names  that  match  patterns  are  selected.
          patterns  are  regular  expressions  given  in the filename-
          generating notation of sh(C).  In  patterns,  metacharacters
          ?, *, and [...] match the slash (/) character, and backslash
          (\) is an escape character.  A !  metacharacter  means  not.
          (For example, the !abc* pattern would exclude all files that
          begin with abc.) Multiple patterns may be specified  and  if
          no  patterns  are  specified,  the default for patterns is *
          (i.e., select all files).  Each pattern must be enclosed  in
          double  quotes  otherwise  the name of a file in the current
          directory  is  used.   Extracted  files  are   conditionally
          created  and  copied  into  the current directory tree based
          upon the options described below.  The  permissions  of  the
          files  will be those of the previous cpio -o . The owner and
          group of the files will be that of the current  user  unless
          the  user  is  super-user,  which  causes cpio to retain the
          owner and group of the files of the previous cpio -o . NOTE:
          If  cpio  -i  tries to create a file that already exists and
          the existing file is the same age or newer, cpio will output
          a  warning message and not replace the file.  (The -u option
          can be used to unconditionally overwrite the existing file.)

          cpio -p (pass) reads the standard input to obtain a list  of
          path  names  of  files  that  are  conditionally created and
          copied into the destination directory tree  based  upon  the
          options  described below.  Archives of text files created by
          cpio are portable between implementations of UNIX System V.

          The meanings of the available options are:

          -a   Reset access times of input files after they have  been
               copied.   Access  times  are not reset for linked files
               when cpio -pla is specified.

          -b   Reverse the order of the bytes within each  word.   Use
               only with the -i option.

          -B   Input/output is  to  be  blocked  5,120  bytes  to  the
               record.  The default buffer size is 512 bytes when this
               and the -C options are not used.  (-B does not apply to
               the  pass  option;  -B  is  meaningful  only  with data
               directed to or from a character-special  device,  e.g.,
               /dev/rdsk/f0q15dt.)

          -c   Write header information in ASCII  character  form  for
               portability.   Always  use  this option when origin and
               destination machines are different types.

          -C bufsize
               Input/output is to be  blocked  bufsize  bytes  to  the
               record,   where  bufsize  is  replaced  by  a  positive
               integer.  The default buffer size  is  512  bytes  when
               this  and  -B options are not used.  (-C does not apply
               to the pass option; -C is  meaningful  only  with  data
               directed  to  or from a character-special device, e.g.,
               /dev/rmt/c0s0.)

          -d   directories are to be created as needed.

          -f   Copy in all files except those in  patterns.  (See  the
               paragraph on cpio -i for a description of patterns.)

          -I file
               Read the contents of file  as  input.   If  file  is  a
               character-special  device,  when  the  first  medium is
               full, replace the medium and type a carriage return  to
               continue  to  the  next  medium.   Use only with the -i
               option.

          -k   Attempt to skip corrupted file headers and  I/O  errors
               that  may  be  encountered.   If you want to copy files
               from a medium that is corrupted  or  out  of  sequence,
               this  option  lets  you read only those files with good
               headers.  (For cpio archives that  contain  other  cpio
               archives,   if   an  error  is  encountered,  cpio  may
               terminate prematurely.  cpio will find  the  next  good
               header,  which  may  be  one for a smaller archive, and
               terminate  when  the  smaller  archive's   trailer   is
               encountered.) Used only with the -i option.

          -l   Whenever possible, link files rather than copying them.
               Usable only with the -p option.

          -m   Retain previous file modification time.  This option is
               ineffective on directories that are being copied.

          -M message
               Define a message to use when switching media.  When you
               use  the  -O  or  -I  options  and specify a character-
               special device, you can use this option to  define  the
               message  that  is printed when you reach the end of the
               medium.  One %d can be placed in the message  to  print
               the  sequence  number  of  the  next  medium  needed to
               continue.

          -O file
               Direct the output of  cpio  to  file.   If  file  is  a
               character-special  device,  when  the  first  medium is
               full, replace the medium and type a carriage return  to
               continue  to  the  next  medium.   Use only with the -o
               option.

          -r   Interactively rename files.  If the user types  a  null
               line,  the  file  is skipped.  If the user types a ".",
               the original pathname will be copied.   (Not  available
               with cpio -p.)

          -s   swap bytes within each half word.  Use only with the -i
               option.

          -S   Swap halfwords within each word.  Use only with the  -i
               option.

          -t   Print a table of contents of the input.  No  files  are
               created.

          -u   Copy unconditionally (normally, an older file will  not
               replace a newer file with the same name).

          -v   verbose: causes a list of file  names  to  be  printed.
               When  used  with  the  -t option, the table of contents
               looks like the output of an ls -l command [see ls(C)].

          -V   Special Verbose: print a dot for each file seen.  Useful
               to  assure  the  user  that  cpio  is  working  without
               printing out all file names.

          -6   Process an old (i.e., UNIX System Sixth Edition format)
               file.  Use only with the -i option.

          NOTE: cpio assumes 4-byte words.

          If cpio reaches  end  of  medium  (end  of  a  diskette  for
          example)  when  writing  to  (-o)  or  reading  from  (-i) a
          character-special device, and -O and -I are not  used,  cpio
          will print the message:

          If you want to go on, type device/file name when ready.

          To continue, you  must  replace  the  medium  and  type  the
          character-special   device   name   (/dev/rdsk/f0q15dt   for
          example) and a carriage return.  You may want to continue by
          directing  cpio  to use a different device.  For example, if
          you have two floppy drives, you may want to  switch  between
          them  so  cpio  can  proceed  while  you  are  changing  the
          floppies.  (A carriage return alone causes the cpio  process
          to exit.)


     Examples
          The following examples show three uses of cpio.

          When standard input is directed through a pipe to  cpio  -o,
          it  groups the files so they can be directed (>) to a single
          file (../newfile).  The -c option insures that the file will
          be  portable to other machines.  Instead of ls(C), you could
          use find(C), echo(C), cat(C), etc., to pipe a list of  names
          to cpio.  You could direct the output to a device instead of
          a file.

               ls | cpio -oc >../newfile

          cpio -i uses the output file of cpio -o (directed through  a
          pipe  with  cat  in  the example), extracts those files that
          match the patterns (memo/a1, memo/b*), creates directories
          below  the  current  directory  as  needed  (-d option), and
          places the files in the  appropriate  directories.   The  -c
          option  is  used  when  the  file is created with a portable
          header.  If no patterns were given, all files  from  newfile
          would be placed in the directory.

               cat newfile | cpio -icd "memo/a1" "memo/b*"

          cpio -p takes the file names piped to it and copies or links
          (-l option) those files to another directory on your machine
          (newdir in the example).  The  -d  options  says  to  create
          directories  as  needed.   The  -m  option  says  retain the
          modification time.  [It  is  important  to  use  the  -depth
          option  of  find(C)  to  generate path names for cpio.  This
          eliminates problems cpio could have trying to  create  files
          under read-only directories.]

               find . -depth -print | cpio -pdlmv newdir

     See Also
          cat(C), echo(C), find(C), ls(C), tar(C), cpio(F)


     Notes
          1) Path names are restricted to 256 characters.
          2) Only the super-user can copy special files.
          3) Blocks are reported in 512-byte quantities.
          4) If a file has 000 permissions, contains more than 0
             characters of data, and the user is not root, the
             file will not be saved or restored.


     Standards Conformance
          cpio is conformant with:

          AT&T SVID Issue 2, Select Code 307-127;
          and The X/Open Portability Guide II of January 1987.


     (printed 8/28/89)                                  CPIO(C)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026