@@ -47,7 +47,7 @@ restic_bootstrap_variables() {
4747 backup_instance_number=${1}
4848 SERVICE_NAME=backup${backup_instance_number}
4949 backup_instance_vars=$(mktemp)
50- set -o posix ; set | grep -oE "^backup_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${backup_instance_vars}"
50+ set -o posix ; set | grep -oE "^backup_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${backup_instance_vars}"
5151 while read -r backup_instance_var ; do
5252 unset "${backup_instance_var%%=*}"
5353 done < "${backup_instance_vars}"
@@ -76,14 +76,13 @@ restic_bootstrap_variables() {
7676 export backup_job_repository_path="${REPOSITORY_PATH}"
7777 fi
7878
79- set -o posix ; set | grep -E "^BACKUP${backup_instance_number}_|^DEFAULT_BACKUP_" | tr " " "\n" | silent tee "${backup_instance_vars}"
79+ set -o posix ; set | grep -E "^BACKUP${backup_instance_number}_|^DEFAULT_BACKUP_" | silent tee "${backup_instance_vars}"
8080
8181 transform_backup_instance_variable() {
82- if grep -q "^BACKUP${1}_${2}=" "${backup_instance_vars}" && [ "$(grep "^BACKUP${1}_${2}=" "${backup_instance_vars}" | cut -d = -f2)" != "unset" ]; then
83- export "$3"="$(grep "^BACKUP${1}_${2}=" "${backup_instance_vars}" | cut -d = -f2-)"
84- elif grep -q "^DEFAULT_BACKUP_${2}=" "${backup_instance_vars}" && [ "$(grep "^DEFAULT_BACKUP_${2}=" "${backup_instance_vars}" | cut -d = -f2)" != "unset" ]; then
85- export "$3"="$(grep "^DEFAULT_BACKUP_${2}=" "${backup_instance_vars}" | cut -d = -f2-)"
86- fi
82+ local pattern1="^BACKUP${1}_${2}=" pattern2="^DEFAULT_BACKUP_${2}="
83+ local value
84+ value=$(grep -E "($pattern1|$pattern2)" "${backup_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
85+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
8786 }
8887
8988 transform_backup_instance_variable "${backup_instance_number}" REPOSITORY_PATH backup_job_respository_path
@@ -107,7 +106,7 @@ restic_bootstrap_variables() {
107106 check_instance_number=${1}
108107 SERVICE_NAME=check${check_instance_number}
109108 check_instance_vars=$(mktemp)
110- set -o posix ; set | grep -oE "^check_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${check_instance_vars}"
109+ set -o posix ; set | grep -oE "^check_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${check_instance_vars}"
111110 while read -r check_instance_var ; do
112111 unset "${check_instance_var%%=*}"
113112 done < "${check_instance_vars}"
@@ -120,7 +119,7 @@ restic_bootstrap_variables() {
120119 REPOSITORY_PASS \
121120 REPOSITORY_PATH
122121
123- set -o posix ; set | grep -E "^CHECK${check_instance_number}_|^DEFAULT_CHECK_" | tr " " "\n" | silent tee "${check_instance_vars}"
122+ set -o posix ; set | grep -E "^CHECK${check_instance_number}_|^DEFAULT_CHECK_" | silent tee "${check_instance_vars}"
124123
125124 if [ -v "$(echo CHECK${check_instance_number}_REPOSITORY_PASS)" ] && [ "$(set -o posix; set | grep -E "^CHECK${check_instance_number}_REPOSITORY_PASS" | cut -d = -f 2)" != "unset" ]; then
126125 export RESTIC_PASSWORD=$(set -o posix; set | grep -E "^CHECK${check_instance_number}_REPOSITORY_PASS" | cut -d = -f 2)
@@ -139,11 +138,10 @@ restic_bootstrap_variables() {
139138 fi
140139
141140 transform_check_instance_variable() {
142- if grep -q "^CHECK${1}_${2}=" "${check_instance_vars}" && [ "$(grep "^CHECK${1}_${2}=" "${check_instance_vars}" | cut -d = -f2)" != "unset" ]; then
143- export "$3"="$(grep "^CHECK${1}_${2}=" "${check_instance_vars}" | cut -d = -f2-)"
144- elif grep -q "^DEFAULT_CHECK_${2}=" "${check_instance_vars}" && [ "$(grep "^DEFAULT_CHECK_${2}=" "${check_instance_vars}" | cut -d = -f2)" != "unset" ]; then
145- export "$3"="$(grep "^DEFAULT_CHECK_${2}=" "${check_instance_vars}" | cut -d = -f2-)"
146- fi
141+ local pattern1="^CHECK${1}_${2}=" pattern2="^DEFAULT_CHECK_${2}="
142+ local value
143+ value=$(grep -E "($pattern1|$pattern2)" "${check_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
144+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
147145 }
148146
149147 transform_check_instance_variable "${check_instance_number}" ARGS check_job_check_args
@@ -165,7 +163,7 @@ restic_bootstrap_variables() {
165163 cleanup_instance_number=${1}
166164 SERVICE_NAME=cleanup${cleanup_instance_number}
167165 cleanup_instance_vars=$(mktemp)
168- set -o posix ; set | grep -oE "^cleanup_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${cleanup_instance_vars}"
166+ set -o posix ; set | grep -oE "^cleanup_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${cleanup_instance_vars}"
169167 while read -r cleanup_instance_var ; do
170168 unset "${cleanup_instance_var%%=*}"
171169 done < "${cleanup_instance_vars}"
@@ -178,7 +176,7 @@ restic_bootstrap_variables() {
178176 REPOSITORY_PASS \
179177 REPOSITORY_PATH
180178
181- set -o posix ; set | grep -E "^CLEANUP${cleanup_instance_number}_|^DEFAULT_CLEANUP_" | tr " " "\n" | silent tee "${cleanup_instance_vars}"
179+ set -o posix ; set | grep -E "^CLEANUP${cleanup_instance_number}_|^DEFAULT_CLEANUP_" | silent tee "${cleanup_instance_vars}"
182180
183181 if [ -v "$(echo CLEANUP${cleanup_instance_number}_REPOSITORY_PASS)" ] && [ "$(set -o posix; set | grep -E "^CLEANUP${cleanup_instance_number}_REPOSITORY_PASS" | cut -d = -f 2)" != "unset" ]; then
184182 export RESTIC_PASSWORD=$(set -o posix; set | grep -E "^CLEANUP${cleanup_instance_number}_REPOSITORY_PASS" | cut -d = -f 2)
@@ -196,6 +194,13 @@ restic_bootstrap_variables() {
196194 export cleanup_job_repository_path="${REPOSITORY_PATH}"
197195 fi
198196
197+ transform_cleanup_instance_variable() {
198+ local pattern1="^CLEANUP${1}_${2}=" pattern2="^DEFAULT_CLEANUP_${2}="
199+ local value
200+ value=$(grep -E "($pattern1|$pattern2)" "${cleanup_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
201+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
202+ }
203+
199204 transform_cleanup_instance_variable() {
200205 if grep -q "^CLEANUP${1}_${2}=" "${cleanup_instance_vars}" && [ "$(grep "^CLEANUP${1}_${2}=" "${cleanup_instance_vars}" | cut -d = -f2)" != "unset" ]; then
201206 export "$3"="$(grep "^CLEANUP${1}_${2}=" "${cleanup_instance_vars}" | cut -d = -f2-)"
@@ -243,7 +248,7 @@ restic_bootstrap_variables() {
243248 REPOSITORY_PASS \
244249 REPOSITORY_PATH
245250
246- set -o posix ; set | grep -oE "^inventory_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${inventory_instance_vars}"
251+ set -o posix ; set | grep -oE "^inventory_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${inventory_instance_vars}"
247252 while read -r inventory_instance_var ; do
248253 unset "${inventory_instance_var%%=*}"
249254 done < "${inventory_instance_vars}"
@@ -264,15 +269,15 @@ restic_bootstrap_variables() {
264269 export inventory_job_repository_path="${REPOSITORY_PATH}"
265270 fi
266271
267- set -o posix ; set | grep -E "^INVENTORY${inventory_instance_number}_|^DEFAULT_INVENTORY_" | tr " " "\n" | silent tee "${inventory_instance_vars}"
272+ set -o posix ; set | grep -E "^INVENTORY${inventory_instance_number}_|^DEFAULT_INVENTORY_" | silent tee "${inventory_instance_vars}"
268273
269274 transform_inventory_instance_variable() {
270- if grep -q "^INVENTORY${1}_${2}=" "${inventory_instance_vars}" && [ "$(grep "^INVENTORY${1}_${2}=" "${inventory_instance_vars}" | cut -d = -f2)" != "unset" ]; then
271- export "$3"="$(grep "^INVENTORY${1}_${2}=" "${inventory_instance_vars}" | cut -d = -f2-)"
272- elif grep -q "^DEFAULT_INVENTORY_${2}=" "${inventory_instance_vars}" && [ "$(grep "^DEFAULT_INVENTORY_${2}=" "${inventory_instance_vars}" | cut -d = -f2)" != "unset" ]; then
273- export "$3"="$(grep "^DEFAULT_INVENTORY_${2}=" "${inventory_instance_vars}" | cut -d = -f2-)"
274- fi
275+ local pattern1="^INVENTORY${1}_${2}=" pattern2="^DEFAULT_INVENTORY_${2}="
276+ local value
277+ value=$(grep -E "($pattern1|$pattern2)" "${inventory_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
278+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
275279 }
280+
276281 transform_inventory_instance_variable "${inventory_instance_number}" NAME inventory_job_inventory_name
277282 transform_inventory_instance_variable "${inventory_instance_number}" GROUP_BY inventory_job_group_by
278283 transform_inventory_instance_variable "${inventory_instance_number}" HOOK_POST inventory_job_hook_post
@@ -286,7 +291,7 @@ restic_bootstrap_variables() {
286291 prune_instance_number=${1}
287292 SERVICE_NAME=prune${prune_instance_number}
288293 prune_instance_vars=$(mktemp)
289- set -o posix ; set | grep -oE "^prune_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${prune_instance_vars}"
294+ set -o posix ; set | grep -oE "^prune_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${prune_instance_vars}"
290295 while read -r prune_instance_var ; do
291296 unset "${prune_instance_var%%=*}"
292297 done < "${prune_instance_vars}"
@@ -307,14 +312,13 @@ restic_bootstrap_variables() {
307312 export prune_job_repository_path="${REPOSITORY_PATH}"
308313 fi
309314
310- set -o posix ; set | grep -E "^PRUNE${prune_instance_number}_|^DEFAULT_PRUNE_" | tr " " "\n" | silent tee "${prune_instance_vars}"
315+ set -o posix ; set | grep -E "^PRUNE${prune_instance_number}_|^DEFAULT_PRUNE_" | silent tee "${prune_instance_vars}"
311316
312317 transform_prune_instance_variable() {
313- if grep -q "^PRUNE${1}_${2}=" "${prune_instance_vars}" && [ "$(grep "^PRUNE${1}_${2}=" "${prune_instance_vars}" | cut -d = -f2)" != "unset" ]; then
314- export "$3"="$(grep "^PRUNE${1}_${2}=" "${prune_instance_vars}" | cut -d = -f2-)"
315- elif grep -q "^DEFAULT_PRUNE_${2}=" "${prune_instance_vars}" && [ "$(grep "^DEFAULT_PRUNE_${2}=" "${prune_instance_vars}" | cut -d = -f2)" != "unset" ]; then
316- export "$3"="$(grep "^DEFAULT_PRUNE_${2}=" "${prune_instance_vars}" | cut -d = -f2-)"
317- fi
318+ local pattern1="^PRUNE${1}_${2}=" pattern2="^DEFAULT_PRUNE_${2}="
319+ local value
320+ value=$(grep -E "($pattern1|$pattern2)" "${prune_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
321+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
318322 }
319323
320324 transform_prune_instance_variable "${prune_instance_number}" ARGS prune_job_prune_args
@@ -338,7 +342,7 @@ restic_bootstrap_variables() {
338342 unlock_called_from_instance=${2}
339343 SERVICE_NAME=unlock
340344 unlock_instance_vars=$(mktemp)
341- set -o posix ; set | grep -oE "^unlock_job_.*=" | tr " " "\n" | grep -oE ".*=" | sed "/--/d" | silent tee "${unlock_instance_vars}"
345+ set -o posix ; set | grep -oE "^unlock_job_.*=" | grep -oE ".*=" | sed "/--/d" | silent tee "${unlock_instance_vars}"
342346 while read -r unlock_instance_var ; do
343347 unset "${unlock_instance_var%%=*}"
344348 done < "${unlock_instance_vars}"
@@ -353,20 +357,19 @@ restic_bootstrap_variables() {
353357
354358 if [ -v "$(echo "${unlock_called_from}""${unlock_called_from_instance}"_REPOSITORY_PATH)" ] && [ "$(set -o posix; set | grep -E "^${unlock_called_from}${unlock_called_from_instance}_REPOSITORY_PATH" | cut -d = -f 2)" != "unset" ]; then
355359 export unlock_job_repository_path="$(set -o posix; set | grep -E "^${unlock_called_from}${unlock_called_from_instance}_REPOSITORY_PATH" | cut -d = -f 2)"
356- elif [ -v "$(echo DEFAULT_${unlock_called_from}_REPOSITORY_PATH)" ] && [ "$(grep -E "^$(echo DEFAULT_${unlock_called_from}_REPOSITORY_PATH)" | cut -d = -f 2)" != "unset" ] ; then
360+ elif [ -v "$(echo DEFAULT_${unlock_called_from}_REPOSITORY_PATH)" ] && [ "$(grep -E "^$(echo DEFAULT_${unlock_called_from}_REPOSITORY_PATH)" | cut-d = -f 2)" != "unset" ] ; then
357361 export unlock_job_repository_path="$(grep -E "^$(echo DEFAULT_${unlock_called_from}_REPOSITORY_PATH)" | cut -d = -f 2)"
358362 elif [ -n "${REPOSITORY_PATH}" ] && [ "${REPOSITORY_PATH}" != "unset" ]; then
359363 export unlock_job_repository_path=${REPOSITORY_PATH}
360364 fi
361365
362- set -o posix ; set | grep -E "^UNLOCK_|^DEFAULT_UNLOCK_" | tr " " "\n" | silent tee "${unlock_instance_vars}"
366+ set -o posix ; set | grep -E "^UNLOCK_|^DEFAULT_UNLOCK_" | silent tee "${unlock_instance_vars}"
363367
364368 transform_unlock_variable() {
365- if grep -q "^UNLOCK_${1}=" "${unlock_instance_vars}" && [ "$(grep "^UNLOCK_${1}=" "${unlock_instance_vars}" | cut -d = -f2)" != "unset" ]; then
366- export "$2"="$(grep "^UNLOCK_${1}=" "${unlock_instance_vars}" | cut -d = -f2-)"
367- elif grep -q "^DEFAULT_UNLOCK_${1}=" "${unlock_instance_vars}" && [ "$(grep "^DEFAULT_UNLOCK_${1}=" "${unlock_instance_vars}" | cut -d = -f2)" != "unset" ]; then
368- export "$2"="$(grep "^DEFAULT_UNLOCK_${1}=" "${unlock_instance_vars}" | cut -d = -f2-)"
369- fi
369+ local pattern1="^UNLOCK${1}_${2}=" pattern2="^DEFAULT_UNLOCK_${2}="
370+ local value
371+ value=$(grep -E "($pattern1|$pattern2)" "${unlock_instance_vars}" | head -1 | sed 's/^[^=]*=//; s/^'\''//; s/'\''$//')
372+ [ -n "$value" ] && [ "$value" != "unset" ] && export "${3}=$(printf '%s' "$value")"
370373 }
371374
372375 transform_unlock_variable ARGS unlock_job_unlock_args
@@ -637,7 +640,7 @@ restic_hook() {
637640 check )
638641 if [ -x "${check_job_hook_post}" ] ; then
639642 print_notice "Executing post check custom script : '${check_job_hook_post}'"
640- ## script HOSTNAME _restic_name TYPE INSTANCE_NUMBER NAME REPOSITORY_PATH ROUTINE_START_EPOCH PROCESS_START_EPOCH PROCESS_FINISH_EPOCH PROCESS_TOTAL_SECONDS EXITCODE LOGFILE PACKS_UNREFERENCED_COUNT SNAPSHOTS_PROCESSED
643+ ## script HOSTNAME _restic_name TYPE INSTANCE_NUMBER NAME REPOSITORY_PATH ROUTINE_START_EPOCH PROCESS_START_EPOCH PROCESS_FINISH_EPOCHPROCESS_TOTAL_SECONDS EXITCODE LOGFILE PACKS_UNREFERENCED_COUNT SNAPSHOTS_PROCESSED
641644 "${check_job_hook_post}" "$(hostname)" "${_restic_hostname}" CHECK "${check_instance_number}" "${check_job_log_suffix}" "${check_job_repository_path}" "${check_routines_start_time}" "${check_process_start_time}" "${check_process_finish_time}" "${check_process_total_time}" "${exitcode_check}" "${LOG_PATH%/}"/"$(date +'%Y%m%d')"/"$(date -d @"${check_process_start_time}" +'%Y%m%d_%H%M%S')"-check-"${check_job_log_suffix}".log "${check_job_pack_unreferenced_count}" "${check_job_snapshots_processed}"
642645 else
643646 print_error "Can't run post check custom script: '${check_job_hook_post}' as its filesystem bit is not executible!"
@@ -716,7 +719,7 @@ restic_hook() {
716719 if [ -x "${inventory_job_hook_pre}" ] ; then
717720 print_notice "Executing pre inventory custom script : '${inventory_job_hook_pre}'"
718721 ## script HOSTNAME _restic_hostname TYPE INSTANCE_NUMBER NAME REPOSITORY_PATH ROUTINE_START_EPOCH
719- "${inventory_job_hook_pre}" "$(hostname)" "${_restic_hostname}" INVENTORY "${inventory_instance_number}" "${inventory_job_log_suffix}" "${inventory_job_repository_path}" "${inventory_routines_start_time}"
722+ "${inventory_job_hook_pre}" "$(hostname)" "${_restic_hostname}" INVENTORY "${inventory_instance_number}" "${inventory_job_log_suffix}""${inventory_job_repository_path}" "${inventory_routines_start_time}"
720723 else
721724 print_error "Can't run pre inventory custom script: '${inventory_job_hook_pre}' as its filesystem bit is not executible!"
722725 fi
@@ -1223,7 +1226,7 @@ EOF
12231226 fi
12241227
12251228 if [ -n "${check_job_check_args}" ]; then
1226- check_job_args+="${check_job_check_args}"
1229+ check_job_args+="${check_job_check_args} "
12271230 check_job_file_log_lines+=("## Additional Arguments: ${check_job_check_args}")
12281231 fi
12291232
@@ -1251,7 +1254,7 @@ EOF
12511254
12521255 if var_true "${DEBUG_MODE}" || [ "${CONTAINER_LOG_LEVEL,,}" = "debug" ]; then
12531256 check_command_string="restic --cache-dir ${CACHE_PATH} --repo $(redact_sensitive ${check_job_repository_path}) check ${check_job_args}"
1254- print_debug "Command execution string: '${command_string }'"
1257+ print_debug "Command execution string: '${check_command_string }'"
12551258 check_job_file_log_lines+=("## Debug Command String: ${check_command_string}")
12561259 fi
12571260
@@ -1348,7 +1351,7 @@ EOF
13481351 fi
13491352
13501353 if grep -q "^\[.*\] .*% .* snapshots" /tmp/"${check_instance_number}"-check-"${check_routines_start_time}".log ; then
1351- check_job_snapshots_processed=$(grep "^\[.*\] .*% .* snapshots" /tmp/"${check_instance_number}"-check-"${check_routines_start_time}".log | awk '{print $3}'); check_job_snapshots_processed=${check_job_snapshots_processed:-0}
1354+ check_job_snapshots_processed=$(grep "^\[.*\] .*% .* snapshots" /tmp/"${check_instance_number}"-check-"${check_routines_start_time}".log | awk'{print $3}'); check_job_snapshots_processed=${check_job_snapshots_processed:-0}
13521355 print_debug "[check] Processed ${check_job_snapshots_processed}"
13531356 fi
13541357
@@ -2016,7 +2019,7 @@ EOF
20162019 fi
20172020
20182021 if [ -n "${prune_job_prune_args}" ] ; then
2019- prune_job_args+="${prune_job_prune_args}"
2022+ prune_job_args+="${prune_job_prune_args} "
20202023 prune_job_file_log_lines+=("## Additional Arguments: ${prune_job_prune_args}")
20212024 fi
20222025
@@ -2165,7 +2168,7 @@ EOF
21652168 prune_job_packs_repacked=$(awk '/repacking packs/,/packs processed/' /tmp/${prune_instance_number}-prune-"${prune_routines_start_time}".log | xargs | awk '{print $7}'); prune_job_packs_repacked=${prune_job_packs_repacked:-0}
21662169 prune_job_packs_reindexed=$(awk '/rebuilding index/,/packs processed/' /tmp/${prune_instance_number}-prune-"${prune_routines_start_time}".log | xargs | awk '{print $7}'); prune_job_packs_reindexed=${prune_job_packs_reindexed:-0}
21672170 prune_job_index_deleted_obsolete=$(awk '/deleting obsolete index files/,/files deleted/' /tmp/${prune_instance_number}-prune-"${prune_routines_start_time}".log | xargs | awk '{print $9}'); prune_job_index_deleted_obsolete=${prune_job_index_deleted_obsolete:-0}
2168- prune_job_packs_deleted_old=$(awk '/removing .* old packs/,/files deleted/' /tmp/${prune_instance_number}-prune-"${prune_routines_start_time}".log | xargs | awk '{print $10}'); prune_job_packs_deleted_old=${prune_job_packs_deleted_old:-0}
2171+ prune_job_packs_deleted_old=$(awk '/removing .* old packs/,/files deleted/' /tmp/${prune_instance_number}-prune-"${prune_routines_start_time}".log| xargs | awk '{print $10}'); prune_job_packs_deleted_old=${prune_job_packs_deleted_old:-0}
21692172
21702173 if var_true "${CONTAINER_ENABLE_MONITORING}" ; then
21712174 source /container/base/defaults/*-monitoring
@@ -2245,7 +2248,7 @@ EOF
22452248 fi
22462249
22472250 if [ -n "${unlock_job_unlock_args}" ] ; then
2248- unlock_job_args+="${unlock_job_unlock_args}"
2251+ unlock_job_args+="${unlock_job_unlock_args} "
22492252 unlock_job_file_log_lines+=("## Additional Arguments: ${unlock_job_unlock_args}")
22502253 fi
22512254
@@ -2467,4 +2470,4 @@ restic_setup_container_mode() {
24672470 done
24682471 source /container/state/restic/CONTAINER_MODE
24692472 fi
2470- }
2473+ }
0 commit comments