docs: record what the relocated-restore failure actually cost
A restore onto a host laid out differently from the backup's source restored nothing at all, silently, and that is the whole point of the feature. Now verified end to end on a matrix case-4 install against a real 13-app repository. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
3518006205
commit
b3aff2833c
@ -371,6 +371,27 @@ what it is for. The lesson generalises — **a check with a fallback needs a tes
|
|||||||
that the check itself fires**, not just that the command succeeds
|
that the check itself fires**, not just that the command succeeds
|
||||||
(`scripts/dev/lp-preflight-test`).
|
(`scripts/dev/lp-preflight-test`).
|
||||||
|
|
||||||
|
**What that actually cost, measured.** A restore onto a host whose containers
|
||||||
|
root differs from the backup's is the entire point of "rebuild my server", and
|
||||||
|
until this was fixed it restored *nothing* — silently, reporting success. The
|
||||||
|
in-place fallback builds restic's `--include` from the LOCAL root, so on a
|
||||||
|
relocated install the filter matched no path in the snapshot and zero bytes
|
||||||
|
landed.
|
||||||
|
|
||||||
|
Verified end to end on a purpose-built install (`scripts/dev/lp-install-matrix`
|
||||||
|
case 4: system on one disk, apps and backups on another), restoring a real
|
||||||
|
13-app repository taken from a default-layout host:
|
||||||
|
|
||||||
|
```
|
||||||
|
This snapshot was taken at '/libreportal-containers/bookstack';
|
||||||
|
restoring to '/mnt/lptest2/libreportal-containers/bookstack'.
|
||||||
|
✓ Restored bookstack to /mnt/lptest2/libreportal-containers/bookstack
|
||||||
|
```
|
||||||
|
|
||||||
|
Every app takes the stage-and-move branch there, and it crosses devices
|
||||||
|
(staging on disk 1, destination on disk 2), so `app-adopt` exercises its
|
||||||
|
copy-then-remove path rather than the same-device `mv`.
|
||||||
|
|
||||||
## 10. Risks, in the order they'll bite
|
## 10. Risks, in the order they'll bite
|
||||||
|
|
||||||
**10.1 — An unplugged drive is the top data-integrity risk.** `crontab_boot_app_reconcile.sh` brings **every** installed app up at boot. If a location's drive isn't mounted yet — or at all — docker cheerfully creates the bind-mount directories on the bare mountpoint and the app boots **empty**. Plug the drive back in and there are now two divergent copies, with the good one hidden underneath the mount. Mitigation is mandatory, not optional:
|
**10.1 — An unplugged drive is the top data-integrity risk.** `crontab_boot_app_reconcile.sh` brings **every** installed app up at boot. If a location's drive isn't mounted yet — or at all — docker cheerfully creates the bind-mount directories on the bare mountpoint and the app boots **empty**. Plug the drive back in and there are now two divergent copies, with the good one hidden underneath the mount. Mitigation is mandatory, not optional:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user