Skip to content

Commit 0b8be81

Browse files
authored
Merge pull request #6 from buildplan/improve
Improved Variables Check, Stats Parsing and logs
2 parents ef032b3 + 4f8358f commit 0b8be81

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

README.md

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,13 @@ else
265265
echo "FATAL: Unified configuration file backup.conf not found." >&2; exit 1
266266
fi
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}"

backup_script.sh

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ else
5454
echo "FATAL: Unified configuration file backup.conf not found." >&2; exit 1
5555
fi
5656

57+
for var in LOCAL_DIR BOX_DIR HETZNER_BOX SSH_OPTS_STR LOG_FILE; do
58+
if [ -z "${!var:-}" ]; then
59+
echo "FATAL: Required config variable '$var' is missing or empty in $CONFIG_FILE." >&2
60+
exit 1
61+
fi
62+
done
63+
5764
# =================================================================
5865
# SCRIPT CONFIGURATION (STATIC)
5966
# =================================================================
@@ -118,14 +125,15 @@ format_backup_stats() {
118125
local files_created=""
119126
local files_deleted=""
120127

121-
bytes_transferred=$(echo "$rsync_output" | grep 'Total_transferred_size:' | awk '{print $2}')
122-
files_created=$(echo "$rsync_output" | grep 'Number_of_created_files:' | awk '{print $2}')
123-
files_deleted=$(echo "$rsync_output" | grep 'Number_of_deleted_files:' | awk '{print $2}')
128+
bytes_transferred=$(echo "$rsync_output" | grep 'Total_transferred_size:' || true | awk '{print $2}')
129+
files_created=$(echo "$rsync_output" | grep 'Number_of_created_files:' || true | awk '{print $2}')
130+
files_deleted=$(echo "$rsync_output" | grep 'Number_of_deleted_files:' || true | awk '{print $2}')
124131

132+
# Fallback for older rsync versions
125133
if [[ -z "$bytes_transferred" && -z "$files_created" && -z "$files_deleted" ]]; then
126-
bytes_transferred=$(echo "$rsync_output" | grep 'Total transferred file size:' | awk '{gsub(/,/, ""); print $5}')
127-
files_created=$(echo "$rsync_output" | grep 'Number of created files:' | awk '{print $5}')
128-
files_deleted=$(echo "$rsync_output" | grep 'Number of deleted files:' | awk '{print $5}')
134+
bytes_transferred=$(echo "$rsync_output" | grep 'Total transferred file size:' || true | awk '{gsub(/,/, ""); print $5}')
135+
files_created=$(echo "$rsync_output" | grep 'Number of created files:' || true | awk '{print $5}')
136+
files_deleted=$(echo "$rsync_output" | grep 'Number of deleted files:' || true | awk '{print $5}')
129137
fi
130138

131139
if [[ "${bytes_transferred:-0}" -gt 0 ]]; then
@@ -198,6 +206,7 @@ if [[ "${1:-}" ]]; then
198206
log_message "Checksum validation passed. No discrepancies found."
199207
send_notification "✅ Backup Integrity OK: ${HOSTNAME}" "white_check_mark" "default" "success" "Checksum validation passed. No discrepancies found."
200208
else
209+
log_message "Backup integrity check FAILED. Found discrepancies."
201210
ISSUE_LIST=$(echo "${FILE_DISCREPANCIES}" | head -n 10)
202211
printf "❌ Backup integrity check FAILED. First 10 differing files:\n%s\n" "${ISSUE_LIST}"
203212
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

Comments
 (0)