'cpio' utility needed
Mark Brukhartz
mark at laidbak.UUCP
Fri Aug 2 14:39:15 AEST 1985
I have created a utility called "afio" which manipulates cpio-format
archives. Among other features, it knows how to skip past unreadable
or otherwise corrupt portions of archives.
I plan to post "afio" to "net.sources" in a about a month (once the
most recent changes have been tested). If you have a desperate need,
however, please send me mail; I'll send an advance copy.
Mark Brukhartz
..!ihnp4!laidbak!mark
PS: The latest "afio" manual page follows. Please mail comments to
"..!ihnp4!laidbak!mark". Thank you.
AFIO(1) UNIX Programmer's Manual AFIO(1)
NAME
afio - manipulate archives and files
SYNOPSIS
afio -o [ -fhlmruvz ] [ -(bcs) n ] archive
afio -t [ -kuvz ] [ -(bcs) n ] [ -y prefix ] archive
afio -i [ -dkmnruvwxz ] [ -(bcs) n ] [ -y prefix ] archive
afio -p [ -dhlmnuvwxz ] dir [ ... ]
DESCRIPTION
Afio manipulates groups of files, copying them within the
(collective) filesystem or between the filesystem and an
afio archive. Note that afio archives are portable, as they
contain only ASCII-formatted header information. They are
also compatible with ASCII cpio(1) archives (ala cpio -c).
With -o, reads pathnames from the standard input, writing
the specified files to the given archive.
With -t, reads the specified archive, writing a table-of-
contents to the standard output.
With -i, reads the specified archive and installs the files
relative to the current working directory.
With -p, copies files directly from one part of the filesys-
tem to another. Input pathnames are taken from the standard
input. Files are copied to each (of possibly several) des-
tination directories.
Creates missing directories as necessary, with permissions
to match their parents.
Skips obviously corrupt sections of input archives.
Supports multi-volume archives during interactive operation
(i.e., when /dev/tty is accessible and SIGINT is not being
ignored).
Options:
-b size Read or write size-character archive blocks.
Suffices of b, k and m denote multiples of 512,
1024 and 1048576, respectively. Defaults to
5120 for compatibility with cpio(1).
-c count Buffer count archive blocks between I/O opera-
tions. A large count is recommended with stream-
ing magnetic tape drives.
-d Don't create missing directories.
Printed 8/1/85 1
AFIO(1) UNIX Programmer's Manual AFIO(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.
-h Follow symbolic links, treating them as ordinary
files and directories.
-k Skip corrupt data at the beginning of an archive
(rather than complaining about unrecognizable
input). Allows input to begin in the middle of
a multi-volume archive.
-l With -o, resolves links at output time, writing
only one copy of data per unique file.
With -t, reports hard links.
With -p, attempts 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).
-r Treat absolute pathnames within archives as
relative ones.
-s limit Restrict each portion of a multi-volume archive
to limit characters. Recognizes the same multi-
pliers as -b. Useful with finite-length devices
which do not return short counts at end of media
(sigh); output to magnetic tape typically falls
into this category.
-u Report files with unseen links.
-v Verbose. Report pathnames as they are processed.
With -t, gives an ls -l style report (including
link information).
-w Protect unwritable files (such as mode 644 owned
by someone else or any mode 444). Otherwise,
writing is attempted via chmod(), or unlink()
and creat(). Note that multiply-linked files
will not be unlinked in any case. This option
is ineffective for the super-user.
-x Retain file ownership and setuid/setgid
Printed 8/1/85 2
AFIO(1) UNIX Programmer's Manual AFIO(1)
permissions. This is the default for the
super-user; he may use -X to override it.
-y prefix Restrict processing to names beginning with pre-
fix. Specify once for each prefix to be recog-
nized.
-z Print execution statistics. This is meant for
human consumption; use by other programs is
officially discouraged.
Recognizes obsolete binary cpio(1) archives upon input (with
-i and -t), but cannot write them.
Generates sparse filesystem blocks (with lseek(2)) when pos-
sible.
Optimizes pathnames with respect to the current and parent
directories. For example, ./src/sh/../misc/afio.c becomes
src/misc/afio.c.
Pads the final block of an archive to the output block size
(see -b) with character-special devices or to a 512-
character boundary with other archive file types. This is
necessary for compatibility with cpio(1).
BUGS
Can't handle pathnames longer than 255 characters, or with
more than 63 meaningful elements.
No sequence checks are applied when reading multi-volume
archives. Sequence errors generally masquerade as corrupt
archives.
Corrupt archives are resynchronized by searching for a valid
magic number. This is quite naive, but, much like a
disassembler, almost always works.
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" would be mis-optimized into "bin/cu"
(rather than "/usr/bin/cu").
WISH LIST
Selective retrieval by full regular expression.
Appending to or otherwise updating an existing archive.
SEE ALSO
cpio(1), find(1), tar(1), tp(1).
Printed 8/1/85 3
AFIO(1) UNIX Programmer's Manual AFIO(1)
AUTHOR
Mark Brukhartz
..!ihnp4!laidbak!mark
Printed 8/1/85 4
More information about the Comp.unix
mailing list