Backup remote machines using ssh and rsync, utilizing hardlinks for files that has not changed since last backup
BACKUPUSER=backup BASEDIR=/backup/ CONFDIR=/usr/local/etc/backup DIR="/etc /usr/local/etc"
setting | description |
---|---|
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) |
dir | 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
$path/backup.sh host1 host2 host3
Latest version 1.1 backup.sh
o Initial public release o Hostgroup capability added
o unreleased initial version