commit d0cb0c3d1ff47329425c2889cc1e1be68c31ae6d
parent a7eed0936afc128967bcb194b5fbb56938a2b359
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date: Fri, 21 Feb 2014 20:41:33 +0100
readme
Diffstat:
2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/.bzrignore b/.bzrignore
@@ -0,0 +1 @@
+empty
diff --git a/README.rst b/README.rst
@@ -0,0 +1,55 @@
+===================
+snapshot replicator
+===================
+
+Collection of scripts for creating, managing & replicating filesystem
+snapshots, deduplicated using hardlinks. Written using rsync, POSIX sh & awk.
+
+This projects contains loose collection of scripts which can be chained to
+allow arbitrary workflow. It's possible to restrict access both in push and
+pull mode so in case one of machines is compromised no harm will come to
+other, except for filling up the drive assigned to snapshots. Authentication
+and encryption may be provided by SSH, TLS or any other layer that can handle
+bidirectional data stream.
+
+filesystem layout
+-----------------
+
+Each sequence of snapshots is stored inside a directory. Each snapshot is
+in subdirectory whose name is unix timestamp of time the snapshot was taken,
+written as decimal integer. This uniquely identifies the specific snapshot in
+a sequence. Also in the snapshot sequence directory there is empty file named
+same as the snapshot with ``.snapshot.`` prepended for every snapshot that has
+been completed successfully. Snapshots lacking corresponding file are
+considered unfinished and are not replicated. This empty file also usually
+resides in the snapshot directory itself and serves same purpose for
+shares specified in ``rsyncd.conf``.
+
+usage
+-----
+
+You can use ``snap.push`` to replicate all snapshots in a sequence not present
+in destination directory or ``snap.push.single`` to replicate single snapshot
+only.
+
+local destination
+~~~~~~~~~~~~~~~~~
+
+Snapshot is saved directly in timestamped directory. Files for hardlinking are
+looked in snapshot with highest timestamp.
+
+plain ssh / remote shell
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Currently unimplemented. Use daemon mode instead. See USING RSYNC-DAEMON
+FEATURES VIA A REMOTE-SHELL CONNECTION in rsync manpage.
+
+todo
+----
+
+* when replicating locally give option to update ``./new`` directory.
+
+* plain ssh destination (call snap.rsync.pre and snap.rsync.post on remote
+ side)
+
+* old snapshot pruning / rotation