vac, unvac - create, extract a vac archive on Venti
SYNOPSISvac [ -mqsv ] [ -b blocksize ] [ -d oldvacfile ] [ -e exclude ] [ -f
vacfile ] [ -i name ] [ -h host ] file ...
unvac [ -Tctv ] [ -h host ] vacfile [ file ... ]
Vac creates an archival copy of Plan 9 file trees on Venti. It can be
used to build a simple backup system. One of the unusual properties of
Venti is that duplicate blocks are detected and coalesced. When vac is
used on a file tree that shares data with an existing archive, the con‐
sumption of storage will be approximately equal to an incremental
backup. This reduction in storage consumption occurs transparently to
As an optimization, the -d and -q options, described below, can be used
to explicitly create an archive relative to an existing archive. These
options do not change the resulting archive generated by vac, but sim‐
ply reduce the number of write operations to Venti.
The output of vac is the hexadecimal representation of the SHA1 finger‐
print of the root of the archive, in this format:
The options to vac are:
Specifies the block size that data will be broken into. The
units for the size can be specified by appending to indicate
kilobytes. The default is 8k. The size must be in the range of
512 bytes to 52k.
Reduce the number of blocks written to Venti by comparing the
files to be stored with the contents of an existing vac file
tree whose score is stored in oldvacfile.
Do not include the file or directory specified by exclude. This
option may be repeated multiple times.
The results of vac are placed in vacfile, or the standard output
if no file is given.
Include standard input as one of the input files, storing it in
the archive with the specified name.
The network address of the Venti server. The default is taken
from the environment variable venti. If this variable does not
exist, then the default is the metaname $venti, which can be
configured via ndb(6).
-m Expand and merge any vac archives that are found while reading
the input files. This option is useful for building an archive
from a collection of existing archives. Each archive is
inserted into the new archive as if it had been unpacked in the
directory in which it was found. Multiple archives can be
unpacked in a single directory and the contents will be merged.
To be detected, the archives must end in Note, an archive is
inserted by simply copying the root fingerprint and does not
require the archive to be unpacked.
-q Increase the performance of the -d option by detecting unchanged
files based on a match of the files name and other meta data,
rather than examining the contents of the files.
-s Print out various statistics on standard error.
-v Produce more verbose output on standard error, including the
name of the files added to the archive and the vac archives that
are expanded and merged.
Unvac lists or extracts files stored in the vac archive vacfile, which
can be either a vac archive string in the format given above or the
name of a file containing one. If file arguments are given, only those
files or directories will be extracted. The options are:
-T Set the modification time on extracted files to the time listed
in the archive.
-c Write extracted files to standard output instead of creating a
-h as per vac.
-t Print a list of the files to standard output rather than
-v If extracting files, print the name of each file and directory
to standard error. If listing files, print metadata in addition
to the names.
SEE ALSOvacfs(4), venti(8)VAC(1)