#!/bin/bash function log { logger "rsync-backup: $1" } function rotate_backup() { local hostname="$1" mkdir -p /backups/$hostname/0 rm -fR /backups/$hostname.7 mv /backups/$hostname/6 /backups/$hostname/7 mv /backups/$hostname/5 /backups/$hostname/6 mv /backups/$hostname/4 /backups/$hostname/5 mv /backups/$hostname/3 /backups/$hostname/4 mv /backups/$hostname/2 /backups/$hostname/3 mv /backups/$hostname/1 /backups/$hostname/2 cp -al /backups/$hostname/0 /backups/$hostname/1 } ## Start the email log... cp /root/backup-complete.txt /tmp/email.$$ log "$1: System backup drive detected..." ## Run through the local systems with no compression etc... for HOST in list of local systems; do log "$1: Backing up $HOST..." echo "`date`: Started $HOST backup..." >> /tmp/email.$$ rotate_backup "$HOST" rsync -axP --delete-before $HOST:/ /backups/$HOST/0 log "$1: Backing up $HOST complete..." echo "`date`: Complete $HOST backup..." >> /tmp/email.$$ done ## Do the remote hosts with max compression... for HOST in list of remote systems; do log "$1: Backing up $HOST..." echo "`date`: Started $HOST backup..." >> /tmp/email.$$ rotate_backup "$HOST" rsync -zaxP --compress-level=9 --delete-before $HOST:/ /backups/$HOST/0 log "$1: Backing up $HOST complete..." echo "`date`: Complete $HOST backup..." >> /tmp/email.$$ done echo "Stats:" >> /tmp/email.$$ df -h | grep $1 >> /tmp/email.$$ /root/bin/mail-body /tmp/email.$$ netwiz AT crc.id DOT au "Xenhost: Backup Complete!" rm -f /tmp/email.$$