remote-backup/set-backup
2010-09-09 14:50:18 +02:00

74 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
. /etc/remote-backup/defaults.conf
declare -i i=0
usage(){
cat <<-EOF
set-backup -N <name>
[-R <device>] /dev/... (default: $MOUNT_DEVICE)
-s <remote-dir> [host:]/path|host::module (default: $REMOTE_LOCATION)
[-d <dir>] /path/dest (default: $SNAPSHOT_RW)
[-X <exclude1> [-X ...]]
[-b <bwlimit>] in kBytes/s (default: $BWLIMIT)
[-n <nb_hist>] (default: $MAX_ROTATE)
EOF
exit 1
}
while getopts 'R:d:s:X:N:n:b:' opt
do
case $opt in
R) loc_REMOUNT=true
loc_MOUNT_DEVICE="$OPTARG"
;;
d) loc_SNAPSHOT_RW="$OPTARG"
;;
s) loc_REMOTE_LOCATION="$OPTARG"
;;
X) loc_EXCLUDE[$i]="$OPTARG"
i+=1
;;
N)loc_NAME="$OPTARG"
;;
n) loc_MAX_ROTATE="$OPTARG"
;;
b) loc_BWLIMIT="$OPTARG"
;;
*) usage ;;
esac
done
[ -z "$loc_REMOTE_LOCATION" -o -z "$loc_NAME" ] && usage
[ ! -d "/etc/remote-backup/${loc_NAME//\//_}" ] \
&& mkdir "/etc/remote-backup/${loc_NAME//\//_}"
[ -z "$loc_REMOUNT" -a -z "$REMOUNT" ] && echo "Check config file" && exit 2
[[ "$REMOUNT" == "true" ]] && [ -z "$loc_MOUNT_DEVICE" -a -z "$MOUNT_DEVICE" ] && echo "Check config file" && exit 2
[ -z "$loc_SNAPSHOT_RW" -a -z "$SNAPSHOT_RW" ] && echo "Check config file" && exit 2
[ -z "$loc_REMOTE_LOCATION" -a -z "$REMOTE_LOCATION" ] && echo "Check config file" && exit 2
[ -z "$loc_EXCLUDES" -a -z "$EXCLUDES" ] && echo "Check config file" && exit 2
[ -z "$loc_MAX_ROTATE" -a -z "$MAX_ROTATE" ] && echo "Check config file" && exit 2
[ -z "$loc_BWLIMIT" -a -z "$BWLIMIT" ] && echo "Check config file" && exit 2
for param in NAME REMOUNT MOUNT_DEVICE SNAPSHOT_RW REMOTE_LOCATION \
MAX_ROTATE BWLIMIT
do
if [ -n "$(eval echo '$loc_'"$(echo $param)")" ]
then
eval echo $param='"$loc_'$(echo $param)'"'
fi
done > /etc/remote-backup/"${loc_NAME//\//_}"/config
if [ ${#loc_EXCLUDE[@]} -gt 0 ]
then
echo EXCLUDES=/etc/remote-backup/"${loc_NAME//\//_}"/excludes \
>> /etc/remote-backup/"${loc_NAME//\//_}"/config
for indice in ${!loc_EXCLUDE[@]}
do
echo "${loc_EXCLUDE[$indice]}"
done > /etc/remote-backup/"${loc_NAME//\//_}"/excludes
fi