VAC(1)                                                     VAC(1)

     NAME
          vac, unvac - create, extract a vac archive on Venti

     SYNOPSIS
          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 ... ]

     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:

          -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 hierar-
                         chy, behaving as though the -d flag was spec-
                         ified 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 `k' to indicate

     Page 1                       Plan 9            (printed 11/23/24)

     VAC(1)                                                     VAC(1)

                         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 speci-
                         fied by exclude. This option may be repeated
                         multiple times.  Exclude can be a shell pat-
                         tern as accepted by rc(1), with one exten-
                         sion: ... 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 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

     Page 2                       Plan 9            (printed 11/23/24)

     VAC(1)                                                     VAC(1)

                         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 direc-
                         tory 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 mul-
                         tiple 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 compar-
               ing 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.

          -h   as per vac.

     SOURCE
          /sys/src/cmd/vac

     SEE ALSO
          vacfs(4), venti(8)

     Page 3                       Plan 9            (printed 11/23/24)