.TH VENTI 1
.SH NAME
read, write, copy \- simple Venti clients
.SH SYNOPSIS
.B venti/read
[
.B -h
.I host
]
[
.B -t
.I type
]
.I score
.br
.B venti/write
[
.B -z
]
[
.B -h
.I host
]
[
.B -t
.I type
]
.br
.B venti/copy
[
.B -fimrVv
]
[
.B -t
.I type
]
.I srchost
.I dsthost
.I score
.SH DESCRIPTION
Venti is a SHA1-addressed block storage server.
See 
.IR venti (7)
for a full introduction.
.PP
.I Read
reads a block with the given
.I score
and numeric
.I type 
from the server
.I host
and prints the block to standard output.
If the
.B -h
option is omitted,
.I read
consults the environment variable
.B $venti
for the name of the Venti server.
If the
.B -t
option is omitted,
.I read
will try each type, one at a time, until it finds
one that works.
It prints the corresponding
.B read
.B -t
command to standard error
to indicate the type of the block.
.PP
.I Write
writes at most 56 kilobytes of data from standard input 
to the server
.I host
and prints the resulting score to standard output.
If the
.B -t
option is omitted,
.I write
uses type 0,
denoting a data block.
If the
.B -z
option is given,
.I write
zero truncates the block before writing it to the server.
.PP
.I Copy
expects
.I score
to be the score of a 
.B VtRoot
block.
It copies the entire tree of blocks reachable from
the root block from the server
.I srchost
to the server
.IR dsthost .
.PP
Venti's blocks are arranged in a directed acyclic graph (see venti(6)); 
there may be multiple paths from a root score to an 
interior block (for example, if the same file contents are stored
under multiple names in an archive).
.I Copy
runs more efficiently if it does not copy blocks 
(and all their children) multiple times.
The
.B -f
option causes
.I copy
to assume that if a block already exists on the destination
Venti server, all its children also exist and need not be considered.
The
.B -m
option causes
.I copy
to maintain an in-memory list of blocks it has copied
and avoid considering the same block multiple times.
The
.B -f
option is only useful if the destination Venti server is
known not to have lost any blocks due to disk corruption
or other failures.
The
.B -m
option is only useful if enough memory is available to
hold the block list, which typically requires about 1%
of the total number of bytes being copied.
.PP
The
.B -i
and
.B -r
options control
.IR copy 's
reaction to errors reading
from
.IR srchost .
.I Copy
always prints information to standard error
about each read error.
By default,
.I copy
exits after printing the first error.
If the
.B -i
option is given, read errors are ignored.
This is dangerous behavior because it breaks the 
assumption made by `fast' mode.
If the
.B -r
option is given, 
.I copy
replaces pointers to unreadable blocks with
pointers to the zero block.
It writes the new root score to standard output.
The
.B -v
option prints scores as it copies them, total writes, and other
debugging information.
The
.B -V
option prints debugging information about the Venti protocol
messages send/received.
.SH SOURCE
.B \*9/src/cmd/venti
.SH SEE ALSO
.IR vac (1),
.IR venti (3),
.IR vacfs (4),
.IR venti (7),
.IR vbackup (8),
.IR venti (8),
.IR venti-fmt (8)
.SH BUGS
There should be programs to read and write
venti files and directories.
