74 lines
2.1 KiB
Bash
Executable File
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
|