= Backup Control Scripting
:author: Ralph Ronnquist
:revdate: Sun, 30 Apr 2023 21:32:28 +1000


The script +dupltool+ is a wrapper for +duplicity+ that usually just
invokes +duplicity+ with all arguments passed on, but every month it
first makes a stash of the most recent succession of daily snapshots,
so that the duplicity run at this time is a monthly snapshot.

The script +duplicity-daily+ is a simple control script for daily
backup that uses configuration from +/etc/duplicity-daily.conf+ that
defines which backups to make, and from +~/.ssh/config+ as to how to
connect to the target host (or hosts).

== Administration Example

.This is a +/etc/duplicity-daily+ sample
----
ENABLED=yes
OPTIONS=--no-encryption
TARGET=backup/backup
/root
/etc
/home
----

The above sample declares backup (without encryption) of directory
trees +/root+, +/etc+, +/home+ to host +backup+ (as declared in
+~/.ssh/config+) into directories under the user's directory +backup+.

.This is a +~/.ssh/config+ sample
----
host backup
    hostname backup.lan
    user thishost
    identityfile ~/.ssh/thishost-backup
    ServerAliveInterval 15
    ServerAliveCountMax 4
    TCPKeepAlive yes
    RekeyLimit 100M
    IPQoS reliability
----

Note that for the above sample, the backup client +root@thishost+ has
prepared a password-less ssh key to +thishost@backup.lan+ so that
daily backup can happen without operator intervention.

== Debian Package


A debian package is built with
----
$ make deb
----
provided that the build environment is set up, i.e. an ordinary debian
package building environment.

The package is then installed with
----
# dpkg -i ../buckap_<TAB>
----
Doing so will install +/usr/bin/dupltool+ and
+/etc/cron.daily/duplicity-daily+, as well as providing an example
+/etc/duplicity-daily.conf+ (incuding rudimentary instructions).
