Add dss.1 and dss.1.html to .gitignore.
[dss.git] / dss.ggo
diff --git a/dss.ggo b/dss.ggo
index b5eeba8352b9c116b00565487c5af0389c14c6cd..7afa4ca94237c70b17563ce206d125372dfead7a 100644 (file)
--- a/dss.ggo
+++ b/dss.ggo
@@ -1,6 +1,9 @@
+# Copyright (C) 2008 Andre Noll <maan@systemlinux.org>
 #
+# Licensed under the GPL v2. For licencing details see COPYING.
+
 package "dss"
-version "0.0.4"
+version "0.1.0"
 purpose "the dyadic snapshot scheduler
 
 dss creates hardlink-based snapshots of a given directory on a remote
@@ -79,12 +82,17 @@ details="
        is also given.
 "
 
+##################
+section "Commands"
+##################
+
 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.
+
 "
 required
 
@@ -99,13 +107,14 @@ details="
 
 groupoption "prune" P
 #~~~~~~~~~~~~~~~~~~~~
-"Remove a redundant snapshot"
+"Remove redundant and outdated snapshots"
 group="command"
 details="
-       A snapshot is considered redundant if it ether belongs to
-       an interval greater than the maximum number of intervals,
-       or if it belongs to an interval that already contains more
-       than the desired number of snapshots.
+       A snapshot is considered outdated if it belongs to an interval
+       greater than the maximum number of intervals. It is said to be
+       redundant if it belongs to an interval that already contains
+       more than the desired number of snapshots. This command gets
+       rid of such snapshots.
 "
 
 groupoption "ls" L
@@ -124,7 +133,9 @@ groupoption "run" R
 group="command"
 details="
        This is the main mode of operation. Snapshots will be created
-       as needed and pruned automatically.
+       in an endless loop as needed and pruned automatically. The loop
+       only terminates on fatal errors or if a terminating signal was
+       received. See also the --exit-hook option.
 "
 
 ###############################
@@ -205,13 +216,14 @@ details="
        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.
+       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
+       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.
 "
@@ -252,13 +264,29 @@ string typestr="command"
 optional
 details="
        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.
+       created. The full path of the newly created snapshot is
+       passed to the hook as the first argument.  The exit code of
+       this 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.
+       store them in a database for further analysis.
+"
+
+option "exit-hook" e
+#~~~~~~~~~~~~~~~~~~~
+"Executed if run command exits"
+string typestr="command"
+optional
+details="
+       This hook is only used if the --run command was given which
+       instructs dss to run in an endless loop. The exit-hook gets
+       executed whenever this endless loop terminates. The reason
+       for terminating the loop is passed as the first argument.
+
+       One possible application for this hook is to send email to the
+       system administrator to let her know that no more snapshots
+       are going to be created.
 "
 
 ###############################
@@ -303,7 +331,7 @@ 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
+       are free, snapshot removal kicks in just as in case of low
        disk space.
 
        Note that not every file system supports the concept of inodes.
@@ -313,3 +341,17 @@ details="
 
        A value of zero (the default) deactivates this check.
 "
+
+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 inode ratio
+       becomes low. Use this flag if the file system containing the
+       destination directory is used for snapshots only.
+"