#!/bin/bash # Usage: Include this file, and add lines below lines like these: #rdiffit xayide.jones.dk /etc /home/jonas/websites #rdiffit coreander.bitbase.dk /etc /home #rdiffit ida.idraetsdaghojskolen.dk "(10000,10000)" /home function rdiffit() { host="$1"; shift # grab optional upload and download limits up=""; down="" if echo "$1" | grep -Eq '^\(.*\)$'; then updown=`echo "$1" | sed -e 's/^(\(.*\))$/\1/'` up=`echo "$updown" | awk -F, '{ print $1 }'` down=`echo "$updown" | awk -F, '{ print $2 }'` shift fi for dir in $@; do if echo "$dir" | grep -Eq '^/'; then dir=`echo "$dir" | sed -e 's/^\///'` else echo "ERROR: host \"$host\" path \"$dir\" lacks leading \"/\"" continue fi excludes="" while read exclude; do excludes="$excludes --exclude $exclude" done < /etc/local-COMMON/rdiff-backup/excludes if [ "$host" = "`hostname -f`" ]; then rdiff-backup --terminal-verbosity 1 $excludes /"$dir" "/var/local/backups/$host/rdiff-backup/${dir//\//-}" elif [ -z "$up$down" ]; then rdiff-backup --terminal-verbosity 1 $excludes --remote-schema 'ssh -o BatchMode=yes %s '\''rdiff-backup --server'\' $host::/"$dir" "/var/local/backups/$host/rdiff-backup/${dir//\//-}" else rdiff-backup --terminal-verbosity 1 $excludes --remote-schema 'cstream -t '$up' | ssh -o BatchMode=yes %s '\''rdiff-backup --server'\'' | cstream -t '$down $host::/"$dir" "/var/local/backups/$host/rdiff-backup/${dir//\//-}" fi done }