#!/bin/bash HOME=/home/nathan DOCKER=$HOME/docker BACKUP=$HOME/backup/ DIRS=('anetwork.uk' 'aney.co.uk' 'mariadb' 'npm' 'vaultwarden') #DIRS=('nginx' 'npm' 'umami' 'uptimekuma' 'vaultwarden') #DIRS=( "$DOCKER"/*/ ) REMOTE=alphavps REMOTEBACKUP=/home/nathan/backups/docker/rn2 # Run the mariadb/mysql backup script for the docker container /bin/bash /home/nathan/docker/mariadb/scripts/backup.txt # Backup the docker containers # requires rdiff-backup rsync docker-compose # also setup .ssh/config for alphavps, and add to a cronjob (as root) for i in "${DIRS[@]}" do #echo $i # Stop docker containers before backup incase any moving parts cd $DOCKER/$i docker compose stop rdiff-backup $DOCKER/$i $BACKUP/$i rdiff-backup --force --remove-older-than 2M $BACKUP/$i docker compose start done # Create the remote directory for backup if it doesn't exist ssh $REMOTE mkdir -p $REMOTEBACKUP # Copy the backup accross # -e ssh makes it secure rsync -azh -e ssh \ --delete \ $BACKUP \ $REMOTE:$REMOTEBACKUP ## Now backup the websites (one offs) REMOTEBACKUP=/home/nathan/backups/websites/rn2 # Create the remote directory for backup if it doesn't exist ssh $REMOTE mkdir -p $REMOTEBACKUP rsync -azh -e ssh \ --delete \ $HOME/websites \ $REMOTE:$REMOTEBACKUP ## Crontab (has the backup scripts called) REMOTEBACKUP=/home/nathan/backups/cron/rn2 # Create the remote directory for backup if it doesn't exist ssh $REMOTE mkdir -p $REMOTEBACKUP rsync -azh -e ssh \ --delete \ /var/spool/cron/crontabs \ $REMOTE:$REMOTEBACKUP