| .TH VAC 1 |
| .SH NAME |
| vac, unvac \- create, extract a vac archive on Venti |
| .SH SYNOPSIS |
| .B vac |
| [ |
| .B -mqsv |
| ] [ |
| .B -a |
| .I vacfile |
| ] [ |
| .B -b |
| .I blocksize |
| ] [ |
| .B -d |
| .I oldvacfile |
| ] [ |
| .B -e |
| .I exclude |
| ] [ |
| .B -f |
| .I vacfile |
| ] [ |
| .B -i |
| .I name |
| ] [ |
| .B -h |
| .I host |
| ] [ |
| .B -x |
| .I excludefile |
| ] |
| .I file ... |
| .PP |
| .B unvac |
| [ |
| .B -Tcdtv |
| ] [ |
| .B -h |
| .I host |
| ] |
| .I vacfile |
| [ |
| .I file ... |
| ] |
| .SH DESCRIPTION |
| .I 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 |
| .I 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. |
| .PP |
| As an optimization, the |
| .B -d |
| and |
| .B -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 |
| .IR vac , |
| but simply reduce the number of write operations to Venti. |
| .PP |
| The output of |
| .I vac |
| is the hexadecimal representation of the SHA1 fingerprint of the root of the archive, in this format: |
| .IP |
| .EX |
| vac:64daefaecc4df4b5cb48a368b361ef56012a4f46 |
| .EE |
| .PP |
| The options are: |
| .TP |
| .BI -a " vacfile |
| Specifies that vac should create or update a backup archive, inserting |
| the files under an extra two levels of directory hierarchy named |
| .I yyyy/mmdd |
| (year, month, day) |
| in the style of the dump file system |
| (see Plan 9's \fIfs\fR(4)). |
| If |
| .I vacfile |
| already exists, an additional backup day is added to the |
| existing hierarchy, behaving as though the |
| .B -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 |
| .B -d |
| or |
| .BR -f . |
| .TP |
| .BI -b " blocksize |
| Specifies the block size that data will be broken into. |
| The units for the size can be specified by appending |
| .L k |
| to indicate kilobytes. |
| The default is 8k. |
| The size must be in the range |
| of 512 bytes to 52k. |
| .TP |
| .BI -d " oldvacfile |
| Reduce the number of blocks written to Venti by comparing the files to be stored with |
| the contents of an existing |
| .I vac |
| file tree whose score is stored in |
| .IR oldvacfile . |
| .TP |
| .BI -e " exclude |
| Do not include the file or directory specified by |
| .IR exclude . |
| This option may be repeated multiple times. |
| .I Exclude |
| can be a shell pattern as accepted by |
| .IR rc (1), |
| with one extension: |
| .B \&... |
| matches any sequence of characters including slashes. |
| .TP |
| .BI -f " vacfile |
| The results of |
| .I vac |
| are placed in |
| .IR vacfile , |
| or the standard output if no file is given. |
| .TP |
| .BI -i " name |
| Include standard input as one of the input files, storing it in the archive |
| with the specified |
| .IR name . |
| .TP |
| .BI -h " host |
| The network address of the Venti server. |
| The default is taken from the environment variable |
| .BR venti . |
| .\" If this variable does not exist, then the default is the |
| .\" metaname |
| .\" .BR $venti , |
| .\" which can be configured via |
| .\" .IR ndb (6). |
| .TP |
| .B -m |
| Expand and merge any |
| .I 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 |
| .LR .vac . |
| Note, an archive is inserted by simply copying the root fingerprint and does not require |
| the archive to be unpacked. |
| .TP |
| .B -q |
| Increase the performance of the |
| .B -a |
| or |
| .B -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. |
| .TP |
| .B -s |
| Print out various statistics on standard error. |
| .TP |
| .B -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. |
| .TP |
| .BI -x " excfile |
| Read exclude patterns from the file |
| .IR excfile . |
| Blank lines and lines beginning with |
| .B # |
| are ignored. |
| All other lines should be of the form |
| .B include |
| .I pattern |
| or |
| .B exclude |
| .I 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 |
| .B -e |
| option. |
| This option may be repeated multiple times. |
| .PP |
| .I Unvac |
| lists or extracts files stored in the vac archive |
| .IR vacfile , |
| which can be either a vac archive string in the format |
| given above or the name of a file containing one. |
| If |
| .I file |
| arguments are given, only those files or directories |
| will be extracted. |
| The options are: |
| .TP |
| .B -T |
| Set the modification time on extracted files |
| to the time listed in the archive. |
| .TP |
| .B -c |
| Write extracted files to standard output instead of creating a file. |
| .TP |
| .B -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 |
| .BR -c . |
| .TP |
| .B -t |
| Print a list of the files to standard output rather than extracting them. |
| .TP |
| .B -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. |
| .SH SOURCE |
| .B \*9/src/cmd/vac |
| .SH "SEE ALSO" |
| .IR vacfs (4), |
| .IR venti (8) |