NAME¶
dirvish.conf - dirvish configuration file.
DESCRIPTION¶
The dirvish.conf file provides configuration information and default values for
dirvish.
The file format is fairly simple. Each option requires either a single-value or
a list of values and unless otherwise indicated must be specified according to
its expected type. Single value options are specified by lines of the form
option: value. Options expecting list must be specified in a multi-line
format as shown here where the lines specifying values are indented by any
kind of whitespace even if only one value is being specified.
option:
value1
value2
.
.
.
valueN
Each value must be provided on its own line. Any leading and trailing whitespace
is discarded. Options whose names with an initial capital (ex: Foo) are
discarded by dirvish itself but may be used by support utilities. Blank lines
are ignored.
While this simplistic format may allow for configuration errors it allows
arbitrary options to be declared that custom support scripts could use.
A
# introduces a comment to the end of the line.
On startup the dirvish utilities will first load a master dirvish.conf file.
/etc/dirvish.conf will be tried first but if not present
/etc/dirvish/master.conf will be tried.
During installation dirvish may have been configured expect the system-wide
configuration files in some location other than /etc/dirvish.
Multiple configuration files will be loaded by the
--vault and
--branch command-line options as well as the
config: and
client: configuration parameters. To prevent looping each configuration
file can only be loaded once.
DIRVISH OPTIONS¶
Like the command line each option may be specified any number of times. Those
options that expect lists will accumulate all of their arguments and for
single value options each specification will override the ones before.
Boolean values need to specified as
1 or
0 or may be specified
using
SET or
UNSET. Some Boolean values are set by default and
must be explicitly unset if unwanted.
Each option is marked here with one of (B) for Boolean, (S) single value, (L)
list or (0) other.
- SET option option ... (O)
- UNSET option option ... (O)
- Set or unset one or more boolean options.
NOTE: The SET and UNSET directives do not use colons <:>.
- RESET option (O)
- Reset a list option so that it contains no values.
This may be used to start specification of the option.
NOTE: The RESET directive does not use a colon <:>.
- bank: (L)
- Specify paths to directories containing vaults.
A bank is a directory containing one or more vaults. The
system supports multiple banks so that filesystem mount-points can
be managed more effectively.
When a vault is specified the banks will be searched in list
order until the vault is found. This way vaults can be moved
between banks or added without having to update a master index.
Multiple bank: values will accumulate.
- branch: branch_name (S)
- Specify a branch to use.
A branch is a sequence of images.
This also specifies a default value for reference:.
Setting this in a config file may cause the command line option to be
overridden. Use branch-default: instead.
- branch-default: branch_name (S)
- Specify a default branch to use.
- client: [username@]client_name
(S)
- specify a client to back up.
Setting this to the same value as hostname will cause dirvish to do a local
copy and stay off the network. This automatically invokes
whole-file.
The first time this parameter is set /etc/dirvish/client_name
or /etc/dirvish/client_name.conf will be loaded.
- checksum: (B)
- Force the checksum comparison of file contents even when
the inode fails to indicate a change has occurred.
Default value: 0
- config: filename (S)
- Load configuration file.
Similar to #include, filename or filename.conf will be
loaded immediately.
If filename is a relative path it will be looked for in the vault and
then the system-wide configuration directories.
- devices: (B)
- If this is unset device special files will be excluded from
backups.
This may need to be unset when doing backups of where the client OS uses
device numbers or types unsupported by the server OSs or where the
presence of device nodes in the vault present a security issue.
- exclude: (L)
- Specify a filename patterns to exclude.
Patterns are based on shell glob with some enhancements.
See rsync(1) for more details.
Multiple exclude: values will accumulate.
- file-exclude: filename (S)
- Load a set of patterns from a file.
If filename is a relative path it will be looked for in the vault and
then the system-wide configuration directories.
- expire: expire_date (S)
- Specify a time for the image to expire.
This does not actually expire anything. What it does do is add an
Expire: option to the image summary file with the absolute
time appended so that dirvish-expire can automate old image
removal.
Setting this in a config file may cause the command line option to be
overridden. Use expire-rule: and expire-default: instead.
See Time::ParseDate(3pm) for more details.
- expire-default: expire_date (S)
- Specify a default expiration time.
This value will only be used if expire is not set and expire-rule doesn't
have a match.
- expire-rule: (L)
- specify rules for expiration.
Rules are specified similar to crontab or in
Time::Periodformat.
See EXPIRE RULES for more details.
Multiple expire-rule: values will accumulate.
- image: image_name (S)
- Specify a name for the image.
image_name is passed through POSIX::strftime
Setting this in a config file may cause the command line option to be
overridden. Use image-default: instead.
See strftime(3) for more details.
- image-default: image_name (S)
- Set the default image_name.
This value will only be used if image: is not set.
- image-perm: octal_mode (S)
- Set the permissions for the image.
While the image is being created the image directory
permissions will be 0700. After completion it will be changed to
octal_mode or 0755.
See chmod(1) and umask(2) for more details.
- image-time: parsedate_expression
(S)
- Time to use when creating the image name.
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 more details.
- image-temp: dirname (S)
- Temporary directory name to use for new image. This
allows you to have images created with the same directory name each
run so that automatic processes can access them.
The next time an image is made on the branch this option will cause
the directory to be renamed to its official name.
- index: none|text|gzip|bzip2 (S)
- Create an index file listing all files in the image.
The index file will be created using find -ls so the list will be in
the same format as ls-dils with paths converted to reflect the
source location.
If index is set to bzip2 or gzip or a path to one the index file will be
compressed accordingly.
This index will be used by dirvish-locate to locate versions of
files. See dirvish-locate(8) for more details.
- init: (B)
- Create an initial image.
Turning this on will prevent backups from being incremental.
- log: text|gzip|bzip2 (S)
- Specify format for the image log file.
If log is set to bzip2 or gzip or a path to one the log file will be
compressed accordingly.
- meta-perm: octal-mode (S)
- Set the permissions for the image meta-data files.
If this value is set the permissions of the meta-data files in the
image will be changed after the image is created. Otherwise
the active umask will prevail.
SECURITY NOTE: The log, index, and error files contain lists of files. It
may be possible that filenames themselves may be or contain confidential
information so uncontrolled access may constitute a security weakness.
See chmod(1) and umask(2) for more details.
- numeric-ids: (B)
- Use numeric uid/gid values instead of looking up user/group
names for setting permissions.
See rsync(1) for more details.
Default value: 1
- password-file: filepath (S)
- Specify file containing password for connection to an
rsync daemon on backup client.
This is not useful for remote shell passwords.
See --password-file in rsync(1) for more details.
- permissions: (B)
- Preserve file permissions. If this is unset permissions
will not be checked or preserved.
With rsync version 2.5.6 not preserving permissions will break the linking.
Only unset this if you are running a later version of rsync.
See rsync(1) for more details.
Default value: 1
- pre-server: shell_command (S)
- pre-client: shell_command (S)
- post-client: shell_command (S)
- post-server: shell_command (S)
- Execute shell_command on client or server before or
after making backup.
The client commands are run on the client system using the remote shell
command (see the rsh: parameter).
The order of execution is pre-server, pre-client,
rsync, post-client, post-server. The
shell_command will be passed through strftime(3) to allow
date strings to be expanded.
Each pre or post shell_commands will be run with these environment
variables DIRVISH_SERVER, DIRVISH_CLIENT,
DIRVISH_SRC, DIRVISH_DEST and DIRVISH_IMAGE set. The
current directory will be DIRVISH_SRC on the client and
DIRVISH_DEST on the server. If there are any exclude patterns
defined the pre-server shell command will also have the exclude
file's path in DIRVISH_EXCLUDE so it may read or modify the exlude
list.
STDOUT from each shell_command will be written to the
image log file.
The exit status of each script will be checked. Non-zero values will be
recognised as failure and logged. Failure of the pre-server command
will halt all further action. Failure of the pre-client command
will prevent the rsync from running and the post-server command, if
any, will be run.
Post shell_commands will also have DIRVISH_STATUS set to
success, warning, error, or fatal error.
This is useful for multiple things. The client shell_commands can be
used to stop and start services so their files can be backed up safely.
You might use post-server: to schedule replication or a tape backup
of the new image. Use your imagination.
- reference: branch_name|image_name
(S)
- Specify an existing image or a branch from
which to create the new image.
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.
If this isn't specified the branch name will be used as a default
value.
- rsh: command (S)
- Remote shell utility.
This can be used to specify the location of ssh or rsh and/or
to provide addition options for said utility such as -p
port for ssh to use an alternate port number.
If not specified ssh will be used.
This remote shell command will be used not only as the default rsync
transport but also for any pre-client and post-client
commands.
- rsync: command (S)
- Path to rsync executable on the server.
- rsync-client: command (S)
- Path to rsync executable on the client.
- rsync-option: (L)
- Specify additional options for the rsync command.
Only one option per list item is supported.
This allows you to use rsync features that are not directly supported by
dirvish. Where dirvish does support an rsync feature it is
probably better to use the the dirvish supplied mechanism for
setting it.
Multiple rsync-option: values will accumulate.
- sparse: (B)
- Try to handle sparse files efficiently so they take up less
space in the vault.
NOTE: Some filesystem types may have problems seeking over null
regions.
- speed-limit: Mbps (S)
- Specify a maximum transfer rate.
This allows you to limit the network bandwidth consumed. The value is
specified in approximate Mega-bits per second which correlates to network
transport specifications. An adaptive algorithm is used so the actual
bandwidth usage may exceed Mbps occasionally.
See --bwlimit in rsync(1) for more details.
- stats: (B)
- Have rsync report transfer statistics.
See rsync(1) for more details.
Default value: 1
- summary: short|long (S)
- Specify summary format.
A short summary will only include final used values. A long summary will
include all configuration values.
With long format you custom options in the configuration files will appear
in the summary.
The default is short.
- tree: path [alias] (S)
- Specify a directory path on the client to backup.
If path is prefixed with a colon the transfer will be done from an
rsync daemon on the client otherwise the transfer will be done
through a remote shell process.
The optional alias specifies the path that should appear in the index
so dirvish-locate will report paths consistant with common usage.
This can help reduce confusion when dealing with users unfamiliar with the
physical topology of their network provided files.
- no-run: (B)
- Don't actually do anything.
Process all configuration files, options and tests then produce a
summary/configuration file on standard output and exit.
I can't think why you would do this in a configuration file but if you want
to shoot yourself in the foot, be my guest.
- vault: vault (S)
- Specify the vault to store the image in.
Although multiple vaults may share a filesystem a given vault
cannot span filesystems. For filesystem purposes the vault is the
level of atomicity.
This will seldom be specified in a configuration file.
- whole-file: (B)
- Transfer whole files instead of just the parts that have
changed.
This may be slightly faster for files that have more changed than left the
same such as compressed or encrypted files. In most cases this will be
slower when transferring over the network but will use less CPU resources.
This will be faster if the transfers are not over the network or when the
network is faster than the destination disk subsystem.
- xdev: (B)
- Do not cross mount-points when traversing the tree on the
client.
- zxfer: (B)
- Enable compression on data-transfer.
SCHEDULING OPTIONS¶
- Dirvish: path (S)
- Location of dirvish executable.
If not set defaults to dirvish.
- Runall: (L)
- Specify branches to be scheduled for automated
backups. Each value is specified in the form
vault:branch [image_time]
If image_time is set here it will be used.
This option can only be set in the master configuration file and multiple
values will accumulate.
EXPIRE RULES¶
Expire rules is a list of rules used to determine an expiration time for an
image.
The last rule that matches will apply so list order is significant. This allows
rules to be set in client,
vault and
branch configuration files
to override rules set in the master configuration file without having to use
RESET. In most cases it is better to use a
expire-default: value
than to define a rule that matches all possible times.
Each rule has an pattern expression against which the current time is compared
followed by a date specifier in
Time::ParseDate format. See
Time::ParseDate(3pm) for more details.
A matching rule with an empty/missing date specifier or specifying
never
will result in no expiration.
The time pattern expression may be in either
crontab or in
Time::Period format. See
crontab(5) and Time::Period(3pm) for
more details.
The crontab formated patterns are converted to
Time::Period format so the
limitations and extensions for the specification of option values of
Time::Period apply to the
crontab format as well. Most notable
is that the days of the week are numbered
1-
7 for
sun-
sat so
0 is not a valid wday but
sat
is.
Here are two equivalent examples of an expire-rule list.
expire-default: +5 weeks
expire-rule:
#MIN HR DOM MON DOW EXPIRE
* * * * 1 +3 months
* * 1-7 * su +1 year
* * 1-7 1,4,7,10 1 never
* 10-20 * * * +10 days
or:
wd { sun } +3 months
wd { sun } md { 1-7 } +1 year
wd { 1 } md { 1-7 } mo { 1,4,7,10 } never
hr { 10-20 } +10 days
This describes is an aggressive retention schedule. If the nightly backup is
made dated the 1st Sunday of each quarter it is is kept forever, the 1st
Sunday of any other month is kept for 1 year, all other Sunday's are kept for
3 months, the remaining nightlies are kept for 5 weeks. In addition, if the
backup is made between 10AM and 8PM it will expire after 10 days. This would
be appropriate for someone with a huge backup server who is so paranoid he
makes two backups per day. The other possibility for the hour spec would be
for ad-hoc special backups to have a default that differs from the normal
dailies.
It should be noted that all expiration rules will do is to cause dirvish to put
an
Expire: option in the summary file. The
dirvish-expire
utility will have to be run to actually delete any expired
images.
FILES¶
- /etc/dirvish/master.conf
- alternate master configuration file.
- /etc/dirvish.conf
- master configuration file.
- /etc/dirvish/client[.conf]
- client configuration file.
- bank/vault/dirvish/default[.conf]
- default vault configuration file.
- bank/vault/dirvish/branch[.conf]
- branch configuration file.
- bank/vault/dirvish/branch.hist
- branch history file.
- bank/vault/image/summary
- image creation summary.
- bank/vault/image/log
- image creation log.
- bank/vault/image/tree
- actual image of source directory tree.
- bank/vault/image/rsync_error
- Error output from rsync if errors or warnings were
detected.
SEE ALSO¶
dirvish(8)
dirvish-expire(8)
dirvish-runall(8)
dirvish-locate(8)
ssh(1),
rsync(1)
Time::ParseDate(3pm)
strftime(3)
AUTHOR¶
Dirvish was created by J.W. Schultz of Pegasystems Technologies.
BUGS¶
Rsync version 2.5.6 has a bug so that unsetting the
perms option will not
disable testing for permissions. Disabling perms will break image linking.
Options set in configuration files will override command line options that have
been set before the file is read. This behaviour while consistent may confuse
users. For this reason the more frequently used command line options have
options paired with a
default option so the order of specification will
be more forgiving. It is recommended that where such default options exist in
configuration files they should be preferred over the primary option.
It is possible to specify almost any command line option as a option. Some of
them just don't make sense to use here.