2.11BSD/local/man/cat1/afio.0




AFIO(1)             UNIX Programmer's Manual		  AFIO(1)



NAME
     afio - manipulate archives and files

SYNOPSIS
     afio -o [ _o_p_t_i_o_n_s ] archive
     afio -t [ _o_p_t_i_o_n_s ] archive
     afio -i [ _o_p_t_i_o_n_s ] archive
     afio -p [ _o_p_t_i_o_n_s ] directory [ ... ]

DESCRIPTION
     _A_f_i_o manipulates groups of files, copying them within the
     (collective) filesystem or between the filesystem and an
     _a_f_i_o archive. Note that _a_f_i_o archives are portable, as they
     contain only ASCII-formatted header information. They are
     also compatible with ASCII _c_p_i_o(1) archives (ala _c_p_i_o -_c).

     With -o, reads pathnames from the standard input and writes
     an _a_r_c_h_i_v_e.

     With -t, reads an _a_r_c_h_i_v_e and writes a table-of-contents to
     the standard output.

     With -i, installs the contents of an _a_r_c_h_i_v_e relative to the
     working directory.

     With -p, reads pathnames from the standard input and copies
     the files to each _d_i_r_e_c_t_o_r_y.

     Creates missing directories as necessary, with permissions
     to match their parents.

     Generates sparse filesystem blocks (with _l_s_e_e_k(2)) when pos-
     sible.

     Supports multi-volume archives during interactive operation
     (i.e., when /_d_e_v/_t_t_y is accessible and _S_I_G_I_N_T is not being
     ignored).

     Options:

     -b _s_i_z_e	  Read or write _s_i_z_e-character archive blocks.
		  Suffices of b, k and m denote multiples of _5_1_2,
		  _1_0_2_4 and _1_0_4_8_5_7_6, respectively.  Defaults to
		  _5_1_2_0 for compatibility with _c_p_i_o(1).

     -c _c_o_u_n_t	  Buffer _c_o_u_n_t archive blocks between I/O opera-
		  tions. A large _c_o_u_n_t is recommended with
		  streaming magnetic tape drives.

     -d           Don't create missing directories.

     -e _b_o_u_n_d	  Pad the archive to a multiple of _b_o_u_n_d



Printed 11/24/99						1






AFIO(1)             UNIX Programmer's Manual		  AFIO(1)



		  characters.  Recognizes the same suffices as
		  -s.  Defaults to _1_x (the -b block size) for
		  compatibility with _c_p_i_o(1).

     -f           Spawn a child process to actually write to the
		  archive; provides a clumsy form of double-
		  buffering.  Requires -s for multi-volume
		  archive support.

     -g           Change to input file directories. Avoids qua-
		  dratic filesystem behavior with long similar
		  pathnames. Requires all absolute pathnames,
		  including those for the -o _a_r_c_h_i_v_e and the -p
		  _d_i_r_e_c_t_o_r_i_e_s.

     -h           Follow symbolic links, treating them as ordi-
		  nary files and directories.

     -j           Don't generate sparse filesystem blocks.

     -k           Skip corrupt data at the _b_e_g_i_n_n_i_n_g of an
		  archive (rather than complaining about unrecog-
		  nizable input).

     -l           With -o, write file contents with each hard
		  link.

		  With -t, report hard links.

		  With -p, attempt to link files rather than
		  copying them.

     -m           Mark output files with a common current times-
		  tamp (rather than with input file modification
		  times).

     -n           Protect newer existing files (comparing file
		  modification times).

     -s _l_i_m_i_t	  Restrict each portion of a multi-volume archive
		  to _l_i_m_i_t characters.	Recognizes the same suf-
		  fices as -b.	Also, the suffix x denotes a mul-
		  tiple of the -b block size (and must follow any
		  -b specification).  Useful with finite-length
		  devices which do not return short counts at end
		  of media (sigh); output to magnetic tape typi-
		  cally falls into this category.

     -u           Report files with unseen links.

     -v           Verbose. Report pathnames as they are pro-
		  cessed. With -t, gives an _l_s -_l style report



Printed 11/24/99						2






AFIO(1)             UNIX Programmer's Manual		  AFIO(1)



		  (including link information).

     -x           Retain file ownership and setuid/setgid permis-
		  sions.  This is the default for the super-user;
		  he may use -X to override it.

     -y _p_r_e_f_i_x	  Restrict archive processing to names beginning
		  with _p_r_e_f_i_x.	Specify once for each prefix to
		  be recognized.  Use -Y to supply prefixes which
		  are _n_o_t to be processed.

     -z           Print execution statistics. This is meant for
		  human consumption; use by other programs is
		  officially discouraged.

     Special-case archive names:

	o  Specify - to read or write the standard input or out-
	   put, respectively.  This disables multi-volume archive
	   handling.

	o  Prefix a command string to be executed with an excla-
	   mation mark (!).  The command is executed once for
	   each archive volume, with its standard input or output
	   piped to _a_f_i_o.  It is expected to produce a zero exit
	   code when all is well.

	o  Use _s_y_s_t_e_m:_f_i_l_e to access an archive in _f_i_l_e on _s_y_s_-
	   _t_e_m.  This is really just a special case of pipelin-
	   ing.  It requires a 4.2BSD-style remote shell
	   (_r_s_h(1C)) and a remote copy of _a_f_i_o.

	o  Anything else specifies a local file or device.  An
	   output file will be created if it does not already
	   exist.

     Recognizes obsolete binary _c_p_i_o(1) archives (including those
     from machines with reversed byte order), but cannot write
     them.

     Recovers from archive corruption by searching for a valid
     magic number. This is rather simplistic, but, much like a
     disassembler, almost always works.

     Optimizes pathnames with respect to the current and parent
     directories. For example, ./_s_r_c/_s_h/../_m_i_s_c/_a_f_i_o._c becomes
     _s_r_c/_m_i_s_c/_a_f_i_o._c.

BUGS
     There are too many options.





Printed 11/24/99						3






AFIO(1)             UNIX Programmer's Manual		  AFIO(1)



     Restricts pathnames to 1023 characters and 255 meaningful
     elements.

     There is no sequence information within multi-volume
     archives.	Input sequence errors generally masquerade as
     data corruption.  A solution would probably be mutually
     exclusive with _c_p_i_o(1) compatibility.

     Degenerate uses of symbolic links are mangled by pathname
     optimization.  For example, assuming that "usr.src" is a
     symbolic link to "/usr/src", the pathname
     "usr.src/../bin/cu" is mis-optimized into "bin/cu" (rather
     than "/usr/bin/cu").

SEE ALSO
     cpio(1), find(1), tar(1), tp(1).

AUTHOR
     Mark Brukhartz
     ..!_i_h_n_p_4!_l_a_i_d_b_a_k!_m_d_b



































Printed 11/24/99						4