Add dss.png to .gitignore.
[dss.git] / dss.ggo
diff --git a/dss.ggo b/dss.ggo
index db119015e9a64c49f0be1edcc4cc88d4ff5c3816..12871eaa9eabd78bb8006f2ca2b636b2c486dd92 100644 (file)
--- a/dss.ggo
+++ b/dss.ggo
@@ -3,7 +3,7 @@
 # Licensed under the GPL v2. For licencing details see COPYING.
 
 package "dss"
-version "0.1.5"
+version "0.1.7"
 purpose "the dyadic snapshot scheduler
 
 dss creates hardlink-based snapshots of a given directory on a remote
@@ -38,14 +38,12 @@ option "daemon" d
 #~~~~~~~~~~~~~~~~
 "Run as background daemon"
 flag off
-dependon="logfile"
 details="
-       Note that dss refuses to start in daemon mode if no logfile
-       was specified. This option is mostly useful in conjunction
-       with the -R option described below.
+       This option is mostly useful in conjunction with the -R option
+       described below.
 
-       Note that it is not possible to change whether dss runs as
-       background daemon by sending SIGHUP.
+       Note that it is not possible to change whether dss runs as background
+       daemon by sending SIGHUP.
 "
 
 option "dry-run" D
@@ -77,10 +75,14 @@ option "logfile" -
 "Logfile for the dss daemon process"
 string typestr="filename"
 optional
+default="/dev/null"
 details = "
        This option is only honored if both --run and --daemon are
-       given. Otherwise it is silently ignored and log output is
-       written to stderr.
+       given. Otherwise it is silently ignored and log output is written
+       to stderr.
+
+       The default value means that nothing will be logged in daemon mode
+       unless this option is given.
 "
 
 ##################
@@ -244,6 +246,26 @@ details="
                --rsync-option --exclude --rsync-option /proc
 "
 
+option "max-rsync-errors" -
+"Terminate after this many rsync failures"
+int typestr="count"
+default="10"
+optional
+details="
+       Only relevant when operating in --run mode (see above). If
+       the rsync process exits with a fatal error, dss restarts
+       the command in the hope that the problem is transient
+       and subsequent rsync runs succeed. After the given number
+       of consecutive rsync error exits, however, dss gives up,
+       executes the exit hook and terminates. Set this to zero if
+       dss should exit immediately on the first rsync error.
+
+       The only non-fatal error is when rsync exits with code 24. This
+       indicates a partial transfer due to vanished source files
+       and happens frequently when snapshotting a directory which
+       is concurrently being modified.
+"
+
 ###################
 section "Intervals"
 ###################
@@ -255,22 +277,21 @@ int typestr="days"
 default="4"
 optional
 details="
-       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^(n - 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.
+       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 of unit intervals, denoted n below.
+
+       dss removes snapshots older than n times u and tries to keep 2^(n -
+       k - 1) snapshots in interval k, where the interval number k counts
+       from zero to n - 1, with zero being the most recent unit interval.
+
+       Hence the oldest snapshot will at most be u * n days old (4 days *
+       5 intervals = 20 days, if default values are used). Moreover, there
+       are at most 2^n - 1 snapshots in total (2^5 - 1 = 31 by default). Note
+       that for this to work out your system must be fast enough to create at
+       least 2^(n - 1) snapshots per unit interval (16 snapshots in 4 days =
+       one snapshot in 6 hours), because this is the number of snapshots in
+       interval zero.
 "
 
 option "num-intervals" n
@@ -279,6 +300,10 @@ option "num-intervals" n
 int typestr="num"
 default="5"
 optional
+details="
+       Note that increasing this number by one doubles the total number of
+       snapshots. See the documentation of --unit-interval above.
+"
 
 ###############
 section "Hooks"
@@ -431,13 +456,10 @@ option "keep-redundant" k
 "Prune by disk space only"
 flag off
 details="
-       If this flag is not given dss removes redundant and outdated
-       snapshots automatically.
-
-       Otherwise, this feature is deactivated so that snapshots are
-       only being removed in case disk space or number of free inodes
-       becomes low. Use this flag if the file system containing the
-       destination directory is used for snapshots only.
+       By default, redundant and outdated snapshots are removed automatically
+       to keep the number of snapshots in harmony with the configured
+       policy. If this flag is given, dss removes such snapshots only if
+       disk space or number of free inodes becomes low.
 "
 
 option "min-complete" -