AFIO
Section: User Commands (1)
Index
Return to Main Contents
NAME
afio - manipulate archives and files
SYNOPSIS
afio -o
[
options
] archive
afio -t
[
options
] archive
afio -i
[
options
] archive
afio -p
[
options
] directory [ ... ]
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
and writes an
archive.
With
-t,
reads an
archive
and writes a table-of-contents to the standard output.
With
-i,
installs the contents of an
archive
relative to the working directory.
With
-p,
reads pathnames from the standard input
and copies the files to each
directory.
Creates missing directories as necessary, with permissions
to match their parents.
Generates sparse filesystem blocks (with
lseek(2))
when possible.
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 operations. A large
count
is recommended with streaming magnetic tape drives.
- -d
-
Don't create missing directories.
- -e bound
-
Pad the archive to a multiple of
bound
characters.
Recognizes the same suffices as
-s.
Defaults to
1x
(the
-b
block size)
for compatibility with
cpio(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 quadratic filesystem
behavior with long similar pathnames. Requires all absolute
pathnames, including those for the
-o
archive
and the
-p
directories.
- -h
-
Follow symbolic links, treating them as ordinary files and directories.
- -j
-
Don't generate sparse filesystem blocks.
- -k
-
Skip corrupt data at the
beginning
of an archive (rather
than complaining about unrecognizable 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 timestamp
(rather than with input file modification times).
- -n
-
Protect newer existing files (comparing file modification times).
- -s limit
-
Restrict each portion of a multi-volume archive to
limit
characters.
Recognizes the same suffices as
-b.
Also, the suffix
x
denotes a multiple 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 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).
- -x
-
Retain file ownership and setuid/setgid permissions.
This is the default for the super-user; he may use
-X
to override it.
- -y prefix
-
Restrict archive processing to names beginning with
prefix.
Specify once for each prefix to be recognized.
Use
-Y
to supply prefixes which are
not
to be processed.
- -z
-
Print execution statistics. This is meant for human consumption;
use by other programs is officially discouraged.
- -A
-
Do not turn absolute paths into relative paths. That is don't remove
the leading slash.
- -F
-
This is a floppy disk, -s is required.
Uses shared memory if compiled in otherwise mallocs as needed (a 3b1
will not be able to malloc the needed memory w/o shared memory),
afio assumes either way you can malloc/shmalloc a chunck of memory
the size of one disk. Examples: 795k: 3.5" (720k drive), 316k (360k drive)
At the end of each disk this message occurs:
Ready for disk [#] on [output] (remove the disk when the light goes out)
Type "go" (or "GO") when ready to proceed (or "quit" to abort):
- -K
-
Verify the output against what is in the memory copy of the disk (-F required).
If the writing or verifying fails the following menu pops up
(the hidden option "quit" will also exit from the backup at this point).
[Writing/Verify] of disk [disk #] has FAILED (try option #3 first ])!
Enter 1 to RETRY this disk
Enter 2 to REFORMAT this disk
Enter 3 to REFORMAT AND THEN RETRY this disk if the format works
- -L Log_file_path
-
Specify the name of the file to log errors and the finial totals to.
- -R Disk format command string
-
This is the command that is run when you enter 2 to reformat the disk.
The default (char *formatcmd = "sh /u/store/format.sh") can be changed
to a given system's default.
- -Z
-
Compress the files on the way out, in, and passing without links
(valid w/ or w/o -F or -K), requires compress and uncompress to be
in your path.
Special-case archive names:
-
- o
-
Specify
-
to read or write the standard input or output, respectively.
This disables multi-volume archive handling.
- o
-
Prefix a command string to be executed with an exclamation mark
(!).
The command is executed once for each archive volume,
with its standard input or output piped to
afio.
It is expected to produce a zero exit code when all is well.
- o
-
Use
system:file
to access an archive in
file
on
system.
This is really just a special case of pipelining.
It requires a 4.2BSD-style remote shell
(rsh(1C))
and a remote copy of
afio.
- o
-
Anything else specifies a local file or device.
An output file will be created if it does not already exist.
Recognizes obsolete binary
cpio(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,
./src/sh/../misc/afio.c
becomes
src/misc/afio.c.
EXAMPLE
AT&T 3b1 (all one line)
find /u/bstore -print | \
afio -ovzFZK -L/u/store/BackupLog \
-R'/etc/iv -i /dev/rfp020 /usr/lib/iv/FDnl' -s$DISKSIZE /dev/rfp021
BUGS
There are too many options.
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
cpio(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), compress(1).
AUTHOR
Mark Brukhartz
..!ihnp4!laidbak!mdb
Jeff Buhrt (floppy/compression extensions)
uunet!sawmill!prslnk!buhrt
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- EXAMPLE
-
- BUGS
-
- SEE ALSO
-
- AUTHOR
-
This document was created by
man2html,
using the manual pages.
Time: 07:07:08 GMT, December 12, 2024