#
package "dss"
-version "0.0.3"
+version "0.0.4"
purpose "the dyadic snapshot scheduler
dss creates hardlink-based snapshots of a given directory on a remote
configuration file. As usual, if an option is given both at
the command line and in the configuration file, the command
line option takes precedence.
+
+ However, there is an important exception to this rule:
+ If the --run option was given (see below) then dss honors
+ SIGHUP and re-reads its configuration file whenever it
+ receives this signal. In this case the options in the config
+ file override any options that were previously given at the
+ command line. This allows to change the configuration of a
+ running dss process on the fly by sending SIGHUP.
"
option "daemon" d
Note that dss refuses to start in daemon mode if no logfile
was specified. This option is mostly useful in conjuction
with the -R option described below.
+
+ Note that it is not possible to change whether dss runs as
+ background daemon by sending SIGHUP.
"
option "dry-run" D
default="3"
optional
details="
- Lower values mean less verbose logging.
+ Lower values mean more verbose logging.
"
option "logfile" -
defgroup "command"
#=================
groupdesc="
- dss supports a couple of commands each of which corresponds to a different
- command line option. Exactly one of these options must be given.
+ dss supports a couple of commands each of which corresponds
+ to a different command line option. Exactly one of these
+ options must be given.
"
required
"Create a new snapshot"
group="command"
details="
- Execute the rsync command to create a new snapshot. Note that this
- command does not care about free disk space.
+ Execute the rsync command to create a new snapshot. Note that
+ this command does not care about free disk space.
"
+
groupoption "prune" P
#~~~~~~~~~~~~~~~~~~~~
"Remove a redundant snapshot"
#~~~~~~~~~~~~~~~~~~~~
"The data directory"
string typestr="dirname"
-optional
+required
details="
The directory on the remote host from which snapshots are
taken. Of course, the user specified as --remote-user must
#~~~~~~~~~~~~~~~~~~
"Snapshot dir"
string typestr="dirname"
-optional
+required
details="
The destination directory on the local host where snapshots
will be written. This must be writable by the user who runs
default="4"
optional
details="
- dss snapshot aging is implemented in terms of intervals. There are
- two command line options related to intervals: the duration of a
- \"unit\" interval and the number of those unit intervals.
-
- dss removes any snapshots older than the given number of intervals
- times the duration of a unit interval and tries to keep the following
- number of snapshots per interval:
-
- interval number number of snapshots
- ===============================================
- 0 2 ^ (num-intervals - 1)
- 1 2 ^ (num-intervals - 2)
- 2 2 ^ (num-intervals - 3)
- ...
- num-intervals - 2 2
- num-intervals - 1 1
- num-intervals 0
-
- In other words, the oldest snapshot will at most be unit_interval *
- num_intervals old (= 5 days * 4 = 20 days if default values are used).
- Moreover, there are at most 2^num_intervals - 1 snapshots in total
- (i. e. 31 by default). Observe that you have to create at least
- 2 ^ (num_intervals - 1) snapshots each interval for this to work out.
+ dss snapshot aging is implemented in terms of intervals. There
+ are two command line options related to intervals: the
+ duration u of a \"unit\" interval and the number n of those
+ unit intervals.
+
+ dss removes any snapshots older than n times u and tries to
+ keep 2^(k-1) snapshots in interval k, where the interval number
+ k counts from zero, zero being the most recent unit interval.
+
+ In other words, the oldest snapshot will at most be u * n days
+ (= 20 days if default values are used) old. Moreover, there
+ are at most 2^n - 1 snapshots in total (i. e. 31 by default).
+ Observe that you have to create at least 2 ^ (n - 1) snapshots
+ each interval for this to work out because that is the number
+ of snapshots in interval zero.
"
option "num-intervals" n
#~~~~~~~~~~~~~~~~~~~~~~~~~~
"Executed before snapshot creation"
string typestr="command"
-default="/bin/true"
optional
details="
Execute this command before trying to create a new snapshot.
- If this command returns with a non-zero exit status, do not
- perform the backup. One possible application of this is to
- return non-zero during office hours in order to not slow down
- the file systems by taking snapshots.
-"
+ If this command returns with a non-zero exit status, no
+ snapshot is being created and the operation is retried later.
+
+ For example, one might want to execute a script that checks
+ whether all snapshot-related file systems are properly mounted.
+ Another possible application of this is to return non-zero
+ during office hours in order to not slow down the file systems
+ by taking snapshots.
+"
option "post-create-hook" o
#~~~~~~~~~~~~~~~~~~~~~~~~~~
"Executed after snapshot creation"
string typestr="command"
-default="/bin/true"
optional
details="
- Execute this after a snapshot has successfully been created
- The return value on the command is ignored. For instance one
- could count the number of files per user and/or the disk
- usage patterns in order to store them in a database for
- further treatment.
+ Execute this after a snapshot has successfully been
+ created. The full path of the newly created snapshot is passed
+ to the hook as the first argument. The return value of that
+ hook is ignored.
+
+ For instance this hook can be used to count the number of
+ files per user and/or the disk usage patterns in order to
+ store them in a database for further treatment.
"
###############################
default="100"
optional
details="
- If less than this many megabytes of space is available on
- the file system containing the destination directory, \"dss
- --run\" will suspend the currently running rsync process and will
- start to remove snapshots, starting from the oldest snapshot,
- until the free disk space exceeds this value. See also the
- --min_free_percent option.
+ If disk space on the file system containing the destination
+ directory gets low, \"dss --run\" will suspend the currently
+ running rsync process and will start to remove snapshots in
+ order to free disk space. This option specifies the minimal
+ amount of free disk space. If less than the given number of
+ megabytes is available, snapshots are being deleted. See also
+ the --min_free_percent and the min-free-percent-inodes options.
A value of zero deactivates this check.
-
"
option "min-free-percent" p
default="2"
optional
details="
- See --min-free-mb. Note that it is not recommended to set both
+ See --min-free-mb. Note that it is not recommended to set both
--min-free-mb and --min-free-percent to zero as this will
cause your file system to fill up quickly.
"
+option "min-free-percent-inodes" i
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+"Minimal percent of free inodes"
+int typestr="percent"
+default="2"
+optional
+details="
+ Specify the minimum amount of free inodes on the file system
+ containing the destination dir. If less than that many inodes
+ are free, snatshot removal kicks in just as in case of low
+ disk space.
+
+ A value of zero deactivates this check.
+"