Add script to make working with duplicity easier
diff --git a/backupninja/client.sls b/backupninja/client.sls
index 0c757c4..8ae8711 100644
--- a/backupninja/client.sls
+++ b/backupninja/client.sls
@@ -77,6 +77,17 @@
pkg.installed:
- names:
- duplicity
+
+duplicity_salt:
+ file.managed:
+ - name: /usr/local/sbin/duplicity_salt.sh
+ - source: salt://backupninja/files/duplicity_salt.sh
+ - template: jinja
+ - mode: 700
+ - user: root
+ - group: root
+ - require:
+ - pkg: backupninja_packages
{%- endif %}
{%- if client.target.engine in ["rdiff",] %}
diff --git a/backupninja/files/duplicity_salt.sh b/backupninja/files/duplicity_salt.sh
new file mode 100644
index 0000000..f32f270
--- /dev/null
+++ b/backupninja/files/duplicity_salt.sh
@@ -0,0 +1,64 @@
+{%- from "backupninja/map.jinja" import client, service_grains with context -%}
+#!/bin/bash
+
+DUPLICITY_ARGS="--no-encryption --progress --ssl-cacert-file={{ client.cacert_file }}"
+BACKUP_URL="{{ client.target.url }}"
+
+while getopts :f:d:v: opt; do
+ case "$opt" in
+ "f") FILE="${OPTARG}" ;;
+ "d") DEST="${OPTARG}" ;;
+ "v") set -x ;;
+ "?") echo "Unknown option $opt"; exit 1 ;;
+ ":") echo "No argument value for $opt"; exit 1 ;;
+ esac
+done
+shift $((OPTIND-1))
+
+action_prepare() {
+ trap action_cleanup INT TERM EXIT
+ {%- if client.target.auth.gss is defined %}
+ kinit -kt {{ client.target.auth.gss.get("keytab", "/etc/krb5.keytab") }} {{ client.target.auth.gss.get("principal", "host/$(hostname -f)") }}
+ {%- else %}
+ return 0
+ {%- endif %}
+}
+
+action_cleanup() {
+ trap true INT TERM EXIT
+ {%- if client.target.auth.gss is defined %}
+ kdestroy || true
+ {%- else %}
+ return 0
+ {%- endif %}
+}
+
+restore() {
+ RESTORE_ARGS=""
+ [ ! -z "$FILE" ] && RESTORE_ARGS="${RESTORE_ARGS} --file-to-restore=${FILE}"
+ duplicity ${DUPLICITY_ARGS} restore ${BACKUP_URL} "${DEST}" ${RESTORE_ARGS}
+}
+
+status() {
+ duplicity ${DUPLICITY_ARGS} collection-status ${BACKUP_URL}
+}
+
+list_files() {
+ duplicity ${DUPLICITY_ARGS} list-current-files ${BACKUP_URL}
+}
+
+usage() {
+ echo "Usage: $0 [restore|list-files|status]"
+ echo " restore - restore files from backup"
+ echo " Usage: $0 restore -f [file_to_restore] -d [destination]"
+ echo " list-files - list last backup files"
+ echo " status - show collection status"
+ exit 1
+}
+
+case $1 in
+ restore) action_prepare && restore ;;
+ status) action_prepare && status ;;
+ list-files) action_prepare && list_files ;;
+ *) usage ;;
+esac