.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 -fir
]
[
.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
The
.B -f
option causes
.I copy
to run in `fast' mode,
assuming that if a block already exists on the
destination Venti server, all its children also
exist and need not be checked.
.PP
The
.B -i
and
.B -r
option 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.
.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)
.SH BUGS
There should be programs to read and write
venti files and directories.
