From 091cc575efbb42439209dfc3be35d229af8e791f Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sat, 25 Aug 2018 08:47:57 +0200 Subject: [PATCH] Automate backup with cron --- files/choux_borg_cron.sh | 54 +++++++++++++++++++++++++++++++++++++ tasks/borg_backup.yml | 6 ----- tasks/choux_borg_backup.yml | 15 +++++++++++ vars/Choux.yml | 3 +++ 4 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 files/choux_borg_cron.sh delete mode 100644 tasks/borg_backup.yml create mode 100644 tasks/choux_borg_backup.yml diff --git a/files/choux_borg_cron.sh b/files/choux_borg_cron.sh new file mode 100644 index 0000000..27fb16c --- /dev/null +++ b/files/choux_borg_cron.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Script de sauvegarde. +# +# Envoie les sauvegardes sur un serveur distant, via le programme borg. +# Les sauvegardes sont chiffrées +# +# http://borgbackup.readthedocs.or/g +# +# Est lancé quotidiennement. + +set -e + +ts_log() +{ + echo `date '+%Y-%m-%d %H:%m:%S'` $1 >> ${LOG_PATH} + su {{ me[0].username }} -c "DISPLAY=:0 notify-send 'Borgbackup' '`date '+%Y-%m-%d %H:%m:%S'`' $1" + # su lafrite -c "DISPLAY=:0 notify-send 'Borgbackup' '`date '+%Y-%m-%d %H:%m:%S'` $1'" +} + +# Trap on non-zero exit +# trap '[ "$?" -eq 0 ] || cleanup' EXIT + +BACKUP_DATE=`date +%Y-%m-%d` +LOG_PATH=/var/log/borg-backup.log + +BORG=/usr/bin/borg +# Fichier dans lequel est stocké la passphrase du dépôt borg +# (attention aux permissions) +export BORG_PASSPHRASE="`cat /root/.borg/passphrase`" +BORG_REPOSITORY={{ borg_backup_repo }} +# BORG_REPOSITORY=/media/backup/Choux +BORG_ARCHIVE=${BORG_REPOSITORY}::${BACKUP_DATE} + +BACKUPED_DIR="/media/documents /home/" + +ts_log "Starting new backup ${BACKUP_DATE}..." + +ts_log "Pushing archive ${BORG_ARCHIVE}" +$BORG create \ + -v --stats --compression none \ + $BORG_ARCHIVE \ + $BACKUPED_DIR + -e 'lost+found' + >> ${LOG_PATH} 2>&1 + +ts_log "Rotating old backups." +$BORG prune -v $BORG_REPOSITORY \ + --keep-daily=7 \ + --keep-weekly=4 \ + --keep-monthly=6 \ + >> ${LOG_PATH} 2>&1 + +ts_log "Backup done" diff --git a/tasks/borg_backup.yml b/tasks/borg_backup.yml deleted file mode 100644 index 5e662cb..0000000 --- a/tasks/borg_backup.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- name: Install borgbackup - pacman: - name: borg - state: present - diff --git a/tasks/choux_borg_backup.yml b/tasks/choux_borg_backup.yml new file mode 100644 index 0000000..2980c3d --- /dev/null +++ b/tasks/choux_borg_backup.yml @@ -0,0 +1,15 @@ +--- +- name: Install borgbackup + pacman: + name: borg + state: present + +- name: Automate toward local RAID backup with cron.daily + template: + src: files/choux_borg_cron.sh + dest: /etc/cron.daily/ + mode: 755 + + + + diff --git a/vars/Choux.yml b/vars/Choux.yml index a78520b..74a5807 100644 --- a/vars/Choux.yml +++ b/vars/Choux.yml @@ -2,3 +2,6 @@ deploy_public_key: files/id_ed25519_home.pub +borg_backup_repo: /media/backup/Choux + +