Remote backups using ssh and dump
Mel
fbsd.questions at rachie.is-a-geek.net
Mon Apr 7 14:39:40 UTC 2008
On Friday 04 April 2008 19:59:27 Paul Schmehl wrote:
> Has anyone done this?
/usr/local/etc/periodic/daily/201.backup-disks:
#!/bin/sh
# vim: ts=4 sw=4 noet ai
#
# The following tunables are supported:
# daily_backup_disks_enable (bool):
# Turn backup on/off.
# Default: Off
# daily_backup_disks_mounts (list):
# The mount points to backup daily.
# Default: / /var /home /usr
# daily_backup_disks_compress_local (bool):
# Compress the backup on the local machine.
# Default: Compress on receiving machine.
# daily_backup_disks_compressor (program path):
# The compress program to use.
# Default: /usr/bin/bzip2
# daily_backup_disks_ext (string):
# The extension to use for the filename.
# Default: bz2
# daily_backup_disks_islocal (bool):
# If this is a backup to a local disk.
# Default: NO
# daily_backup_disks_host (hostname):
# Hostname to backup to.
# Default: backup
# daily_backup_disks_machid (string):
# Machine id of this machine, used as prefix on backup files.
# Default: `hostname -s`
# daily_backup_disks_transporter (program path):
# Program used to transport the backup. Arguments must be compatible with
# ssh(1).
# Default: /usr/bin/ssh
# daily_backup_disks_backuproot (path):
# Path to the directory where backups are stored on the receiving machine.
# Default: /backup
if [ -r /etc/defaults/periodic.conf ]
then
. /etc/defaults/periodic.conf
source_periodic_confs
fi
# Set defaults
daily_backup_disks_compress_local=${daily_backup_disks_compress_local:-"NO"}
daily_backup_disks_mounts=${daily_backup_disks_mounts:-"/ /var /home /usr"}
daily_backup_disks_compressor=${daily_backup_disks_compressor:-"/usr/bin/bzip2"}
daily_backup_disks_ext=${daily_backup_disks_ext:="bz2"}
daily_backup_disks_islocal=${daily_backup_disks_islocal:="NO"}
daily_backup_disks_hostname=${daily_backup_disks_hostname:="backup"}
daily_backup_disks_machid=${daily_backup_disks_machid:=`hostname -s`}
daily_backup_disks_transporter=${daily_backup_disks_transporter:="/usr/bin/ssh"}
daily_backup_disks_backuproot=${daily_backup_disks_backuproot:="/backup"}
case "$daily_backup_disks_enable" in
[Yy][Ee][Ss])
level=$(/bin/date +%w)
date=$(/bin/date +%Y%m%d)
echo ''
for disk in ${daily_backup_disks_mounts}; do
dname=${disk#"/"}
test -z "$dname" && dname=root
dname=$(echo $dname | /usr/bin/tr '/' '_')
fname="${daily_backup_disks_machid}.${dname}.${level}"
fname="${fname}.${date}.dump.${daily_backup_disks_ext}"
fpath="${daily_backup_disks_backuproot}/${fname}"
if test ${daily_backup_disks_islocal} = "NO"; then
echo -n "Processing ${disk} to ${daily_backup_disks_host}:"
echo "${daily_backup_disks_backuproot}/${fname}"
if test ${daily_backup_disks_compress_local} = "NO"; then
# dd is necessary, because bzip2 cannot "compress STDIN to
# named file"
/sbin/dump -${level}uaLf - ${disk} | \
${daily_backup_disks_transporter} \
${daily_backup_disks_host} \
"${daily_backup_disks_compressor} -c - | /bin/dd of=${fpath}"
else
# dd is now necessary, because scp cannot copy STDIN.
/sbin/dump -${level}uaLf - ${disk} | \
${daily_backup_disks_compressor} -c - | \
${daily_backup_disks_transporter} \
${daily_backup_disks_host} "/bin/dd of=${fpath}"
fi
else
echo "Processing ${disk} to ${fpath}"
/sbin/dump -${level}uaLf - ${disk} | \
${daily_backup_disks_compressor} -c - >${fpath}
fi
rc=$(($rc + $?))
done
;;
*) rc=0;;
esac
exit $rc
--
Mel
Problem with today's modular software: they start with the modules
and never get to the software part.
More information about the freebsd-questions
mailing list