@@ -265,6 +265,13 @@ else
265265 echo " FATAL: Unified configuration file backup.conf not found." > & 2; exit 1
266266fi
267267
268+ for var in LOCAL_DIR BOX_DIR HETZNER_BOX SSH_OPTS_STR LOG_FILE; do
269+ if [ -z " ${! var:- } " ]; then
270+ echo " FATAL: Required config variable '$var ' is missing or empty in $CONFIG_FILE ." >&2
271+ exit 1
272+ fi
273+ done
274+
268275# =================================================================
269276# SCRIPT CONFIGURATION (STATIC)
270277# =================================================================
@@ -329,14 +336,15 @@ format_backup_stats() {
329336 local files_created=" "
330337 local files_deleted=" "
331338
332- bytes_transferred=$( echo " $rsync_output " | grep ' Total_transferred_size:' | awk ' {print $2}' )
333- files_created=$( echo " $rsync_output " | grep ' Number_of_created_files:' | awk ' {print $2}' )
334- files_deleted=$( echo " $rsync_output " | grep ' Number_of_deleted_files:' | awk ' {print $2}' )
339+ bytes_transferred=$( echo " $rsync_output " | grep ' Total_transferred_size:' || true | awk ' {print $2}' )
340+ files_created=$( echo " $rsync_output " | grep ' Number_of_created_files:' || true | awk ' {print $2}' )
341+ files_deleted=$( echo " $rsync_output " | grep ' Number_of_deleted_files:' || true | awk ' {print $2}' )
335342
343+ # Fallback for older rsync versions
336344 if [[ -z " $bytes_transferred " && -z " $files_created " && -z " $files_deleted " ]]; then
337- bytes_transferred=$( echo " $rsync_output " | grep ' Total transferred file size:' | awk ' {gsub(/,/, ""); print $5}' )
338- files_created=$( echo " $rsync_output " | grep ' Number of created files:' | awk ' {print $5}' )
339- files_deleted=$( echo " $rsync_output " | grep ' Number of deleted files:' | awk ' {print $5}' )
345+ bytes_transferred=$( echo " $rsync_output " | grep ' Total transferred file size:' || true | awk ' {gsub(/,/, ""); print $5}' )
346+ files_created=$( echo " $rsync_output " | grep ' Number of created files:' || true | awk ' {print $5}' )
347+ files_deleted=$( echo " $rsync_output " | grep ' Number of deleted files:' || true | awk ' {print $5}' )
340348 fi
341349
342350 if [[ " ${bytes_transferred:- 0} " -gt 0 ]]; then
@@ -409,6 +417,7 @@ if [[ "${1:-}" ]]; then
409417 log_message " Checksum validation passed. No discrepancies found."
410418 send_notification " ✅ Backup Integrity OK: ${HOSTNAME} " " white_check_mark" " default" " success" " Checksum validation passed. No discrepancies found."
411419 else
420+ log_message " Backup integrity check FAILED. Found discrepancies."
412421 ISSUE_LIST=$( echo " ${FILE_DISCREPANCIES} " | head -n 10)
413422 printf " ❌ Backup integrity check FAILED. First 10 differing files:\n%s\n" " ${ISSUE_LIST} "
414423 printf -v FAILURE_MSG " Backup integrity check FAILED.\n\nFirst 10 differing files:\n%s\n\nCheck log for full details." " ${ISSUE_LIST} "
0 commit comments