#!/bin/sh BACKUPDIR=/root/backup OPWD=$PWD # print to stderr and die fatal() { echo "Error: $@" 1>&2 exit 1 } cd $BACKUPDIR DIRS=`find backup.* -type d -name 'backup.*' -maxdepth 0 2> /dev/null| sort -rn -t '.' -k 2` if [ "$DIRS" != 'backup.*' ]; then echo "Moving older backups" for i in $DIRS; do [ ! -d "$i" ] && fatal "$i is not a directory." DEST=${i%%.*}.$((${i##*.} + 1)) echo "$i -> $DEST" mv $i $DEST done fi # Only keep 20 backups (0-19)? rm -rf backup.20 # Create a new backup.0 mkdir backup.0 find /etc /usr/local/etc > /tmp/backup.list rsync -a --delete --link-dest=../backup.1 --files-from=/tmp/backup.list / backup.0