mirror of
https://github.com/acedanger/shell.git
synced 2025-12-05 22:50:18 -08:00
- Created a centralized database repair script (`plex-database-repair.sh`) to handle all database integrity checks and repairs for Plex Media Server. - Updated the main Plex management script (`plex.sh`) to integrate the new repair functionality and fixed Unicode/ASCII display issues. - Refactored the backup script (`backup-plex.sh`) to remove duplicate repair functions and ensure it utilizes the new repair script. - Conducted thorough code validation and functional testing to ensure all scripts operate correctly with the new changes. - Enhanced documentation for the new repair script, detailing usage, features, and integration points with other scripts. - Fixed critical bugs related to WAL file handling and corrected typos in script options.
4.8 KiB
4.8 KiB
Plex Database Repair Utility
Overview
The plex-database-repair.sh script provides comprehensive database repair functionality for Plex Media Server. It has been extracted from the backup-plex.sh script to be reusable across multiple scripts in the Plex management suite.
Features
- Database Integrity Verification: Uses Plex's custom SQLite binary for accurate integrity checking
- WAL File Management: Properly handles Write-Ahead Logging files during repair operations
- Multiple Repair Strategies:
- SQL Dump/Restore approach with validation
- Schema recreation with data recovery
- Recovery from previous backups
- Comprehensive Error Handling: Graceful recovery and rollback on failure
- Ownership Preservation: Ensures proper file ownership for the plex user
Usage
Command Line Interface
# Check database integrity only
./plex-database-repair.sh check <database_file>
# Attempt to repair corrupted database
./plex-database-repair.sh repair <database_file>
# Force repair without prompts (for automation)
./plex-database-repair.sh force-repair <database_file>
Integration with Other Scripts
The repair script is designed to be called from other scripts:
# Source the script to use its functions
source /path/to/plex-database-repair.sh
# Use functions directly
check_database_integrity "/path/to/database.db"
repair_database "/path/to/database.db" false
Examples
Basic Integrity Check
./plex-database-repair.sh check "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db"
Repair Corrupted Database
./plex-database-repair.sh repair "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db"
Exit Codes
- 0: Success (database is healthy or successfully repaired)
- 1: Database has issues but repair failed
- 2: Critical error (cannot access database or repair tools)
Dependencies
- Plex Media Server: Must be installed with the custom SQLite binary
- Standard Unix tools:
cp,mv,rm,chown,sync - sudo access: Required for accessing Plex files and changing ownership
Integration Points
plex.sh
The main Plex management script uses this repair utility for:
- Pre-startup integrity checking
- Manual database repair command (
plex.sh repair)
backup-plex.sh
The backup script uses this utility for:
- Pre-backup integrity verification
- Automatic repair during backup process
- Database corruption detection and handling
Technical Details
Repair Strategies
-
SQL Dump/Restore:
- Creates a complete SQL dump of the corrupted database
- Validates dump contains essential Plex tables
- Creates new database from validated dump
- Verifies integrity of repaired database
-
Schema Recreation:
- Extracts schema from corrupted database
- Creates new database with clean schema
- Attempts table-by-table data recovery
- Considers successful if 80% of tables recovered
-
Backup Recovery:
- Locates most recent valid backup
- Extracts and validates backup database
- Replaces corrupted database with backup version
WAL File Handling
The script properly manages SQLite Write-Ahead Logging files:
- Prepare: Performs WAL checkpoint and creates backups
- Cleanup: Removes WAL/SHM files and restores WAL mode
- Restore: Restores WAL/SHM files if repair fails
Safety Measures
- Creates pre-repair backups before any modifications
- Uses atomic file operations where possible
- Forces filesystem sync after critical operations
- Preserves original database if all repair strategies fail
- Ensures proper file ownership and permissions
Troubleshooting
Common Issues
- Permission Denied: Ensure script has sudo access and Plex files are accessible
- Plex SQLite Not Found: Verify Plex Media Server is properly installed
- Insufficient Disk Space: Repair process requires significant temporary space
- Service Access: Ensure Plex service can be stopped/started during repair
Recovery Options
If repair fails:
- Check
backup-plex.shfor recent backups - Examine corrupted database directories for recovery files
- Consider manual database reconstruction using Plex tools
- Contact Plex support for advanced recovery options
Related Scripts
- plex.sh: Main Plex service management
- backup-plex.sh: Comprehensive backup solution
- restore-plex.sh: Backup restoration utilities
- validate-plex-backups.sh: Backup validation tools
Changelog
v1.0 (2025-06-18)
- Initial extraction from backup-plex.sh
- Added standalone command-line interface
- Enhanced ownership preservation
- Improved error handling and logging