diff --git a/roles/dokuwiki/tasks/main.yml b/roles/dokuwiki/tasks/main.yml index 65d822d..6f570e8 100644 --- a/roles/dokuwiki/tasks/main.yml +++ b/roles/dokuwiki/tasks/main.yml @@ -56,4 +56,9 @@ vars: website_url: "{{ dokuwiki_url }}" website_webroot: "{{ dokuwiki_webroot }}" + - name: Template out backup module: + template: + src: "backup.sh" + dest: "/opt/backups/modules" + mode: "0600" become: yes diff --git a/roles/dokuwiki/templates/backup.sh b/roles/dokuwiki/templates/backup.sh new file mode 100644 index 0000000..e6a176a --- /dev/null +++ b/roles/dokuwiki/templates/backup.sh @@ -0,0 +1,38 @@ +#! /bin/bash +# +# gitea.sh +# Backup script for Gitea. Meant to be sourced by our main backup script +# Copyright (C) 2020 Vintage Salt +# +# Distributed under terms of the MIT license. +# + +set -e + +export OUTDIR="$BACKUPSDIR/{{ dokuwiki_url }}" +retention=7 # 7-day retention period + +# Sanity checks +if [ -z "$BACKUPSDIR" ]; then + log "BACKUPSDIR was undefined. Run the main backup script instead of this one." + return 1 +fi +if ! [ -d "$OUTDIR" ]; then + if ! mkdir "$OUTDIR"; then + log "Unable to find or create output directory: $OUTDIR" + return 2 + fi +fi + +# Purge oldest backup if we need to +currentbackupcount="$(ls -1 "$OUTDIR" | wc -l)" +if (( currentbackupcount >= retention )); then + lastbackup="$(find "$OUTDIR" -name \*.zip 2>/dev/null | sort | head -n 1)" + if [ -f "$lastbackup" ]; then + log "Removing old backup: $lastbackup" + rm "$lastbackup" + fi +fi +# WE MAKE BACKUP NOW SERGEI +tar czf "$OUTDIR/$(date -Iseconds).tar.gz" "{{ dokuwiki_webroot }}" +