migration: mark executed 2026-08-01, record deviations from the written procedure
This commit is contained in:
+38
-2
@@ -1,5 +1,35 @@
|
|||||||
# Plex Migration — Windows → Linux, nothing lost
|
# Plex Migration — Windows → Linux, nothing lost
|
||||||
|
|
||||||
|
> ## ✅ EXECUTED 2026-08-01 — M0 through M4 complete in one day
|
||||||
|
>
|
||||||
|
> Plex is live on Linux with its original identity (`eb69ec8a…`), watch state
|
||||||
|
> intact, direct play verified with a real session. In soak (M5). This file is
|
||||||
|
> now the **record of the procedure**; deviations that a future re-run must
|
||||||
|
> know about:
|
||||||
|
>
|
||||||
|
> 1. **VACUUM is mandatory after the remap.** The no-backslash gate greps the
|
||||||
|
> raw DB file and hits deleted rows lingering on SQLite **free pages**.
|
||||||
|
> Plain sqlite3/python cannot open the DB (custom `icu_root` collation —
|
||||||
|
> do NOT fake it); run VACUUM with **Plex's own SQLite** via
|
||||||
|
> `docker run --entrypoint`.
|
||||||
|
> 2. **Expect phantom rows from dead eras.** 1,715 backslash rows survived
|
||||||
|
> the remap legitimately: Sync+ cache from old D:/E:/G: drive letters
|
||||||
|
> (+ orphan `media_items`), 6 rows for a dead `\\tesla` NAS, and 115 UNC
|
||||||
|
> blobs in `download_queue_items.decision_result`. All deleted; 3 real
|
||||||
|
> theme-music paths re-pathed. The remap itself was correct — these
|
||||||
|
> predate the current library roots.
|
||||||
|
> 3. **Verify staged copies with `rsync -an --delete --stats`** (0 transferred
|
||||||
|
> / 0 deleted), never `du -sb` equality — directory apparent sizes differ
|
||||||
|
> across filesystems.
|
||||||
|
> 4. **First boot needs `systemctl start --no-block`** in cloud-init runcmd —
|
||||||
|
> `enable` alone misses the boot it runs in (fixed in `user-data`).
|
||||||
|
> 5. Post-go-live, the Plex image pin was **reversed** (Mike, 2026-08-02):
|
||||||
|
> `:latest` + watchtower daily 05:00 with ntfy. Watchtower needs
|
||||||
|
> `DOCKER_API_VERSION=1.44` against Engine 29.
|
||||||
|
>
|
||||||
|
> Cleanup 2026-08-02: staging dir + `.pre-remap`/`.pre-syncfix` sidecars
|
||||||
|
> deleted. Rollback net = NAS `media_pc` backup + Plex's scheduled DB backups.
|
||||||
|
|
||||||
Supersedes the earlier "forward-only, fresh Plex" decision. That call was made
|
Supersedes the earlier "forward-only, fresh Plex" decision. That call was made
|
||||||
before the library was measured. At **27 TB, 25,148 video items and 337 GB of
|
before the library was measured. At **27 TB, 25,148 video items and 337 GB of
|
||||||
already-generated preview cache**, rebuilding fresh costs one to three weeks of
|
already-generated preview cache**, rebuilding fresh costs one to three weeks of
|
||||||
@@ -200,6 +230,11 @@ paths remain, that the counts moved 1:1, that the "Dr. Korval" tag and the
|
|||||||
four Liaden book summaries are **untouched**, and finally stats 200 random
|
four Liaden book summaries are **untouched**, and finally stats 200 random
|
||||||
remapped paths against the real filesystem.
|
remapped paths against the real filesystem.
|
||||||
|
|
||||||
|
**As executed:** the no-backslash gate additionally required deleting phantom
|
||||||
|
Sync+ cache rows from dead drive-letter eras, 6 dead `\\tesla` rows and 115
|
||||||
|
`download_queue_items` UNC blobs, then **VACUUM with Plex's own SQLite**
|
||||||
|
(see the banner at the top) before the raw-file grep came back clean.
|
||||||
|
|
||||||
No claim token. The server already has its identity. The compose bind-mounts
|
No claim token. The server already has its identity. The compose bind-mounts
|
||||||
`/srv/data/plex-media` over `.../Plex Media Server/Media`, so the migrated
|
`/srv/data/plex-media` over `.../Plex Media Server/Media`, so the migrated
|
||||||
thumbnails are in place from the first start.
|
thumbnails are in place from the first start.
|
||||||
@@ -236,5 +271,6 @@ decision, not a cleanup step.
|
|||||||
Before M3 step 3 (the format), `D:` is intact and everything is reversible on
|
Before M3 step 3 (the format), `D:` is intact and everything is reversible on
|
||||||
the data side — Windows itself is gone after M1, but a reinstall from the USB
|
the data side — Windows itself is gone after M1, but a reinstall from the USB
|
||||||
takes ~20 minutes and every copy still exists. After the format, the NAS
|
takes ~20 minutes and every copy still exists. After the format, the NAS
|
||||||
`media_pc` backup is the recovery source: it outlives every step here, and
|
`media_pc` backup is the recovery source: it outlives every step here.
|
||||||
`migrate-db.sh` leaves a `.pre-remap` copy beside every database it touches.
|
(The on-box `.pre-remap`/`.pre-syncfix` sidecars were deleted 2026-08-02
|
||||||
|
after the soak-start all-clear.)
|
||||||
|
|||||||
Reference in New Issue
Block a user