Immich: tres originales recuperados y verificados — 2026-10-20¶
Resultado real a las 02:05 CEST: PASS, 3 originales de upload, 6.098.264 bytes.
El dump lógico del19, la generación NAS19 y tres copias locales privadas quedan
vinculados por checksums. No se acredita una restauración completa de Immich ni
la verificación de contenido de todos sus originales.
Qué se ha probado¶
- PostgreSQL del dump del 19 se restauró previamente en Bazzite aislado:31.595 assets, 10.803 photos y 20.792 pics, con las clasesSHA esperadas. Rednone,1 GiB / swap 0 / 0,5 CPU, prueba kernel duradero antes de bootstrap/SQL; contenedor propio detenido.
- El recorrido NAS de las31.595 rutas terminó metadata_match/coverage_complete=true: todas regulares, no vacías y con propietario esperado; cero ausencias, enlaces o anomalías. Reanchor final estable,72.461 operaciones y 8 FD máximos. Esta prueba cubre metadata, no el contenido completo de esos 31.595 archivos.
- La selección local leyó únicamente el dump del 19 privado:100 candidatos de upload, cero library. Requirió checksumAlgorithm=sha1 y byteaSHA1 válido del registroDB. Las tres muestras reales se tomaron de ese pool, nunca de encoded-video.
- La prueba real leyó tres originales regulares de la generación NAS 20261019, comparó SHA1 con el dump y emitió SHA256. El Mac releyó los tres archivos locales y comprobó tamaño, SHA1 esperado por índice privado y SHA256 remoto.
Por tanto sample_content_verified=true, mientras originals_verified=false y coherence_verified=false. La verificación de tres muestras no se extiende al resto de originales. El desfase de 29 assets posteriores al dump del 19 sigue siendo RPO, no una pérdida acreditada.
Ejecución y evidencia¶
Fuentes publicadas en 336d44f, con revisión independiente y32 pruebas más integración sintética. Compilación nativa previa PASS en NAS/usr/bin/python2.7.18, euid 1026, para el proveedor y la biblioteca de referencias. No se instalaron paquetes ni helpers remotos.
Una sola ejecución real autorizada, sesión 76249, terminó exit 0:
| Campo | Resultado |
|---|---|
| samples_verified | 3 |
| sample_bytes | 6098264 |
| sample_content_verified | true |
| originals_verified | false |
| coherence_verified | false |
| receiptSHA256 | <REDACTED> |
Stage local nuevo y privado:
~/.local/state/immich-recovery-references/20261020-samples0210.
0210 es el identificador del stage; la ejecución real acabó a 02:05 CEST.
Directorio 0700; archive.tar, tres archivos anónimos, proof.json y receipt.json 0600.
Los artefactos conservan evidencia privada; este informe no publica rutas ni
checksums de archivos originales individuales, IDs ni píxeles.
Identidades fijas de entrada:
- Dump19,183486870 bytes:
SHA256
<REDACTED>. SHA/CRC e identidad antes/después verificados al preparar el pool. - Pool privado de 100 upload:
SHA256
<REDACTED>. - Manifiesto de 31595 referencias:
SHA256
<REDACTED>. - Biblioteca NAS:
SHA256
<REDACTED>. - Proveedor de muestras:
SHA256
<REDACTED>. - Consumidor Mac:
SHA256
<REDACTED>.
Límites y preservación¶
Máximo 3 archivos,16 MiB por archivo / 48 MiB de contenido, ritmo combinado de lectura y salida de 4 MiB/s, alarma NAS de 120 s y deadline del transporte de 180 s. UID 1026, raíces y generación fijadas; resolución componente a componente con FD/O_NOFOLLOW, lstat/open/fstat e identidad antes/después; reanchor antes del proof final. Sin escrituras en el NAS ni uso sudo, app Immich, GPU o cambios de producción.
SSH-T y ASKPASSforce separaron autenticación en memoria del stdin del pool. Shim local 0700 sin secreto, eliminado al salir. Transporte con grupo propio, TERM→KILL/reap, stdout máximo de 48 MiB + 128 KiB y stderr de 32 KiB; errores sin rutas ni contenido.
TAR USTAR sin compresión: sólo tres nombres anónimos REG y proof.json final. El consumidor validó checksums de cabecera, tamaños, padding, terminación y schema; rechaza enlaces, sparse/PAX, extras, nombres arbitrarios y streams parciales. La extracción fue manual con creación exclusiva 0600, sin extractall. Un fallo no podría producir recibo PASS; los artefactos parciales se preservarían privados.
No se ha borrado ningún artefacto, generación o contenedor histórico. Una limpieza posterior debe limitarse al stage local propio tras revisar evidencia, sin tocar el dump ni generaciones NAS; no hay poda global ni retención externa nueva.
Pendiente¶
La app Immich completa y todos los originales no se han restaurado juntos. La publicación diaria de dumps quedó habilitada por el coordinador dentro de la tarea existente originals_backup de las 11:10. Su primera publicación automática sigue pendiente; no se disparó una tarea manual para simularla. El dump natural del 20 terminó a las 01:31:41 con permisos correctos, pero estas pruebas DB/contenido corresponden al19.
Contexto completo: recuperación e identidad de imagen y ensayo DB.