VAC(1) VAC(1)
NAME
vac, unvac - create, extract a vac archive on Venti
SYNOPSIS
vac [ -mqsv ] [ -b blocksize ] [ -d oldvacfile ] [ -e
exclude ] [ -f vacfile ] [ -i name ] [ -h host ] file ...
unvac [ -Tctv ] [ -h host ] vacfile [ file ... ]
DESCRIPTION
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 consumption
of storage will be approximately equal to an incremental
backup. This reduction in storage consumption occurs trans-
parently to the user.
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 simply reduce the number of
write operations to Venti.
The output of vac is the hexadecimal representation of the
SHA1 fingerprint of the root of the archive, in this format:
vac:64daefaecc4df4b5cb48a368b361ef56012a4f46
The options to vac are:
-b blocksize Specifies the block size that data will be
broken into. The units for the size can be
specified by appending `k' to indicate kilo-
bytes. The default is 8k. The size must be
in the range of 512 bytes to 52k.
-d oldvacfile 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.
-e exclude Do not include the file or directory speci-
fied by exclude. This option may be repeated
multiple times.
-f vacfile The results of vac are placed in vacfile, or
the standard output if no file is given.
Page 1 Plan 9 (printed 10/27/25)
VAC(1) VAC(1)
-i name Include standard input as one of the input
files, storing it in the archive with the
specified name.
-h host The network address of the Venti server. The
default is taken from the environment vari-
able 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 con-
tents will be merged. To be detected, the
archives must end in `.vac'. 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 file.
-h as per vac.
-t Print a list of the files to standard output rather
Page 2 Plan 9 (printed 10/27/25)
VAC(1) VAC(1)
than extracting them.
-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.
SOURCE
/sys/src/cmd/vac
SEE ALSO
vacfs(4), venti(8)
Page 3 Plan 9 (printed 10/27/25)