Tecnología · GUÍA PRÁCTICA
Encuentra archivos ausentes en el historial de versiones de Syncthing
Revisa por mes y en orden cronológico las versiones conservadas cuyas rutas originales ya no existen, manteniendo visibles los resultados inciertos para comprobarlos.

Un historial de versiones extenso puede dificultar la detección de un archivo que falta de forma inesperada. La pregunta útil es concreta: ¿qué rutas tienen versiones conservadas de un mes determinado, pero ya no existen en esta carpeta? También puede aparecer un archivo movido o renombrado, porque su ruta anterior ahora está ausente.
La herramienta que se presenta a continuación compara la carpeta local de Syncthing seleccionada con las versiones que devuelve esa instancia y crea un informe HTML independiente. Separa las rutas ausentes de aquellas que no ha podido comprobar, ordena sus versiones conservadas por momento de archivado y deja en tus manos la restauración.
Comprueba que este es el historial que necesitas
Utiliza el dispositivo que ya conserva las versiones pertinentes. En Syncthing, la conservación de versiones se configura por separado para cada carpeta de cada dispositivo. Archiva los archivos afectados por cambios que llegan de otros dispositivos; no registra las modificaciones ni las eliminaciones realizadas localmente en ese mismo dispositivo.
La política de conservación también importa. Las versiones pueden haber caducado, haberse reducido en número o haberse sustituido según la estrategia elegida. Activar ahora la conservación de versiones no permite reconstruir esas copias anteriores. Esta revisión solo abarca las entradas que todavía devuelve la instancia seleccionada, por lo que un informe vacío no demuestra que nunca se haya eliminado nada.
El mes se refiere al momento en que una versión se incorporó al archivo de versiones. Un archivo archivado tras una modificación anterior puede desaparecer mucho después. Ni su momento de archivado ni su fecha de modificación anterior indican cuándo desapareció su ruta actual.
Haz coincidir la instancia, el ID y la carpeta actual
Ejecuta la herramienta en el mismo equipo y en el mismo entorno de sistema de archivos que la instancia de Syncthing que vas a consultar. En la interfaz web de esa instancia, identifica el ID de la carpeta y su ruta configurada. El ID no coincide necesariamente con la etiqueta de carpeta que se muestra. En --root indica la carpeta actual, no su directorio .stversions.
Comprueba que el almacenamiento previsto esté montado y sea legible, incluidos los puntos de montaje independientes que pueda haber dentro de la carpeta. Abre un archivo conocido de cada ubicación pertinente. Una unidad desconectada puede dejar un directorio vacío en su punto de montaje; que la cadena de la ruta coincida no demuestra por sí solo que el almacenamiento esperado esté disponible.
La herramienta requiere una ruta raíz absoluta coincidente y el sistema de archivos basic de Syncthing. Tanto la raíz como sus directorios superiores deben ser directorios reales, no enlaces simbólicos. Si la ruta configurada utiliza ~, emplea la misma correspondencia entre cuenta y directorio personal que Syncthing. Una ruta dentro de un contenedor y la ruta de su montaje vinculado en el anfitrión no son intercambiables; corrige el entorno de ejecución o la ruta si no coinciden.
Elige un directorio de trabajo y un nombre nuevo para el archivo de salida, en un directorio existente fuera de todas tus carpetas sincronizadas. La herramienta comprueba la raíz indicada, no todas las carpetas que sincronizas. Mantén Syncthing en ejecución para acceder a la API y espera a que terminen las modificaciones, los movimientos y la sincronización en curso. El resultado refleja observaciones realizadas durante la ejecución, no una instantánea atómica.
Guarda e inspecciona la herramienta
Utiliza Python 3.12 o posterior en un sistema POSIX con un sistema de archivos basic normal. En un editor de texto sin formato, guarda la línea completa que aparece a continuación como unpack_audit.py en el directorio de trabajo elegido. Contiene el código fuente de la herramienta y su comprobación de integridad; no pegues esta línea de Python directamente en Bash. Comprueba python3 --version antes de ejecutarlo; las versiones anteriores de Python se rechazan antes de trabajar con la carpeta o la API.
import base64,zlib,hashlib,sys; from pathlib import Path; data=zlib.decompress(base64.b64decode('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',validate=True)); f=Path('audit.py').open('xb') if hashlib.sha256(data).hexdigest()=='71717f0699b0ab624944f1d8746eafff0d34f08f3cde079e98278112ed51d139' else sys.exit('SHA-256 mismatch; no helper file written'); f.write(data); f.close(); print('Created audit.py for inspection; it has not been run.')
Desde ese directorio, ejecuta este comando para crear el archivo con el código legible de la herramienta:
python3 unpack_audit.py
El desempaquetador verifica SHA-256 y crea audit.py solo si todavía no existe un archivo con ese nombre. No ejecuta la herramienta reconstruida. El archivo audit.py, de 16,912 bytes, debe tener el SHA-256 71717f0699b0ab624944f1d8746eafff0d34f08f3cde079e98278112ed51d139. Ábrelo en un editor de texto para inspeccionarlo antes de proporcionar tu clave de API.
La herramienta lee la configuración de la carpeta y las versiones conservadas y, después, comprueba las rutas actuales en disco. El nuevo archivo HTML contiene el JSON completo del informe y no necesita recursos de red ni JavaScript ejecutable. No restaura archivos ni modifica el contenido sincronizado. Mantén el informe privado si sus rutas revelan información personal.
Introduce la clave de API sin guardarla en el historial de comandos
Copia la clave de API de los ajustes de la interfaz gráfica de esta instancia local. Es una credencial de acceso a la API, así que no la incluyas en el propio comando, en una captura de pantalla ni en el informe. En Bash, introdúcela en la solicitud de entrada oculta que aparece a continuación; los comandos la guardan únicamente en el entorno de esta sesión del intérprete.
read -r -s -p 'Syncthing API key: ' SYNCTHING_API_KEY && export SYNCTHING_API_KEY
La conexión predeterminada es http://127.0.0.1:8384. Para utilizar otro puerto local o una dirección HTTPS de confianza, añade --url con la dirección directa de esa instancia. Se rechazan las URL con credenciales o prefijos de ruta; no se utilizan redirecciones ni proxies del entorno. La API y la carpeta que se comprueba deben estar en el mismo equipo.
Revisa un mes natural en UTC
Sustituye el ID de carpeta y las rutas absolutas del ejemplo por los tuyos y elige un nombre nuevo para el archivo de salida. El ejemplo solicita septiembre de 2026. Incluye los momentos de archivado iguales o posteriores a 2026-09-01T00:00:00Z y anteriores a 2026-10-01T00:00:00Z.
python3 audit.py --folder 'YOUR-FOLDER-ID' --root '/absolute/path/to/Sync' --month 2026-09 --output '/absolute/path/outside/Sync/report-2026-09.html'
Las marcas de tiempo con un desfase horario se comparan después de convertirlas a UTC. Por ejemplo, 2026-09-01T01:00:00+01:00 corresponde exactamente al inicio de septiembre en este informe. Por eso, cerca del límite, la fecha del calendario local puede ser distinta; utiliza el intervalo UTC que se muestra para decidir qué mes revisar.
Si la operación se completa correctamente, el comando termina con el código 0 e imprime un mensaje JSON breve que contiene status: written y counts. Abre el nuevo archivo HTML localmente en un navegador. Un error no equivale a un resultado vacío. Elimina la credencial del entorno de esta sesión con el siguiente comando; si vas a intentarlo de nuevo, vuelve a introducirla en la solicitud de entrada oculta.
unset SYNCTHING_API_KEY

