SYNOPSIS:

Backup remote machines using ssh and rsync, utilizing hardlinks for files that has not changed since last backup

CONFIGURATION:

BACKUPUSER=backup
BASEDIR=/backup/
CONFDIR=/usr/local/etc/backup
DIR="/etc /usr/local/etc"
backupuser is the user rsync users to connect to the remote machine, change this to the user you want to use
basedir is the directory your backups are stored in.
A file hieracy will be created here /{basedir}/{servername}/{date}/{directory}
confdir is the directory with local configuration files (excludes and per-host configuration)
default directories to backup - this can be changed on a per-host or hostgroup basis

For per-host configuration you need to create hostconf.sh in $CONFDIR (default is /usr/local/etc/backup/hostconf.sh)

This file needs a host_conf function which will be called with the hostname as an option
backup script will run fine without this initial configuration

example:
host_conf()
{
case ${1} in
 web*)
  DIR="${DIR} /usr/local/www"
  HOSTGROUP="web freebsd denmark"
 ;;
esac
}

Furthermore the system looks for exclude files named: exclude.default exclude.servername exclude.hostgroup
using the above example and a hostname of web01.example.org, the following files would be included (if they exist):
 - exclude.default
 - exclude.web01.example.org
 - exclude.web
 - exclude.freebsd
 - exclude.denmark

note: if you specify DEFAULT_EXCLUDE=0 for a host, exclude.default will not be loaded.

These files need to hold regex or fullname of files to exclude
example:
*.zip
*.t[gb]z
*.flv

or look at my example files: hostconf.sh exclude.default exclude.web exclude.mysql
Hint: you can use zfs (or another file system with compression enabled) to have your easily compressed files etc compressed on-the-fly

SYNTAX:

$path/backup.sh host1 host2 host3

DOWNLOAD:

Latest version 1.1 backup.sh
Changelog:

1.1:
       o Initial public release
       o Hostgroup capability added
1.0:
       o unreleased initial version

Valid HTML 4.01 Transitional