Herramienta para interactuar/sincronizar entre la base de datos (Postgresql) y el sistema de archivos (Linux/Ubuntu)

Estoy usando el sistema de archivos para almacenar archivos grandes fuera de la base de datos y mantener solo un registro de la ruta del directorio en la base de datos. Así que estoy buscando una herramienta para usar como interfaz para mantener la base de datos alineada con el contenido almacenado en el sistema de archivos.

Estoy escribiendo lo que sé/he pensado hasta ahora. ¿Podría tener algunas ideas sobre si ya existen tales herramientas?

En el lado del servidor, creo que necesito:

Script para monitorear el directorio en busca de nuevos archivos Trabajos cron para ejecutar el script de monitoreo periódicamente Script para actualizar el contenido de la base de datos periódicamente En el lado del cliente (usuario final), creo que debería:

Cargue el archivo en un directorio /tmp. Ejecute un análisis de virus en los archivos actualizados. Use un script para mover el archivo marcado a la ubicación real.

Respuestas (1)

No creo que exista una herramienta tan estándar. Sin embargo, puede construirlo con bastante facilidad si utiliza un enfoque inteligente.

  1. Almacene TODOS los archivos como BLOBs.

Sin sistema de archivos => sin problemas de sincronización con el sistema de archivos. Sin embargo, consulte aquí las advertencias: https://softwareengineering.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database

  1. Almacene solo las rutas de TODOS los archivos en la base de datos.

Ventaja: elimina problemas sutiles de sincronización, como: si tiene un archivo pequeño en la base de datos y en el disco, su contenido puede no estar sincronizado. OTOH, si almacena un archivo pequeño como un archivo BLOB, no tiene una vista unificada del sistema de archivos en un solo lugar (ya sea el sistema de archivos en sí o la base de datos).

Solo necesita sincronizar los cambios del sistema de archivos de una manera: en la base de datos. Eso debería ser bastante fácil de escribir.

Si la cantidad de archivos no es demasiado alta, incluso podría tener esto casi en tiempo real: https://stackoverflow.com/questions/7566569/how-to-continuosly-monitor-the-directory-using-dnotify-inotify- dominio

Desventaja: necesita 2 operaciones para cada acceso a un archivo, es decir, una transacción de base de datos y un acceso al sistema de archivos. Alivio de esta desventaja: lo más probable es que la mayor parte del tiempo la lectura de una sola ruta de archivo en la base de datos sea bastante rápida y se almacene en caché en algún nivel de todos modos.