Revisa por separado las rutas ausentes y las comprobaciones inciertas
Empieza por comprobar la carpeta y el mes del informe y, después, revisa las entradas ausentes en orden cronológico. Cada entrada describe una versión archivada cuya ruta relativa original no existía cuando se comprobó. Busca en la carpeta actual una copia renombrada o movida antes de concluir que se trata de una pérdida involuntaria.
Las tablas cuentan las rutas únicas por separado de las versiones conservadas. Dos filas de una misma ruta ausente significan una ruta y dos versiones, no dos eliminaciones. La sección Complete report JSON (JSON completo del informe) también incluye las rutas presentes, los valores originales versionTime y modTime, las horas normalizadas a UTC, size, current_path_state y state_reason.
Revisa también cada entrada de estado desconocido. No se puede clasificar con seguridad como ausente una ruta ilegible o una ruta cuyos directorios superiores no se puedan resolver de forma compatible. Corrige el problema de acceso o de ruta indicado y genera un nuevo informe. Un enlace simbólico que existe en la ruta final se considera presente aunque su destino no esté disponible; eso no certifica el contenido del destino.
Si no hay entradas ausentes, pero sí entradas de estado desconocido, la revisión sigue sin resolverse para esas rutas. Si ambos valores son cero, esta comprobación completada correctamente no encontró ninguna ruta ausente entre las versiones devueltas para el intervalo elegido. No permite concluir nada sobre el historial caducado, las versiones de otro dispositivo o los archivos ausentes que nunca estuvieron representados en este archivo de versiones.
Resuelve los errores antes de sacar conclusiones
Ante un error de conexión o autenticación, confirma que la instancia local esté en ejecución, que la dirección de su interfaz gráfica sea correcta y que la clave pertenezca a esa instancia. Si la raíz no coincide, comprueba conjuntamente el ID de carpeta y la ruta configurada. Si una unidad no está disponible o un directorio no se puede leer, restablece primero el acceso; no crees un directorio vacío de sustitución solo para que la comprobación pueda continuar.
Las respuestas mal formadas, las rutas o marcas de tiempo no compatibles y las configuraciones de carpeta inesperadas detienen la revisión en lugar de producir una lista vacía. Los fallos de la API o de la raíz terminan con el código 1 y un error específico; los errores de sintaxis del comando terminan con el código 2. Resuelve ese error y elige un nuevo nombre de salida. Se conservan los informes existentes. Si falla la escritura, puede quedar un archivo nuevo incompleto: revísalo y elimínalo si corresponde, o elige otro nombre antes de volver a intentarlo.
Si los archivos cambiaron durante la ejecución, repite la comprobación cuando termine la actividad. Vuelve a comprobar cualquier entrada sospechosa inmediatamente antes de actuar sobre ella. Un informe guardado anteriormente no puede indicar si el archivo ha reaparecido desde entonces.
Restaura únicamente una versión que hayas elegido
Cuando hayas comprobado una ruta ausente y decidido que necesitas una copia conservada concreta, abre Restore Versions (restaurar versiones) para esa misma carpeta en Syncthing. Utiliza Filter by name (filtrar por nombre) y Filter by date (filtrar por fecha) para encontrar la entrada; después, comprueba la ruta y la versión seleccionada antes de pulsar Restore (restaurar). Compara la marca de tiempo concreta con la del informe; no supongas que la fecha mostrada en la interfaz utiliza los límites mensuales UTC del informe.
Inspecciona el archivo restaurado en la ruta actual donde esperabas encontrarlo y revisa cualquier error de restauración que muestre Syncthing. Ten en cuenta el contenido existente antes de restaurar una versión anterior. El informe HTML no selecciona nada para restaurarlo y no puede determinar qué copia archivada es la adecuada para tu trabajo.
Hay que reconocer que Restorething ya comprueba si existen las rutas originales y ofrece restauración simulada por fechas. Esta guía añade un procedimiento de revisión específico: todas las versiones devueltas dentro de un mes UTC, comprobaciones de rutas actualmente ausentes, un HTML cronológico y estados desconocidos visibles. La restauración nativa sigue disponible cuando hayas tomado una decisión expresa.
Qué se comprobó
La herramienta publicada superó 28 ejecuciones de línea de comandos y 29 grupos de aserciones con un servidor HTTP local de pruebas y archivos temporales reales en Python 3.12.14/Linux. Se comprobó el recorrido desde la API hasta el HTML, los límites UTC y el orden a escala de nanosegundos, los recuentos de rutas únicas frente a versiones, los nombres de archivo con caracteres escapados, las rutas ausentes, presentes y de estado desconocido, y los fallos que no deben convertirse en resultados vacíos. El desempaquetador superó tres casos en subprocesos independientes: reconstrucción exacta sin ejecución, rechazo de datos dañados y conservación de una herramienta ya existente.
No se probó una instancia real de Syncthing, la interfaz gráfica nativa de restauración, Windows ni macOS. La denegación de permisos se simuló mediante un error inyectado, no mediante reglas de acceso del sistema operativo. Las comprobaciones no demuestran protección frente a cambios simultáneos del sistema de archivos o de los montajes. El informe no puede determinar por qué desapareció una ruta, distinguir un movimiento de una eliminación ni recuperar versiones caducadas.