mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 00:00:13 -08:00
Refactor variable assignments and improve script readability in validate-plex-backups.sh and validate-plex-recovery.sh
- Changed inline variable assignments to separate declaration and assignment for clarity. - Updated condition checks and log messages for better readability and consistency. - Added a backup of validate-plex-recovery.sh for safety. - Introduced a new script run-docker-tests.sh for testing setup in Docker containers. - Enhanced ssh-login.sh to improve condition checks and logging functionality.
This commit is contained in:
@@ -207,12 +207,16 @@ check_backup_status() {
|
||||
log_status "OK" "Total backups: $backup_count"
|
||||
|
||||
# Find latest backup
|
||||
local latest_backup=$(find "$BACKUP_ROOT" -maxdepth 1 -type f -name "plex-backup-*.tar.gz" 2>/dev/null | sort | tail -1)
|
||||
local latest_backup
|
||||
latest_backup=$(find "$BACKUP_ROOT" -maxdepth 1 -type f -name "plex-backup-*.tar.gz" 2>/dev/null | sort | tail -1)
|
||||
if [ -n "$latest_backup" ]; then
|
||||
local backup_filename=$(basename "$latest_backup")
|
||||
local backup_filename
|
||||
backup_filename=$(basename "$latest_backup")
|
||||
# Extract date from filename: plex-backup-YYYYMMDD_HHMMSS.tar.gz
|
||||
local backup_date=$(echo "$backup_filename" | sed 's/plex-backup-//' | sed 's/_.*$//')
|
||||
local readable_date=$(date -d "${backup_date:0:4}-${backup_date:4:2}-${backup_date:6:2}" '+%B %d, %Y' 2>/dev/null || echo "Invalid date")
|
||||
local backup_date
|
||||
backup_date=$(echo "$backup_filename" | sed 's/plex-backup-//' | sed 's/_.*$//')
|
||||
local readable_date
|
||||
readable_date=$(date -d "${backup_date:0:4}-${backup_date:4:2}-${backup_date:6:2}" '+%B %d, %Y' 2>/dev/null || echo "Invalid date")
|
||||
local backup_age_days=$(( ($(date +%s) - $(date -d "${backup_date:0:4}-${backup_date:4:2}-${backup_date:6:2}" +%s 2>/dev/null || echo "0")) / 86400 ))
|
||||
|
||||
if [ "$backup_age_days" -le 1 ]; then
|
||||
@@ -224,11 +228,13 @@ check_backup_status() {
|
||||
fi
|
||||
|
||||
# Check backup size
|
||||
local backup_size=$(du -sh "$latest_backup" 2>/dev/null | cut -f1)
|
||||
local backup_size
|
||||
backup_size=$(du -sh "$latest_backup" 2>/dev/null | cut -f1)
|
||||
log_status "INFO" "Latest backup size: $backup_size"
|
||||
|
||||
# Check backup contents (via tar listing)
|
||||
local file_count=$(tar -tzf "$latest_backup" 2>/dev/null | wc -l)
|
||||
local file_count
|
||||
file_count=$(tar -tzf "$latest_backup" 2>/dev/null | wc -l)
|
||||
log_status "INFO" "Files in latest backup: $file_count"
|
||||
fi
|
||||
else
|
||||
@@ -237,9 +243,12 @@ check_backup_status() {
|
||||
|
||||
# Disk usage
|
||||
if [ -d "$BACKUP_ROOT" ]; then
|
||||
local total_backup_size=$(du -sh "$BACKUP_ROOT" 2>/dev/null | cut -f1)
|
||||
local available_space=$(df -h "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $4}')
|
||||
local used_percentage=$(df "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
local total_backup_size
|
||||
total_backup_size=$(du -sh "$BACKUP_ROOT" 2>/dev/null | cut -f1)
|
||||
local available_space
|
||||
available_space=$(df -h "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $4}')
|
||||
local used_percentage
|
||||
used_percentage=$(df "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
|
||||
log_status "INFO" "Total backup storage: $total_backup_size"
|
||||
log_status "INFO" "Available space: $available_space"
|
||||
@@ -267,15 +276,20 @@ show_performance_metrics() {
|
||||
log_status "OK" "Performance log found"
|
||||
|
||||
# Recent operations
|
||||
local recent_count=$(jq length "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local recent_count
|
||||
recent_count=$(jq length "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
log_status "INFO" "Total logged operations: $recent_count"
|
||||
|
||||
if [ "$recent_count" -gt 0 ]; then
|
||||
# Average times for different operations
|
||||
local avg_backup=$(jq '[.[] | select(.operation == "full_backup") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_verification=$(jq '[.[] | select(.operation == "verification") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_service_stop=$(jq '[.[] | select(.operation == "service_stop") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_service_start=$(jq '[.[] | select(.operation == "service_start") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_backup
|
||||
avg_backup=$(jq '[.[] | select(.operation == "full_backup") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_verification
|
||||
avg_verification=$(jq '[.[] | select(.operation == "verification") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_service_stop
|
||||
avg_service_stop=$(jq '[.[] | select(.operation == "service_stop") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
local avg_service_start
|
||||
avg_service_start=$(jq '[.[] | select(.operation == "service_start") | .duration_seconds] | if length > 0 then add/length else 0 end' "$PERFORMANCE_LOG_FILE" 2>/dev/null || echo "0")
|
||||
|
||||
if [ "$avg_backup" != "0" ] && [ "$avg_backup" != "null" ]; then
|
||||
log_status "INFO" "Average backup time: ${avg_backup}s"
|
||||
@@ -307,9 +321,11 @@ show_recent_activity() {
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
||||
# Check recent log files
|
||||
local recent_log=$(find_most_recent_log "plex-backup-*.log")
|
||||
local recent_log
|
||||
recent_log=$(find_most_recent_log "plex-backup-*.log")
|
||||
if [ -n "$recent_log" ]; then
|
||||
local log_date=$(basename "$recent_log" | sed 's/plex-backup-//' | sed 's/.log//')
|
||||
local log_date
|
||||
log_date=$(basename "$recent_log" | sed 's/plex-backup-//' | sed 's/.log//')
|
||||
local log_location=""
|
||||
if [[ "$recent_log" == "$LOCAL_LOG_ROOT"* ]]; then
|
||||
log_location=" (local)"
|
||||
@@ -319,8 +335,10 @@ show_recent_activity() {
|
||||
log_status "INFO" "Most recent log: $log_date$log_location"
|
||||
|
||||
# Check for errors in recent log
|
||||
local error_count=$(grep -c "ERROR:" "$recent_log" 2>/dev/null || echo "0")
|
||||
local warning_count=$(grep -c "WARNING:" "$recent_log" 2>/dev/null || echo "0")
|
||||
local error_count
|
||||
error_count=$(grep -c "ERROR:" "$recent_log" 2>/dev/null || echo "0")
|
||||
local warning_count
|
||||
warning_count=$(grep -c "WARNING:" "$recent_log" 2>/dev/null || echo "0")
|
||||
|
||||
if [ "$error_count" -eq 0 ] && [ "$warning_count" -eq 0 ]; then
|
||||
log_status "OK" "No errors or warnings in recent log"
|
||||
@@ -357,10 +375,12 @@ show_scheduling_status() {
|
||||
# Check systemd timers
|
||||
if systemctl list-timers --all 2>/dev/null | grep -q "plex-backup"; then
|
||||
log_status "OK" "Systemd timer configured"
|
||||
local timer_status=$(systemctl is-active plex-backup.timer 2>/dev/null || echo "inactive")
|
||||
local timer_status
|
||||
timer_status=$(systemctl is-active plex-backup.timer 2>/dev/null || echo "inactive")
|
||||
if [ "$timer_status" = "active" ]; then
|
||||
log_status "OK" "Timer is active"
|
||||
local next_run=$(systemctl list-timers plex-backup.timer 2>/dev/null | grep "plex-backup" | awk '{print $1, $2}')
|
||||
local next_run
|
||||
next_run=$(systemctl list-timers plex-backup.timer 2>/dev/null | grep "plex-backup" | awk '{print $1, $2}')
|
||||
if [ -n "$next_run" ]; then
|
||||
log_status "INFO" "Next run: $next_run"
|
||||
fi
|
||||
@@ -383,11 +403,14 @@ show_recommendations() {
|
||||
|
||||
# Check backup age
|
||||
if [ -d "$BACKUP_ROOT" ]; then
|
||||
local latest_backup=$(find "$BACKUP_ROOT" -maxdepth 1 -type f -name "plex-backup-*.tar.gz" 2>/dev/null | sort | tail -1)
|
||||
local latest_backup
|
||||
latest_backup=$(find "$BACKUP_ROOT" -maxdepth 1 -type f -name "plex-backup-*.tar.gz" 2>/dev/null | sort | tail -1)
|
||||
if [ -n "$latest_backup" ]; then
|
||||
local backup_filename=$(basename "$latest_backup")
|
||||
local backup_filename
|
||||
backup_filename=$(basename "$latest_backup")
|
||||
# Extract date from filename: plex-backup-YYYYMMDD_HHMMSS.tar.gz
|
||||
local backup_date=$(echo "$backup_filename" | sed 's/plex-backup-//' | sed 's/_.*$//')
|
||||
local backup_date
|
||||
backup_date=$(echo "$backup_filename" | sed 's/plex-backup-//' | sed 's/_.*$//')
|
||||
local backup_age_days=$(( ($(date +%s) - $(date -d "${backup_date:0:4}-${backup_date:4:2}-${backup_date:6:2}" +%s 2>/dev/null || echo "0")) / 86400 ))
|
||||
if [ "$backup_age_days" -gt 7 ]; then
|
||||
recommendations+=("Consider running a manual backup - latest backup is $backup_age_days days old")
|
||||
@@ -408,7 +431,8 @@ show_recommendations() {
|
||||
|
||||
# Check disk space
|
||||
if [ -d "$BACKUP_ROOT" ]; then
|
||||
local used_percentage=$(df "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
local used_percentage
|
||||
used_percentage=$(df "$BACKUP_ROOT" 2>/dev/null | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ -n "$used_percentage" ] && [ "$used_percentage" -gt 85 ]; then
|
||||
recommendations+=("Backup disk usage is high ($used_percentage%) - consider cleaning old backups")
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user