Skip to content

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.