Files
shell/plex/check-plex-builtin-backups.sh
Peter Wood 9b83924597 Add advanced Plex database recovery and restoration scripts
- Introduced `recover-plex-database.sh` for comprehensive database recovery with multiple strategies, logging, and rollback capabilities.
- Added `restore-plex.sh` for safe restoration of Plex backups, including validation and dry-run options.
- Created `plex-db-manager.sh` to consolidate database management functionalities, including integrity checks and service management.
- Enhanced logging and error handling across all scripts for better user feedback and troubleshooting.
- Implemented safety measures to prevent running scripts as root and ensure proper service management during operations.
2025-06-21 07:23:33 -04:00

183 lines
6.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
################################################################################
# Plex Built-in Backup Status Checker
################################################################################
#
# Author: Peter Wood <peter@peterwood.dev>
# Description: Simple utility to check the status of Plex's built-in scheduled
# backups that replaced the custom backup system.
#
# Usage:
# ./check-plex-builtin-backups.sh # Show backup status
# ./check-plex-builtin-backups.sh --help # Show help
#
################################################################################
# Color codes
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Plex database path
PLEX_DB_PATH="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases"
NAS_BACKUP_PATH="/mnt/share/media/backups/plex"
show_help() {
echo "Plex Built-in Backup Status Checker"
echo ""
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " --help, -h Show this help message"
echo " --detailed Show detailed file information"
echo ""
echo "This script checks the status of Plex's built-in scheduled backups"
echo "which replaced the custom backup system on June 21, 2025."
echo ""
echo "Plex automatically creates backups every 3 days with pattern:"
echo " *.backup.YYYYMMDD_HHMMSS"
echo ""
exit 0
}
check_backup_status() {
local detailed="${1:-false}"
echo -e "${BLUE}===============================================${NC}"
echo -e "${BLUE} Plex Built-in Backup Status Check${NC}"
echo -e "${BLUE}===============================================${NC}"
echo ""
# Check if Plex database directory exists
if [ ! -d "$PLEX_DB_PATH" ]; then
echo -e "${RED}❌ Error: Plex database directory not found${NC}"
echo -e " Expected: $PLEX_DB_PATH"
return 1
fi
echo -e "${GREEN}✅ Plex database directory found${NC}"
echo -e " Location: $PLEX_DB_PATH"
echo ""
# Check for built-in backup files
local backup_files
backup_files=$(find "$PLEX_DB_PATH" -name "*.backup.*" 2>/dev/null)
if [ -z "$backup_files" ]; then
echo -e "${YELLOW}⚠️ No built-in backup files found${NC}"
echo -e " This might indicate Plex backups haven't run yet"
echo -e " or the backup schedule is not configured."
echo ""
else
local backup_count
backup_count=$(echo "$backup_files" | wc -l)
echo -e "${GREEN}✅ Found $backup_count built-in backup file(s)${NC}"
echo ""
# Show latest backup
local latest_backup
latest_backup=$(echo "$backup_files" | xargs -I {} ls -t {} | head -1)
if [ -n "$latest_backup" ]; then
local backup_date
backup_date=$(stat -c %y "$latest_backup" 2>/dev/null | cut -d' ' -f1,2 | cut -d'.' -f1)
local backup_size
backup_size=$(du -h "$latest_backup" 2>/dev/null | cut -f1)
echo -e "${GREEN}📅 Latest backup:${NC}"
echo -e " File: $(basename "$latest_backup")"
echo -e " Date: $backup_date"
echo -e " Size: $backup_size"
echo ""
fi
# Show detailed info if requested
if [ "$detailed" = true ]; then
echo -e "${BLUE}📋 All backup files:${NC}"
echo "$backup_files" | while IFS= read -r file; do
if [ -f "$file" ]; then
ls -lah "$file" 2>/dev/null | while IFS= read -r line; do
echo " $line"
done
fi
done
echo ""
fi
# Check backup frequency (should be every 3 days)
if [ "$backup_count" -ge 2 ]; then
local newest_backup
local second_newest_backup
newest_backup=$(echo "$backup_files" | xargs -I {} ls -t {} | head -1)
second_newest_backup=$(echo "$backup_files" | xargs -I {} ls -t {} | head -2 | tail -1)
if [ -n "$newest_backup" ] && [ -n "$second_newest_backup" ]; then
local newest_time
local second_time
newest_time=$(stat -c %Y "$newest_backup" 2>/dev/null)
second_time=$(stat -c %Y "$second_newest_backup" 2>/dev/null)
if [ -n "$newest_time" ] && [ -n "$second_time" ]; then
local time_diff=$((newest_time - second_time))
local days_diff=$((time_diff / 86400))
echo -e "${BLUE}⏱️ Backup frequency check:${NC}"
echo -e " Days between last two backups: $days_diff"
if [ "$days_diff" -ge 2 ] && [ "$days_diff" -le 4 ]; then
echo -e " ${GREEN}✅ Frequency looks normal (every ~3 days)${NC}"
else
echo -e " ${YELLOW}⚠️ Frequency might be unusual${NC}"
fi
echo ""
fi
fi
fi
fi
# Check NAS backup location
echo -e "${BLUE}📁 NAS Backup Location Check:${NC}"
if [ -d "$NAS_BACKUP_PATH" ]; then
echo -e "${GREEN}✅ NAS backup directory accessible${NC}"
echo -e " Location: $NAS_BACKUP_PATH"
local old_custom_backups
old_custom_backups=$(find "$NAS_BACKUP_PATH" -name "plex-backup-*.tar.gz" 2>/dev/null | wc -l)
if [ "$old_custom_backups" -gt 0 ]; then
echo -e " ${YELLOW}📦 Found $old_custom_backups legacy custom backup files${NC}"
echo -e " ${YELLOW} (These are from the old custom backup system)${NC}"
fi
else
echo -e "${RED}❌ NAS backup directory not accessible${NC}"
echo -e " Expected: $NAS_BACKUP_PATH"
fi
echo ""
# Summary
echo -e "${BLUE}📊 Summary:${NC}"
echo -e "${GREEN}✅ Custom backup system: DISABLED (June 21, 2025)${NC}"
echo -e "${GREEN}✅ Plex built-in backups: ACTIVE${NC}"
echo -e "${BLUE} Backup frequency: Every 3 days (automatic)${NC}"
echo -e "${BLUE} Manual tools available: plex-db-manager.sh, plex.sh${NC}"
echo ""
}
# Parse command line arguments
case "${1:-}" in
--help|-h)
show_help
;;
--detailed)
check_backup_status true
;;
"")
check_backup_status false
;;
*)
echo "Unknown option: $1"
echo "Use --help for usage information"
exit 1
;;
esac