From 2d3d0ba0a9c3d63a8d7642b5c212e5f4b8787e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=B3=20Albert=20i=20Beltran?= Date: Sat, 12 Feb 2022 06:56:44 +0100 Subject: [PATCH] Backup scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Simó Albert i Beltran --- sysadm/dd-backup | 35 +++++++++++++++++++++++++++++++++++ sysadm/dd-borg | 30 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100755 sysadm/dd-backup create mode 100755 sysadm/dd-borg diff --git a/sysadm/dd-backup b/sysadm/dd-backup new file mode 100755 index 0000000..1d59931 --- /dev/null +++ b/sysadm/dd-backup @@ -0,0 +1,35 @@ +#!/bin/bash -e +# bash needed to trap ERR + +BACKUP_SERVER="${BACKUP_SERVER-$(hostname)@192.168.100.2}" + +trap maintenance_disable SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM ERR + +maintenance_disable(){ + docker-compose exec -T isard-apps-moodle php7 admin/cli/maintenance.php --disable + docker-compose exec -T -u www-data isard-apps-nextcloud-app php occ maintenance:mode --off + docker-compose run isard-apps-wordpress-cli wp maintenance-mode deactivate +} + +cd /opt/src/digitaldemocratic/ + +docker-compose exec -T isard-apps-moodle php7 admin/cli/maintenance.php --enable +docker-compose exec -T -u www-data isard-apps-nextcloud-app php occ maintenance:mode --on +docker-compose run isard-apps-wordpress-cli wp maintenance-mode activate + +mkdir -p /opt/digitaldemocratic/db_dump + +docker-compose exec -T isard-apps-postgresql pg_dumpall -U admin > /opt/digitaldemocratic/db_dump/postgres.sql + +docker-compose exec -T isard-apps-mariadb sh -c 'mysqldump -p"$MYSQL_ROOT_PASSWORD" --all-databases --all-tablespaces' > /opt/digitaldemocratic/db_dump/mariadb.sql + +docker-compose exec -T isard-apps-redis redis-cli SAVE +docker-compose exec -T isard-apps-redis cat dump.rdb > /opt/digitaldemocratic/db_dump/redis.rdb + +rsync -aHAX --del /opt/digitaldemocratic/ $BACKUP_SERVER:opt_digitaldemocratic/ + +rsync -aHAX --del /opt/src/ $BACKUP_SERVER:opt_src/ + +date +"%Y-%m-%d_%H:%M:%S" | ssh $BACKUP_SERVER tee backup_date + +maintenance_disable diff --git a/sysadm/dd-borg b/sysadm/dd-borg new file mode 100755 index 0000000..460a564 --- /dev/null +++ b/sysadm/dd-borg @@ -0,0 +1,30 @@ +#!/bin/sh -e + +BACKUP_SERVER="${BACKUP_SERVER-dd-backups@backup.digitaldemocratic.net}" +BORG_PASSCOMMAND="${BORG_PASSCOMMAND-cat $HOME/.borg-passphrase}" + +wait_backup(){ + if ! [ -f /home/$1/backup_date ] + then + exit + fi + current_date="$(date +"%Y-%m-%d")" + while ! [ "$current_date" = "$(cut -b1-10 /home/$1/backup_date)" ] + do + sleep 60 + if [ "$current_date" != "$(date +"%Y-%m-%d")" ] + then + echo "No backup for $1 at $current_date" >&2 + exit 1 + fi + done + export BORG_PASSCOMMAND + borg create ssh://$BACKUP_SERVER/~/$1.borg::$(cat /home/$1/backup_date) /home/$1 + borg prune -d7 -w4 -m12 -y5 ssh://$BACKUP_SERVER/~/$1.borg +} + + +for item in $(ls /home) +do + wait_backup $item & +done