vac, unvac - create, extract a vac archive on Venti
vac [ -mqsv ] [ -a vacfile ] [ -b
blocksize ] [ -d oldvacfile ] [ -e exclude
] [ -f vacfile ] [ -i name ] [ -h
host ] [ -x excludefile ] file ...
unvac [ -Tcdtv ] [ -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 consumption of
storage will be approximately equal to an incremental backup. This reduction
in storage consumption occurs transparently 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 are:
- -a vacfile
- Specifies that vac should create or update a backup archive, inserting the
files under an extra two levels of directory hierarchy named
yyyy/mmdd (year, month, day) in the style of the dump file system
(see Plan 9's fs(4)). If vacfile already exists, an
additional backup day is added to the existing hierarchy, behaving as
though the -d flag was specified giving the most recent backup tree
in the archive. Typically, this option is used as part of a nightly backup
script. This option cannot be used with -d or -f.
- -b blocksize
- 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.
- -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 specified by exclude. This
option may be repeated multiple times. Exclude can be a shell
pattern as accepted by with one extension: ... matches any sequence
of characters including slashes.
- -f vacfile
- The results of vac are placed in vacfile, or the standard
output if no file is given.
- -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 variable venti.
- -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 -a or -d options 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.
- -x excfile
- Read exclude patterns from the file excfile. Blank lines and lines
beginning with # are ignored. All other lines should be of the form
include pattern or exclude pattern . When
considering whether to include a directory or file in the vac archive, the
earliest matching pattern in the file applies. The patterns are the same
syntax accepted by the -e option. This option may be repeated
multiple times.
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.
- -d
- Reduce the number of blocks read from Venti by comparing the files to be
stored with their counterparts in the file system. This option cannot be
used with -c.
- -t
- Print a list of the files to standard output rather 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.