dsnap-sync: cleanup global variable assignment

* declare defaults
* assign integer values
* evaluate command

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
2018-07-23 23:57:19 +02:00
parent b910ca6086
commit 7e6ec2a997

View File

@@ -52,12 +52,16 @@ exec 3>$PIPE 4>$BTRFS_PIPE
# global variables
args=
answer=no
batch=0
color=0
donotify=0
dryrun=0
disk_count=-1
disk_uuid_match_count=0
disk_target_match_count=0
disk_subvolid_match_count=0
disk_uuid_match=''
interactive=1
selected_uuid='none'
selected_target='none'
selected_subvol='none'
@@ -96,7 +100,7 @@ check_prerequisites () {
# optional binaries:
which notify-send >/dev/null 2>&1 && { donotify=1; }
which pv >/dev/null 2>&1 && { do_pv_cmd=true; }
which pv >/dev/null 2>&1 && { do_pv_cmd=1; }
if [ $(id -u) -ne 0 ] ; then printf "$progname: must be run as root\n" ; exit 1 ; fi
@@ -112,7 +116,7 @@ check_prerequisites () {
}
check_snapper_failed_ids () {
local batch=${1:-$false}
local batch=${1:-0}
# active, non finished snapshot backups are marked with a reasonable string
# default: $(snap_description_running -> "$progname backup in progress" (userdata: host=$source)
@@ -153,7 +157,7 @@ create_snapshot () {
fi
# acting on source system
if [ ! $dryrun ]; then
if [ $dryrun -eq 0 ]; then
#printf "Creating new snapshot with snapper config '%s' ...\n" "$selected_config" | tee $PIPE
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Create new snapshot using snapper config ${GREEN}'%s'${MAGENTA}...${NO_COLOR}\n" \
@@ -692,7 +696,7 @@ parse_params () {
-n|--noconfirm|--batch)
batch=1
interactive=0
do_pv_cmd=false
do_pv_cmd=1
donotify=0
shift
;;
@@ -705,7 +709,7 @@ parse_params () {
shift 1
;;
--nopv)
do_pv_cmd=false
do_pv_cmd=0
shift 1
;;
-p|--port)
@@ -889,15 +893,15 @@ parse_params () {
printf " backup synced: '%s'\n" "$snap_description_synced"
if [ $verbose -ge 1 ]; then snap_sync_options="verbose_level=$verbose"; fi
if [ "$dryrun" ]; then snap_sync_options="${snap_sync_options} dry-run=true"; fi
if [ "$nonotify" ]; then snap_sync_options="${snap_sync_options} donotify=0"; fi
if [ "$color" ]; then snap_sync_options="${snap_sync_options} color=true"; fi
if [ "$batch" ]; then
if [ $dryrun -eq 1 ]; then snap_sync_options="${snap_sync_options} dry-run=true"; fi
if [ $donotify -eq 1 ]; then snap_sync_options="${snap_sync_options} donotify=true"; fi
if [ $color -eq 1 ]; then snap_sync_options="${snap_sync_options} color=true"; fi
if [ $batch -eq 1 ]; then
snap_sync_options="${snap_sync_options} batch=true do_pv_cmd=false"
else
snap_sync_options="${snap_sync_options} do_pv_cmd=$do_pv_cmd"
snap_sync_options="${snap_sync_options} interactive=true do_pv_cmd=$do_pv_cmd"
fi
if [ "$interactive" ]; then snap_sync_options="${snap_sync_options} interactive=true batch=false"; fi
#if [ "$interactive" -eq 1 ]; then snap_sync_options="${snap_sync_options} interactive=true"; fi
printf "Options: '%s'\n\n" "${snap_sync_options}"
fi
}
@@ -1142,7 +1146,7 @@ run_backup () {
snapper_source_snapshot_size=$(($snapper_source_snapshot_size / 1024 / 1024))G
# settings for interactive progress status
if [ "$do_pv_cmd" = "true" ]; then
if [ "$do_pv_cmd" ]; then
pv_options="--delay-start 2 --interval 5 --format \"time elapsed [%t] | rate %r | total size [%b] | %p | time remaining [%e]\" "
cmd_pv="pv --size $snapper_source_snapshot_size $pv_options |"
#cmd_pv="pv $pv_options --size ${snapper_source_snapshot_size} | dialog --gauge \"$progname: Progress for config '$selected_config'\" 6 85 |"
@@ -1151,7 +1155,7 @@ run_backup () {
fi
cmd="btrfs send $verbose_flag $snapper_source_snapshot 2>$BTRFS_PIPE | $cmd_pv $ssh btrfs receive $verbose_flag $snapper_target_snapshot 2>$BTRFS_PIPE"
if [ ! "$dryrun" ]; then
if [ "$dryrun" -eq 0 ]; then
if [ "$snapper_source_sync_id" -eq 0 ] || [ "$snapper_target_sync_id" -eq 0 ]; then
# target never received any snapshot before
if [ $verbose -ge 1 ]; then
@@ -1239,7 +1243,7 @@ run_backup () {
fi
# finally: send the snapper info metadata
if [ ! $dryrun ]; then
if [ $dryrun -eq 0 ]; then
if [ -z "$remote" ]; then
cmd="cp $snapper_source_info $snapper_target_snapshot"
cp "$snapper_source_info" "$snapper_target_snapshot"
@@ -1270,7 +1274,7 @@ run_cleanup () {
printf "${BLUE}Performing cleanup ...${NO_COLOR}\n"
if [ ! $dryrun ]; then
if [ $dryrun -eq 0 ]; then
# cleanup failed runs
check_snapper_failed_ids "$batch"
@@ -1342,7 +1346,7 @@ run_finalize () {
if [ $verbose -ge 1 ]; then
printf "${MAGENTA}Tagging target ...${NO_COLOR}\n"
fi
if [ ! "$dryrun" ]; then
if [ "$dryrun" -eq 0 ]; then
# target snapshot
# 1) wait for target snapshot to show up in snapper list
# find "$snapper_target_sync_id" -> marked as "$snap_descrition_running"
@@ -1387,7 +1391,7 @@ run_finalize () {
while [ "$ii" -le "$ii_max" ]; do
if [ $verbose -ge 2 ]; then
printf "calling: '%s'\n" "$cmd"
printf "calling: '%s'\n" "$(eval $cmd)"
fi
ret=$(eval $cmd)
#ret=$ssh snapper --verbose --config \"$snapper_target_config\" list --type single \
@@ -1405,7 +1409,7 @@ run_finalize () {
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Tagging metadata${NO_COLOR} for snapper id ${GREEN}'%s'${NO_COLOR} on target for configuration ${GREEN}'%s'${NO_COLOR} ...\n" \
"$snapper_target_id" "$snapper_target_config"
#printf "calling: '%s'\n" "$cmd"
#printf "calling: '%s'\n" "$(eval $cmd)"
fi
# call command (respect needed quotes)
@@ -1452,7 +1456,7 @@ run_finalize () {
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Tagging snapper metadata${NO_COLOR} for snapper id ${GREEN}'%s'${NO_COLOR} on source for configuration ${GREEN}'%s'${NO_COLOR} ...\n" \
"$snapper_source_id" "$selected_config"
printf "calling: '%s'\n" "$cmd"
printf "calling: '%s'\n" "$(eval $cmd)"
fi
ret=$(eval "$cmd")
if [ $verbose -ge 2 ]; then
@@ -1468,7 +1472,7 @@ run_finalize () {
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Tagging snapper metadata${NO_COLOR} for snapper sync id ${GREEN}'%s'${NO_COLOR} on source for configuration ${GREEN}'%s'${NO_COLOR} ...\n" \
"$snapper_source_sync_id" "$selected_config"
printf "calling: '%s'\n" "$cmd"
printf "calling: '%s'\n" "$(eval $cmd)"
fi
ret=$(eval "$cmd")
snapper_source_sync_snapshot=$SUBVOLUME/.snapshots/$snapper_source_sync_id/snapshot
@@ -1585,12 +1589,10 @@ select_target_disk () {
selected_uuid=$(eval echo \$disk_uuid_$disk_selected)
selected_target=$(eval echo \$disk_target_$disk_selected)
selected_subvol=$(eval echo \$fs_options_$disk_selected | sed -e 's/.*subvolid=\([0-9]*\).*/\1/')
if [ "$dryrun" ]; then
printf "Selected Subvol-ID=%s: %s on %s\n" "$selected_subvol" "$selected_target" "$selected_uuid"
fi
if [ $verbose -ge 1 ]; then
printf "${MAGENTA}You selected the disk with UUID ${GREEN}'%s'${MAGENTA} (subvolid=${GREEN}'%s'${MAGENTA})${NO_COLOR}.\n" "$selected_uuid" "$selected_subvol"
printf "${MAGENTA}You selected the disk with UUID ${GREEN}'%s'${MAGENTA} (subvolid=${GREEN}'%s'${MAGENTA})${NO_COLOR}.\n" \
"$selected_uuid" "$selected_subvol"
if [ -z "$remote" ]; then
printf "${MAGENTA}Target disk is mounted at ${GREEN}'%s'${MAGENTA}.${NO_COLOR}\n" \
"$selected_target"
@@ -1709,7 +1711,7 @@ verify_archive_structure () {
# if not accessible, create backup-path
cmd="$ssh stat --format %i $backup_root 2>/dev/null"
if [ -z $(eval $cmd) ]; then
if [ ! "$dryrun" ]; then
if [ "$dryrun" -eq 0 ]; then
if [ $verbose -ge 1 ]; then
if [ -z $remote_host ]; then
printf "Create backup-path %s ...\n" \
@@ -1719,7 +1721,7 @@ verify_archive_structure () {
"$remote_host" "$backup_root"
fi
fi
if [ ! $dryrun ]; then
if [ $dryrun -eq 0 ]; then
$(eval $ssh mkdir --mode=0700 --parents $backup_root)
else
if [ -z $remote_host ]; then
@@ -1742,7 +1744,7 @@ verify_archive_structure () {
# 2) loop though ordered incremental path: btrfs recieve the stream
# verify that target can take the new archive for given snapshot id
if [ ! "$dryrun" ]; then
if [ "$dryrun" -eq 0 ]; then
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Verify existence of path ${GREEN}'%s'${NO_COLOR}\n" \
"$backup_root/$snapper_config/$snapper_id"
@@ -1862,8 +1864,9 @@ verify_snapper_structure () {
# if not accessible, create backup-path
cmd="$ssh stat --format %i $backup_root 2>/dev/null"
if [ -z $(eval $cmd) ]; then
if [ ! "$dryrun" ]; then
ret=$(eval $cmd)
if [ $? -eq 1 ]; then
if [ "$dryrun" -eq 0 ]; then
if [ $verbose -ge 2 ]; then
if [ -z $remote_host ]; then
printf "${MAGENTA}Create${NO_COLOR} new backup-path ${GREEN}'%s'${NO_COLOR}...\n" \
@@ -1875,7 +1878,7 @@ verify_snapper_structure () {
fi
# strip last dir from backup_root
base_path=${backup_root%/*}; echo $base_path
if [ ! $dryrun ]; then
if [ $dryrun -eq 0 ]; then
$(eval $ssh mkdir --mode=0700 --parents $base_path)
else
if [ -z $remote_host ]; then
@@ -1891,8 +1894,10 @@ verify_snapper_structure () {
# verify that we have a snapper compatible structure for target config (a btrfs subvolume)
cmd="$ssh stat --format %i $backup_root 2>/dev/null"
if [ -z $(eval $cmd) ]; then
if [ ! "$dryrun" ]; then
ret=$(eval $cmd)
if [ $? -eq 1 ]; then
# path does not exist
if [ $dryrun -eq 0 ]; then
if [ $verbose -ge 1 ]; then
if [ -z "$remote" ]; then
printf "${MAGENTA}Create${NO_COLOR} new snapper capable BTRFS ${MAGENTA}subvolume ${GREEN}'%s'${NO_COLOR} ...\n" \
@@ -1952,10 +1957,12 @@ verify_snapper_structure () {
fi
# verify that we have a valid snapper config
if [ ! "$dryrun" ]; then
if [ $dryrun -eq 0 ]; then
cmd="$ssh stat --format %i $SNAPPER_CONFIG_DIR/$snapper_config 2>/dev/null"
if [ -z $(eval $cmd) ]; then
# snapper will create new structure at $backup_root/.snapshots
ret=$(eval $cmd)
if [ $? -eq 1 ]; then
# path does not exist, let snapper create the structure
# and path $backup_root/.snapshots
cmd="$ssh snapper --config $snapper_config create-config \
--template $snapper_subvolume_template \
--fstype btrfs $backup_root"
@@ -2020,13 +2027,15 @@ verify_snapper_structure () {
fi
# verify that target snapshot can take the new snapshot data id
if [ ! "$dryrun" ]; then
if [ $dryrun -eq 0 ]; then
if [ $verbose -ge 1 ]; then
printf "${MAGENTA}Verify existence of path ${GREEN}'%s'${NO_COLOR}...\n" \
"$backup_root/$snapper_snapshots/$snapper_id"
fi
cmd="$ssh stat --format %i $backup_root/$snapper_snapshots/$snapper_id 2>/dev/null"
if [ -z "$(eval $cmd)" ]; then
ret=$(eval $cmd)
if [ $? -eq 1 ]; then
# Path does not exist
if [ $verbose -ge 2 ]; then
printf "${MAGENTA}Create${NO_COLOR} path ${GREEN}'%s'${NO_COLOR} to store target snapshot.\n" \
"$backup_root/$snapper_snapshots/$snapper_id"