diff --git a/ReleaseNotes b/ReleaseNotes index ca56050..2671336 100644 --- a/ReleaseNotes +++ b/ReleaseNotes @@ -1,105 +1,615 @@ +# PlexDBRepair -Release Notes: v0.8.0 +[![GitHub issues](https://img.shields.io/github/issues/ChuckPa/PlexDBRepair.svg?style=flat)](https://github.com/ChuckPa/PlexDBRepair/issues) +[![Release](https://img.shields.io/github/release/ChuckPa/PlexDBRepair.svg?style=flat)](https://github.com/ChuckPa/PlexDBRepair/releases/latest) +[![Download latest release](https://img.shields.io/github/downloads/ChuckPa/PlexDBRepair/latest/total.svg)](https://github.com/ChuckPa/PlexDBRepair/releases/latest) +[![Download total](https://img.shields.io/github/downloads/ChuckPa/PlexDBRepair/total.svg)](https://github.com/ChuckPa/PlexDBRepair/releases) +[![master](https://img.shields.io/badge/master-stable-green.svg?maxAge=2592000)]('') +![Maintenance](https://img.shields.io/badge/Maintained-Yes-green.svg) -Changes: +# Introduction -1. "Options" have now become "Commands". You may use either the number or the command name or 4 character - abbreviation. +DBRepair provides database repair and maintenance for the most common Plex Media Server database problems. +It is a simple menu-driven utility with a command line backend. +## Situations and errors commonly seen include: -2. Menu has been resequenced to better reflect typical use sequence. + 1. Searching is sluggish + 2. Database is malformed / damaged / corrupted + 3. Database has bloated from media addition or changes + 4. Damaged indexes damaged -3. Commands are not case sensitive. +## Functions provided -4. Commands may be given on the script invocation command line just as "Option number" were. + The utility accepts command names. + Command names may be upper/lower case and may also be abbreviated (4 character minimum). -5. Some commands accept arguments. These may be entered at the menu command line. If not entered, you will be prompted. + The following commands (or their number), listed in alphabetical order, are accepted as input. -6. New command "Automatic" (Auto). Automatic performs Check, Repair(or optimize), and Reindex in one step. + AUTO(matic) - Automatically check, repair/optimize, and reindex the databases in one step. + CHEC(k) - Check the main and blob databases integrity + EXIT - Exit the utility + IMPO(rt) - Import viewstate / watch history from another database + REIN(dex) - Rebuild the database indexes + REPL(ace) - Replace the existing databases with a PMS-generated backup + SHOW - Show the log file + STAR(t) - Start PMS (not available on all platforms) + STOP - Stop PMS (not available on all platforms) + UNDO - UNDO the last operation + VACU(um) - Vacuum the databases -7. PMS can now be stopped/started from within the tool for those environments which support it. - If the host/container does not support start/stop then "Not Available" will be shown in the menu -8. Logfile and console output has been updated to show full date & time. - Console output will only show full date & time when running in "Command line" mode (commands on invocation line) +### The menu -SAMPLE SESSION + The menu gives you the option to enter either a 'command number' or the 'command name/abbreviation'. + For clarity, each command's name is 'quoted'. -root@lizum:/sata/plex/Plex Media Server/Plug-in Support/Databases# ./DBRepair.sh stop auto start status exit + + Plex Media Server Database Repair Utility (_host_configuration_name_) + Version v1.0.0 + + Select + + 1 - 'stop' PMS (if available) + 2 - 'automatic' database check, repair/optimize, and reindex in one step. + 3 - 'check' database + 4 - 'vacuum' database + 5 - 'repair' / 'optimize' database + 6 - 'reindex' database + 7 - 'start' PMS (if available) + 8 - 'import' viewstate (Watch history) from another PMS database + 9 - 'replace' current database with newest usable backup copy (interactive) + 10 - 'show' logfile + 11 - 'status' of PMS (Stop/Run and databases) + 12 - 'undo' - Undo last successful command + + 99 - exit + + Enter command # -or- command name (4 char min) : + + + +## Hosts currently supported + + 1. Apple (MacOS) + 2. ASUSTOR + 3. Docker containers via 'docker exec' command (inside the running container environment) + - Plex,inc. + - Linuxserver.io + - BINHEX + - HOTIO + - Podman (libgpod) + 4. Linux workstation & server + 5. Netgear (OS5 Linux-based systems) + 6. QNAP (QTS & QuTS) + 7. Synology (DSM 6 & DSM 7) + 8. Western Digital (OS5) + + # Installation + + Where to place the utility varies from host to host. + Please use this table as a reference. + +``` + Vendor | Shared folder name | directory + -------------------+---------------------+------------------------------------------ + Apple | Downloads | ~/Downloads + ASUSTOR | Public | /volume1/Public + binhex | N/A | Container root (adjacent /config) + Docker | N/A | Container root (adjacent /config) + Hotio | N/A | Container root (adjacent /config) + Linux (wkstn/svr) | N/A | Anywhere + Netgear (ReadyNAS) | "your_choice" | "/data/your_choice" + QNAP (QTS/QuTS) | Public | /share/Public + Synology (DSM 6) | Plex | /volume1/Plex (change volume as required) + Synology (DSM 7) | PlexMediaServer | /volume1/PlexMediaServer (change volume as required) + Western Digital | Public | /mnt/HD/HD_a2/Public (Does not support 'MyCloudHome' series) +``` + +### General installation and usage instructions + + 1. Open your browser to https://github.com/ChuckPa/PlexDBRepair/releases/latest + 2. Download the source code (tar.gz or ZIP) file + + 3. Knowing the file name will always be of the form 'PlexDBRepair-X.Y.Z.tar.gz' + -- where X.Y.Z is the release number. Use the real values in place of X, Y, and Z. + 4. Place the tar.gz file in the appropriate directory on the system you'll use it. + 5. Open a command line session (usually Terminal or SSH) + 6. Elevate privilege level to root (sudo) if needed. + 7. Extract the utility from the tar or zip file + 8. 'cd' into the extraction directory + 9. Give DBRepair.sh 'execute' permission (chmod +x) + 10. Invoke ./DBRepair.sh + + + + +### EXAMPLE: To install & launch on Synology DSM 6 + + cd /volume1/Plex + sudo bash + tar xf PlexDBRepair-x.y.z.tar.gz + cd PlexDBRepair-x.y.z + chmod +x DBRepair.sh + ./DBRepair.sh + + +### EXAMPLE: Using DBRepair inside containers (manual start/stop included) + +#### (Select containers allow stopping/starting PMS from the menu. See menu for details) + + sudo docker exec -it plex /bin/bash + + # extract from downloaded version file name then cd into directory + tar xf PlexDBRepair-1.0.0.tar.gz + cd PlexDBRepair-1.0.0 + chmod +x DBRepair.sh + ./DBRepair.sh +``` +### EXAMPLE: Using DBRepair on regular Linux native host (Workstation/Server) +``` + sudo bash + cd /path/to/DBRepair.tar + tar xf PlexDBRepair-1.0.0.tar.gz + cd PlexDBRepair-1.0.0 + chmod +x DBRepair.sh + ./DBRepair.sh stop auto start exit +``` + +### EXAMPLE: Using DBRepair from the command line on MacOS (on the administrator account) +``` + osascript -e 'quit app "Plex Media Server"' + cd ~/Downloads + tar xvf PlexDBRepai PlexDBRepair-1.0.0.tar.gz + cd PlexDBRepai PlexDBRepair-1.0.0 + + chmod +x DBRepair.sh + ./DBRepair.sh + + + +## Typical usage + +This utility can only operate on PMS when PMS is in the stopped state. +If PMS is running when you startup the utility, it will tell you. + +These examples + + A. The most common usage will be the "Automatic" function. + + Automatic mode is where DBRepair determines which steps are needed to make your database run optimally. + For most users, Automatic is equivalent to 'Check, Repair, Reindex'. + This repairs minor damage, vacuums out all the unused records, and rebuilds search indexes in one step. + + B. Database is malformed (Backups of com.plexapp.plugins.library.db and com.plexap.plugins.library.blobs.db available) + Note: You may attempt "Repair" sequence + + 1. (3) Check - Confirm either main or blobs database is damaged + 2. (9) Replace - Use the most recent valid backup -- OR -- (5) Repair. Check date/time stamps for best action. + -- If Replace fails, use Repair (5) + -- (Replace can fail if the database has been damaged for a long time.) + 3. (6) Reindex - Generate new indexes so PMS doesn't need to at startup + 4. (99) Exit + + C. Database is malformed - No Backups + 1. (3) Check - Confirm either main or blobs database is damaged + 2. (5) Repair - Salavage as much as possible from the databases and rebuild them into a usable database. + 3. (6) Reindex - Generate new indexes so PMS doesn't need to at startup + 4. (99) Exit + + C. Database sizes excessively large when compared to amount of media indexed (item count) + 1. (3) Check - Make certain both databases are fully intact (repair if needed) + 2. (4) Vacuum - Instruct SQLite to rebuild its tables and recover unused space. + 3. (6) Reindex - Rebuild Indexes. + 4. (99) Exit + + D. User interface has become 'sluggish' as more media was added + 1. (3) Check - Confirm there is no database damage + 2. (5) Repair - You are not really repairing. You are rebuilding the DB in perfect sorted order. + 3. (6) Reindex - Rebuild Indexes. + 4. Exit - (Option 9) + + E. Undo + Undo is a special case where you need the utility to backup ONE step. + This is rarely needed. The only time you might want/need to backup one step is if Replace leaves you worse off + than you were before. In this case, UNDO then Repair. Undo can only undo the single most-recent action. + (Note: In a future release, you will be able to 'undo' every action taken until the DBs are in their original state) + +Special considerations: + + 1. As stated above, this utilty requires PMS to be stopped in order to do what it does. + 2. - This utility CAN sit at the menu prompt with PMS running. + - You did a few things and want to check BEFORE exiting the utility + - If you don't like how it worked out, + -- STOP PMS + -- UNDO the last action and do something else + -- OR do more things to the databases + 3. When satisfied, Exit the utility. + - There is no harm in keeping the database temp files (except for space used) + - ALL database temps are named with date-time stamps in the name to avoid confusion. + 4. The Logfile ('show' command) shows all actions performed WITH timestamp so you can locate intermediate databases + if desired for special / manual recovery cases. + + +## Scripting support + + Certain platforms don't provide for each command line access. + To support those products, this utility can be operated by adding command line arguments. + + Another use of this feature is to automate Plex Database maintenance + ( Stop Plex, Run this sequence, Start Plex ) at a time when the server isn't busy + + + The command line arguments are the same as if typing at the menu. + + Example: ./DBRepair.sh stop auto start exit + + This executes: Stop PMS, Automatic (Check, Repair, Reindex), Start PMS, and Exit commands + + +## Exiting + + When exiting, you will be asked whether to keep the interim temp files created during this session. + If you've encountered any difficulties or aren't sure what to do, don't delete them. + You'll be able to ask in the Plex forums about what to do. Be prepared to present the log file to them. + + +## Sample interactive session + + This is a typical manual session if you aren't sure what to do and want the tool to decide. + + + +``` +bash-4.4# #======================================================================================================= +bash-4.4# ./DBRepair.sh + + + + Plex Media Server Database Repair Utility (Synology (DSM 7)) + Version v1.0.0 + + +Select + + 1 - 'stop' - Stop PMS + 2 - 'automatic' - database check, repair/optimize, and reindex in one step. + 3 - 'check' - Perform integrity check of database + 4 - 'vacuum' - Remove empty space from database + 5 - 'repair' - Repair/Optimize databases + 6 - 'reindex' - Rebuild database database indexes + 7 - 'start' - Start PMS + + 8 - 'import' - Import watch history from another database independent of Plex. (risky) + 9 - 'replace' - Replace current databases with newest usable backup copy (interactive) + 10 - 'show' - Show logfile + 11 - 'status' - Report status of PMS (run-state and databases) + 12 - 'undo' - Undo last successful command + + 99 - exit + +Enter command # -or- command name (4 char min) : 1 + +Stopping PMS. +Stopped PMS. + +Select + + 1 - 'stop' - Stop PMS + 2 - 'automatic' - database check, repair/optimize, and reindex in one step. + 3 - 'check' - Perform integrity check of database + 4 - 'vacuum' - Remove empty space from database + 5 - 'repair' - Repair/Optimize databases + 6 - 'reindex' - Rebuild database database indexes + 7 - 'start' - Start PMS + + 8 - 'import' - Import watch history from another database independent of Plex. (risky) + 9 - 'replace' - Replace current databases with newest usable backup copy (interactive) + 10 - 'show' - Show logfile + 11 - 'status' - Report status of PMS (run-state and databases) + 12 - 'undo' - Undo last successful command + + 99 - exit + +Enter command # -or- command name (4 char min) : auto + + +Checking the PMS databases +Check complete. PMS main database is OK. +Check complete. PMS blobs database is OK. + +Exporting current databases using timestamp: 2023-02-25_16.15.11 +Exporting Main DB +Exporting Blobs DB +Successfully exported the main and blobs databases. Proceeding to import into new databases. +Importing Main DB. +Importing Blobs DB. +Successfully imported data from SQL files. +Verifying databases integrity after importing. +Verification complete. PMS main database is OK. +Verification complete. PMS blobs database is OK. +Saving current databases with '-BKUP-2023-02-25_16.15.11' +Making imported databases active +Import complete. Please check your library settings and contents for completeness. +Recommend: Scan Files and Refresh all metadata for each library section. + +Backing up of databases +Backup current databases with '-BKUP-2023-02-25_16.20.41' timestamp. +Reindexing main database +Reindexing main database successful. +Reindexing blobs database +Reindexing blobs database successful. +Reindex complete. +Automatic Check,Repair/optimize,Index successful. + +Select + + 1 - 'stop' PMS + 2 - 'automatic' database check, repair/optimize, and reindex in one step. + 3 - 'check' database + 4 - 'vacuum' database + 5 - 'repair' / 'optimize' database + 6 - 'reindex' database + 7 - 'start' PMS + 8 - 'import' viewstate (Watch history) from another PMS database + 9 - 'replace' current database with newest usable backup copy (interactive) + 10 - 'show' logfile + 11 - 'status' of PMS (Stop/Run and databases) + 12 - 'undo' - Undo last successful command + 99 - exit + +Enter command # -or- command name (4 char min) : start + +Starting PMS. +Started PMS + +Select + + 1 - 'stop' PMS + 2 - 'automatic' database check, repair/optimize, and reindex in one step. + 3 - 'check' database + 4 - 'vacuum' database + 5 - 'repair' / 'optimize' database + 6 - 'reindex' database + 7 - 'start' PMS + 8 - 'import' viewstate (Watch history) from another PMS database + 9 - 'replace' current database with newest usable backup copy (interactive) + 10 - 'show' logfile + 11 - 'status' of PMS (Stop/Run and databases) + 12 - 'undo' - Undo last successful command + 99 - exit + +Enter command # -or- command name (4 char min) : stat + + +Status report: Sat Feb 25 04:38:50 PM EST 2023 + PMS is running. + Databases are OK. + + +Select + + 1 - 'stop' PMS + 2 - 'automatic' database check, repair/optimize, and reindex in one step. + 3 - 'check' database + 4 - 'vacuum' database + 5 - 'repair' / 'optimize' database + 6 - 'reindex' database + 7 - 'start' PMS + 8 - 'import' viewstate (Watch history) from another PMS database + 9 - 'replace' current database with newest usable backup copy (interactive) + 10 - 'show' logfile + 11 - 'status' of PMS (Stop/Run and databases) + 12 - 'undo' - Undo last successful command + 99 - exit + +Enter command # -or- command name (4 char min) : exit + +Ok to remove temporary databases/workfiles for this session? (Y/N) ? y +Are you sure (Y/N) ? y +Deleting all temporary work files. +bash-4.4# + +``` + +## Sample (typical) scripted session (e.g. via 'cron') + +``` +root@lizum:/sata/plex/Plex Media Server/Plug-in Support/Databases# ./DBRepair.sh stop check auto start exit Plex Media Server Database Repair Utility (Ubuntu 20.04.5 LTS) - Version v1.0.0 - BETA 2 + Version v1.0.0 -[2023-03-02 16.28.17] Stopping PMS. -[2023-03-02 16.28.19] Stopped PMS. +[2023-03-05 18.53.49] Stopping PMS. +[2023-03-05 18.53.49] Stopped PMS. -[2023-03-02 16.28.19] Automatic Check,Repair,Index started. -[2023-03-02 16.28.19] -[2023-03-02 16.28.19] Checking the PMS databases -[2023-03-02 16.28.21] Check complete. PMS main database is OK. -[2023-03-02 16.28.21] Check complete. PMS blobs database is OK. -[2023-03-02 16.28.21] -[2023-03-02 16.28.21] Exporting current databases using timestamp: 2023-03-02_16.28.19 -[2023-03-02 16.28.21] Exporting Main DB -[2023-03-02 16.28.24] Exporting Blobs DB -[2023-03-02 16.28.24] Successfully exported the main and blobs databases. Proceeding to import into new databases. -[2023-03-02 16.28.24] Importing Main DB. -[2023-03-02 16.28.31] Importing Blobs DB. -[2023-03-02 16.28.31] Successfully imported data from SQL files. -[2023-03-02 16.28.31] Verifying databases integrity after importing. -[2023-03-02 16.28.32] Verification complete. PMS main database is OK. -[2023-03-02 16.28.32] Verification complete. PMS blobs database is OK. -[2023-03-02 16.28.32] Saving current databases with '-BACKUP-2023-03-02_16.28.19' -[2023-03-02 16.28.32] Making imported databases active -[2023-03-02 16.28.32] Import complete. Please check your library settings and contents for completeness. -[2023-03-02 16.28.32] Recommend: Scan Files and Refresh all metadata for each library section. -[2023-03-02 16.28.32] -[2023-03-02 16.28.32] Backing up of databases -[2023-03-02 16.28.32] Backup current databases with '-BACKUP-2023-03-02_16.28.32' timestamp. -[2023-03-02 16.28.33] Reindexing main database -[2023-03-02 16.28.34] Reindexing main database successful. -[2023-03-02 16.28.34] Reindexing blobs database -[2023-03-02 16.28.34] Reindexing blobs database successful. -[2023-03-02 16.28.34] Reindex complete. -[2023-03-02 16.28.34] Automatic Check,Repair/optimize,Index successful. +[2023-03-05 18.53.49] Checking the PMS databases +[2023-03-05 18.54.22] Check complete. PMS main database is OK. +[2023-03-05 18.54.22] Check complete. PMS blobs database is OK. -[2023-03-02 16.28.34] Starting PMS. -[2023-03-02 16.28.34] Started PMS +[2023-03-05 18.54.22] Automatic Check,Repair,Index started. +[2023-03-05 18.54.22] +[2023-03-05 18.54.22] Checking the PMS databases +[2023-03-05 18.54.56] Check complete. PMS main database is OK. +[2023-03-05 18.54.56] Check complete. PMS blobs database is OK. +[2023-03-05 18.54.56] +[2023-03-05 18.54.56] Exporting current databases using timestamp: 2023-03-05_18.54.22 +[2023-03-05 18.54.56] Exporting Main DB +[2023-03-05 18.55.30] Exporting Blobs DB +[2023-03-05 18.55.33] Successfully exported the main and blobs databases. Proceeding to import into new databases. +[2023-03-05 18.55.33] Importing Main DB. +[2023-03-05 18.57.04] Importing Blobs DB. +[2023-03-05 18.57.05] Successfully imported SQL data. +[2023-03-05 18.57.05] Verifying databases integrity after importing. +[2023-03-05 18.57.40] Verification complete. PMS main database is OK. +[2023-03-05 18.57.40] Verification complete. PMS blobs database is OK. +[2023-03-05 18.57.40] Saving current databases with '-BACKUP-2023-03-05_18.54.22' +[2023-03-05 18.57.40] Making repaired databases active +[2023-03-05 18.57.40] Repair complete. Please check your library settings and contents for completeness. +[2023-03-05 18.57.40] Recommend: Scan Files and Refresh all metadata for each library section. +[2023-03-05 18.57.40] +[2023-03-05 18.57.40] Backing up of databases +[2023-03-05 18.57.40] Backup current databases with '-BACKUP-2023-03-05_18.57.40' timestamp. +[2023-03-05 18.57.41] Reindexing main database +[2023-03-05 18.58.17] Reindexing main database successful. +[2023-03-05 18.58.17] Reindexing blobs database +[2023-03-05 18.58.17] Reindexing blobs database successful. +[2023-03-05 18.58.17] Reindex complete. +[2023-03-05 18.58.17] Automatic Check, Repair/optimize, & Index successful. -[2023-03-02 16.28.34] -[2023-03-02 16.28.34] Status report: Thu 02 Mar 2023 04:28:34 PM EST -[2023-03-02 16.28.34] PMS is running. -[2023-03-02 16.28.34] Databases are OK. -[2023-03-02 16.28.34] +[2023-03-05 18.58.17] Starting PMS. +[2023-03-05 18.58.17] Started PMS -root@lizum:/sata/plex/Plex Media Server/Plug-in Support/Databases# cat DBRepair.log -2023-03-02 16.28.17 - ============================================================ -2023-03-02 16.28.17 - Session start: Host is Ubuntu 20.04.5 LTS -2023-03-02 16.28.19 - Stop - PASS -2023-03-02 16.28.19 - Auto - START -2023-03-02 16.28.21 - Check - Check com.plexapp.plugins.library.db - PASS -2023-03-02 16.28.21 - Check - Check com.plexapp.plugins.library.blobs.db - PASS -2023-03-02 16.28.21 - Check - PASS -2023-03-02 16.28.24 - Repair - Export databases - PASS -2023-03-02 16.28.31 - Repair - Import - PASS -2023-03-02 16.28.32 - Repair - Verify main database - PASS (Size: 139MB/139MB). -2023-03-02 16.28.32 - Repair - Verify blobs database - PASS (Size: 1MB/1MB). -2023-03-02 16.28.32 - Repair - Move files - PASS -2023-03-02 16.28.32 - Repair - PASS -2023-03-02 16.28.32 - Repair - PASS -2023-03-02 16.28.33 - Reindex - MakeBackup com.plexapp.plugins.library.db - PASS -2023-03-02 16.28.33 - Reindex - MakeBackup com.plexapp.plugins.library.blobs.db - PASS -2023-03-02 16.28.33 - Reindex - MakeBackup - PASS -2023-03-02 16.28.34 - Reindex - Reindex: com.plexapp.plugins.library.db - PASS -2023-03-02 16.28.34 - Reindex - Reindex: com.plexapp.plugins.library.blobs.db - PASS -2023-03-02 16.28.34 - Reindex - PASS -2023-03-02 16.28.34 - Reindex - PASS -2023-03-02 16.28.34 - Auto - COMPLETED -2023-03-02 16.28.34 - Start - PASS -2023-03-02 16.28.35 - Exit - Delete temp files. -2023-03-02 16.28.35 - Session end. Thu 02 Mar 2023 04:28:35 PM EST -2023-03-02 16.28.35 - ============================================================ root@lizum:/sata/plex/Plex Media Server/Plug-in Support/Databases# +``` + +====================== +``` + +``` +## Logfile + + The logfile (DBRepair.log) keeps track of all commands issues and their status (PASS/FAIL) with timestamp. + This can be useful when recovering from an interrupted session because temporary files are timestamped. + + +``` +2023-02-25 16.14.39 - ============================================================ +2023-02-25 16.14.39 - Session start: Host is Synology (DSM 7) +2023-02-25 16.14.56 - StopPMS - PASS +2023-02-25 16.16.06 - Check - Check com.plexapp.plugins.library.db - PASS +2023-02-25 16.16.06 - Check - Check com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.16.06 - Check - PASS +2023-02-25 16.17.20 - Repair - Export databases - PASS +2023-02-25 16.19.52 - Repair - Import - PASS +2023-02-25 16.20.41 - Repair - Verify main database - PASS (Size: 399MB/399MB). +2023-02-25 16.20.41 - Repair - Verify blobs database - PASS (Size: 1MB/1MB). +2023-02-25 16.20.41 - Repair - Move files - PASS +2023-02-25 16.20.41 - Repair - PASS +2023-02-25 16.20.41 - Repair - PASS +2023-02-25 16.20.46 - Reindex - MakeBackup com.plexapp.plugins.library.db - PASS +2023-02-25 16.20.46 - Reindex - MakeBackup com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.20.46 - Reindex - MakeBackup - PASS +2023-02-25 16.21.34 - Reindex - Reindex: com.plexapp.plugins.library.db - PASS +2023-02-25 16.21.35 - Reindex - Reindex: com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.21.35 - Reindex - PASS +2023-02-25 16.21.35 - Reindex - PASS +2023-02-25 16.21.35 - Auto - PASS +2023-02-25 16.38.35 - StartPMS - PASS +2023-02-25 16.38.57 - Exit - Delete temp files. +2023-02-25 16.38.58 - Session end. +2023-02-25 16.38.58 - ============================================================ +2023-02-25 16.40.10 - ============================================================ +2023-02-25 16.40.10 - Session start: Host is Synology (DSM 7) +2023-02-25 16.40.27 - StopPMS - PASS +2023-02-25 16.42.23 - Check - Check com.plexapp.plugins.library.db - PASS +2023-02-25 16.42.24 - Check - Check com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.42.24 - Check - PASS +2023-02-25 16.43.39 - Repair - Export databases - PASS +2023-02-25 16.46.10 - Repair - Import - PASS +2023-02-25 16.46.58 - Repair - Verify main database - PASS (Size: 399MB/399MB). +2023-02-25 16.46.58 - Repair - Verify blobs database - PASS (Size: 1MB/1MB). +2023-02-25 16.46.59 - Repair - Move files - PASS +2023-02-25 16.46.59 - Repair - PASS +2023-02-25 16.46.59 - Repair - PASS +2023-02-25 16.47.03 - Reindex - MakeBackup com.plexapp.plugins.library.db - PASS +2023-02-25 16.47.03 - Reindex - MakeBackup com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.47.03 - Reindex - MakeBackup - PASS +2023-02-25 16.47.52 - Reindex - Reindex: com.plexapp.plugins.library.db - PASS +2023-02-25 16.47.52 - Reindex - Reindex: com.plexapp.plugins.library.blobs.db - PASS +2023-02-25 16.47.52 - Reindex - PASS +2023-02-25 16.47.52 - Reindex - PASS +2023-02-25 16.47.52 - Auto - PASS +2023-02-25 16.48.04 - StartPMS - PASS +2023-02-25 16.48.05 - Exit - Delete temp files. +2023-02-25 16.48.05 - Session end. + +``` + +# Command Reference: + +### Automatic + + Automatic provides automated processing of most checks and repairs. (Check, Repair/Resequence, Index) + In its current state, it will not automatically replace a damaged database from a backup (future) + + It will not stop PMS as not all systems support stopping PMS from within this tool. + +### Check + + Checks the integrity of the Plex main and blobs databases. + +### Exit + + Exits the utility and removes all temporary database files created during processing. + To save all intermediate databases, use the 'Quit' command. + +### Import + + Imports (raw) watch history from another PMS database without ability to check validity + ( This can have side effects of "negative watch count" being displayed. Caution is advised. ) + + +### Reindex + + Rebuilds the database indexes after an import, repair, or replace operation. + These indexes are used by PMS for searching (both internally and your typed searches) + +### Repair + + Extracts/recovers all the usable data fron the existing databases into text (SQL ascii) form. + Repair then creates new SQLite-valid databases from the extracted/recovered data. + + The side effect of this process is a fully defragmented database (optimal for Plex use). + + 100% validity/usability by Plex is not guaranteed as the tool cannot validate each individual + record contained in the database. It can only validate at the SQLite level. + + In most cases, Repair is the preferred option as the records extracted are only those SQLite deemed valid. + +### Replace + + Looks through the list of available PMS backups. + + Starting with the most recent PMS backup, + 1. Check the both db files + 2. If valid, offer as a replacement choice + 3. If accepted (Y/N question) then use as the replacement + else advance to the next available backup + 4. Upon completion, validate one final time. + +### Quit + + Exits the utility but leaves the temporary databases intact (useful for making exhaustive backups) + +### Show + + Shows the activity log. The activity log is date/time stamped of all activity. + +### Start + + On platform environments which support it, and when invoked by the 'root' user, the tool can start PMS. + If not the 'root' user or on a platform which doesn't support it, "Not available" will be indicated. + +### Stop + + On platform environments which support it, and when invoked by the 'root' user, the tool can stop PMS. + If not the 'root' user or on a platform which doesn't support it, "Not available" will be indicated. + + PMS must be in the stopped state in order to operate on the database files. + +### Undo + + Undo allows you to "Undo" the last Import, Repair, Replace, or Vacuum command. + At present, it only allows the ONE most recent operation. + (Future will support undoing more actions) + +### Vacuum + + Instructs SQLite to remove the empty/deleted records and gaps from the databases. + This is most beneficial after deleting whole library sections. + +###