#!/bin/bash #title : aos-npbackup-sync.sh #description : Backup (rsync) AoS.Health instance ProxMox Dump Files to remote Host #author : Steven Uggowitzer for eSHIFT.org #date : 20220221 #version : 0.1 #usage : bash aos-npbackup-sync.sh Script should likely be run from cron job #notes : As it is, this script relies on host np-backup.nitc to be defined in # the /etc/hosts file of the server running this script. #============================================================================== # See /etc/hosts file for actual IP address being used. REMOTEUSER=nphl-antimicrobial-resvm REMOTEHOST=np-backup.nitc # Use the near-line backups at /aos-backups because the remote server is only 500GB of space. # an /aos-backups is also limited to this same approximate sizing. SRCDIR=/aos-backups DESTDIR=/home/nphl-antimicrobial-resvm STARTTIME="`date '+%d.%m.%y %H:%M'`" START=`date +%s` LOGFILE=/var/log/aos-npbackup-sync.log touch $LOGFILE # We copied an rsync binary to the remote site as it was not installed by default by NITC. EXTRAARGS='--rsync-path=~/bin/rsync' ## --------- STARTTIME="`date '+%d.%m.%y %H:%M'`" START=`date +%s` THISLOGHEAD="______________________________________\n\ |\n\ | Script: $0\n\ | Hostname: `hostname`\n\ | Started: $STARTTIME\n" LOGCONTENT="`head -n 2000 $LOGFILE`" THISLOG="" SUMMARY="" backup () { local FSTARTTIME="`date '+%H:%M'`" local FSTART=`date +%s` printf "$THISLOGHEAD|\n\n\ ---------------------------------------\n\ | Summary:\n\ ---------------------------------------\n\ $SUMMARY\n\ `date '+%H:%M'`-now: $1 -> $2\n\n\ ---------------------------------------\n\ | Details:\ \n---------------------------------------\n\ $THISLOG\n$LOGCONTENT" > $LOGFILE THISLOG="$THISLOG\n`date '+%d.%m.%y %H:%M'` | $1 \n->$2\n---------------------------------------\n`\ rsync -e ssh -av --delete $EXTRAARGS $1 $REMOTEUSER@$REMOTEHOST:$DESTDIR/$2 --stats | \ sed '0,/^$/d'`\nfinished: `date '+%d.%m.%y %H:%M'` \n---------------------------------------\n\n" printf "$THISLOGHEAD\n$THISLOG\n$LOGCONTENT" > $LOGFILE local FSECONDS="$((`date +%s`-$FSTART))" SUMMARY="$SUMMARY \n$FSTARTTIME-`date '+%H:%M'` (`date -d@$FSECONDS -u +%H:%M:%S`): $1 -> $2" } ### THIS CALLS THE ACTUAL BACKUP FUNCTION backup $SRCDIR AoS.Health/ #Finish Script: Runtime-Information and Final-Summary: SECONDS="$((`date +%s`-$START))" printf "$THISLOGHEAD\ | Finished: `date '+%d.%m.%y %H:%M'`\n\ | Runtime: `date -d@$SECONDS -u +%H:%M:%S`\n|\n\n\ ---------------------------------------\n\ | Summary:\n\ ---------------------------------------\n\ $SUMMARY\n\n\ ---------------------------------------\n\ | Details:\n\ ---------------------------------------\n\ $THISLOG\n\ |______________________________________\n\ $LOGCONTENT" > $LOGFILE