Create a backup image of a client directory tree.
Each image is a directory containing transfer log, summary, tree and if transfer errors were detected an rsync_error file. The transfer log retains the the output of any pre and post processing commands and the rsync log listing all files that were changed or added with some statistical information. The summary file contains all the information about how the image was created and meta-data for managing the image in config file format. Tree is the copy of the client tree.
The client directory tree is compared with an existing image to create a new image. Unchanged files are shared between images. For changed files only those parts that actually change are transfered over the network. Unchanged portions of files are copied from the reference image.
The resulting images contain complete copies of the original trees preserving ownership and file permissions. In this way even though the backups are made incrementally, each image can be used independently for restores or to make removable-media off-site copies or archives.
The removal of an image will have no effect on other images.
As configuration files are loaded they may override options on the command line.
Each option may be unambiguously abbreviated.
A branch is a sequence of images.
If a vault has been specified either here or with the first time this option is used it will attempt to load the config file branch_name or branch_name.conf from the vault.
If this precedes the option will not load it's own config file.
If vault has been set and config-file is a bare filename the presence of one in the vault will take precedence over one in the current directory. To specify one in the current directory after use ./ to precede the name.
The master configuration file will be read prior to processing options.
See Time::ParseDate(3pm) for details.
This does not actually expire anything. What it does do is add an Expire: field to the image summary file containing an absolute time so that a dirvish-expire or another tool outside of dirvish can decide when to remove old images.
image_name is passed through POSIX::strftime
See strftime(3) for details.
If an absolute time without a date is provided it will be forced into the past. If this isn't set the current time will be used.
See Time::ParseDate(3pm) for details.
Create the image entirely from the source tree without the use of a reference image.
Process all configuration files, options and tests then produce a summary/configuration file on standard output and exit.
If a branch_name is specified, the last existing image from its history file will be used. A branch will take precedence over an image of the same name.
A short summary will only include final used values. A long summary will include all configuration values.
Default value: short
If not preceeded by this will attempt to load the config file default or default.conf within the vault.
If branch_name is specified here this will behave exactly like the option and branch_name or branch_name.conf will be attempted instead of default.conf.
dirvish.conf(5) dirvish-runall(8) dirvish-expire(8) dirvish-locate(8) ssh(1) rsync(1) Time::ParseDate(3pm) strftime(3)
In order to preserve permissions it is necessary for dirvish to run as root on the backup server.
The root user must have non-interactive ssh access to the client systems. It is not necessary that this access be as the root user on the client.
File ownership is preserved using numeric values so it is not necessary to have user accounts on the backup server. Making the vaults network accessible using protocols that map UIDs based on names instead of number could allow access controls on files to be violated.
Making the vaults writable by users will compromise the integrity of the backups. Therefore any access to the vaults by users should be done through a read-only mount.