make
-in the dss source directory to build the dss executable. You
-likely need a recent version of gnu gengetopt,
-ftp://ftp.gnu.org/pub/gnu/gengetopt/, to compile dss.
+in the dss source directory to build the dss executable and copy it to
+some directory that is included in your PATH, e.g. to $HOME/bin or to
+/usr/local/bin.
+
+Note that https://www.gnu.org/software/gengetopt/gengetopt.html (gnu gengetopt)
+is required to compile dss.
+
+Optionally, type
+
+ make man
+
+to create the man page of dss. This invokes help2man so make sure
+that help2man is installed on your system. Note that the man page is
+just the nroff variant of the output of "dss --detailed-help".
dss is known to compile on Linux, MacOS, Solaris, FreeBSD and
-NetBSD. However, it is run-tested on Linux only.
+NetBSD. However, it is run-tested only on Linux.
-Also make sure that rsync, http://rsync.samba.org/, is installed on
+Also make sure that http://rsync.samba.org/ (rsync) is installed on
your system. Version 2.6.1 or newer is required.
-In order to create snapshots of the existing directory
+Examples:
+---------
- /tmp/foo
+Suppose you'd like to create snapshots of the existing directory
+
+ /foo/bar
in the directory
- /tmp/bar,
+ /baz/qux.
-execute the commands
+Create the config file
- mkdir /tmp/bar
- ./dss --run --source-dir /tmp/foo --dest-dir /tmp/bar
+ ~/.dssrc
-To print a list of all snapshots created so far, use
+that contains the values for the source and the destination directories
+as follows:
- ./dss --list --source-dir /tmp/foo --dest-dir /tmp/bar
+ echo 'source-dir "/foo/bar"' > ~/.dssrc
+ echo 'dest-dir "/baz/qux"' >> ~/.dssrc
-You might want to create the config file
+Then execute the commands
- ~/.dssrc
+ mkdir /baz/qux
+ dss --run
-that contains the values for the source and the destination
-directories. In the above example, this file would contain the
-following lines:
+In order to print the list of all snapshots created so far, use
- source-dir "/tmp/foo"
- dest-dir "/tmp/bar"
+ dss --ls
-Using a configuration file allows you to simply type
+Yes, it's really that easy.
- ./dss --run
+The second example involves a slightly more sophisticated config file.
+It instructs dss to exclude everything which matches at least one
+pattern of the given exclude file, prevents rsync from crossing file
+system boundaries and increases the number of snapshots.
-to start snapshot creation and
+ source-dir "/foo/bar"
+ dest-dir "/baz/qux"
+ # exclude files matching patterns in /etc/dss.exclude
+ rsync-option "--exclude-from=/etc/dss.exclude"
+ # don't cross filesystem boundaries
+ rsync-option "--one-file-system"
+ # maintain 2^6 - 1 = 63 snaphots
+ num-intervals "6"
- ./dss --list
+The /etc/dss.exclude file could look like this (see rsync(1) for
+more examples)
-to list all avalable snapshots.
+
+ - /proc
+ - /**/tmp/
-Try
+Note that dss supports many more features and config options such
+as taking snapshots from remote hosts and several hooks that are
+executed on certain events, for example whenever a snapshot was
+created successfully. Try
- ./dss -h
+ dss -h
for an overview of all supported command line options or
- ./dss --detailed-help
+ dss --detailed-help
for the full help text.