Audit Files
Permite comparar y corregir archivos y referencias de archivos en el directorio de archivos, en la base de datos y en el contenido.
auditfiles
Install
composer require 'drupal/auditfiles:^4.2'
Overview
El módulo Audit Files ayuda a mantener sincronizados los archivos en tu servidor con los utilizados por tu sitio Drupal. Proporciona siete informes completos que comparan los archivos en el sistema de archivos del servidor, las entradas en la tabla de base de datos file_managed, la tabla file_usage y las referencias de campos de archivo en entidades de contenido.
El módulo evita intencionalmente el uso de la API de archivos de Drupal al trabajar con archivos y sus referencias para prevenir la creación de problemas adicionales mientras intenta corregir los existentes. Utiliza la API de lotes de Drupal para realizar operaciones de manera eficiente, reduciendo la carga del servidor y previniendo tiempos de espera agotados en sistemas de archivos grandes.
Para cada discrepancia encontrada, los administradores pueden tomar acciones correctivas como agregar archivos a la base de datos, eliminar archivos huérfanos del servidor, eliminar entradas obsoletas de la base de datos o fusionar referencias de archivos duplicados en una única entidad de archivo.
Features
- Siete informes de auditoría que comparan archivos a través del sistema de archivos, tabla file_managed, tabla file_usage y referencias de contenido
- Informe de archivos no en base de datos: Lista los archivos en el servidor que no están registrados en la tabla de base de datos file_managed, con opciones para agregarlos a la base de datos o eliminarlos del servidor
- Informe de archivos no en servidor: Lista los archivos registrados en la base de datos pero ausentes del sistema de archivos, con la capacidad de eliminar entradas de la base de datos
- Informe de gestionados no usados: Muestra archivos en file_managed que no tienen entradas correspondientes en la tabla file_usage
- Informe de usados no gestionados: Lista entradas de uso de archivos donde la entidad de archivo correspondiente ya no existe en file_managed
- Informe de usados no referenciados: Muestra archivos en file_usage que ya no son referenciados por ningún campo de contenido
- Informe de referenciados no usados: Muestra referencias de archivos en campos de contenido que carecen de entradas correspondientes en file_usage, con opciones para agregar registros de uso o eliminar las referencias
- Informe de fusión de referencias de archivos: Identifica nombres de archivo duplicados en file_managed y permite fusionar múltiples entidades de archivo en un único archivo canónico
- Procesamiento por lotes para todas las operaciones para prevenir tiempos de espera agotados en conjuntos de datos grandes
- Filtros de exclusión configurables para archivos, extensiones y rutas
- Límites de registros y paginación configurables para optimización del rendimiento
- Arquitectura basada en eventos que permite la personalización de operaciones de archivos a través de suscriptores de eventos
Use Cases
Limpieza después de migración de contenido
Después de migrar contenido desde otro CMS o versión de Drupal, usa el informe 'No en base de datos' para identificar y registrar archivos que fueron copiados al servidor pero no registrados por Drupal. Agrégalos a la base de datos para hacerlos disponibles para uso en contenido.
Eliminar archivos huérfanos para liberar espacio en disco
Con el tiempo, los archivos pueden acumularse en el servidor desde contenido eliminado o subidas fallidas. Usa el informe 'No en base de datos' para encontrar estos archivos huérfanos y eliminarlos para recuperar espacio en disco.
Arreglar imágenes rotas y descargas
Cuando el contenido muestra imágenes rotas o las descargas fallan, usa el informe 'No en servidor' para identificar archivos registrados en la base de datos pero faltantes del sistema de archivos. Restaura los archivos o limpia las entradas de la base de datos.
Limpieza de base de datos después de desinstalación de módulo
Cuando los módulos se desinstalan sin limpieza adecuada, pueden dejar entradas huérfanas en file_usage. Usa 'Usados no gestionados' para encontrar y eliminar estos registros de uso obsoletos.
Consolidar subidas de archivos duplicados
Cuando los usuarios suben el mismo archivo múltiples veces creando duplicados, usa el informe 'Fusionar referencias de archivos' para identificar archivos con el mismo nombre y fusionarlos en una única entidad, actualizando todas las referencias automáticamente.
Verificar integridad de archivos después de migración de servidor
Después de mover un sitio a un nuevo servidor, ejecuta todos los informes para verificar que el sistema de archivos y la base de datos están sincronizados. Esto ayuda a identificar cualquier archivo que no fue copiado correctamente durante la migración.
Auditar consistencia de la tabla file_usage
Usa los informes 'Usados no referenciados' y 'Referenciados no usados' para asegurar que la tabla file_usage refleja con precisión las referencias de contenido reales. Corrige las discrepancias para mantener la integridad de la base de datos.
Tips
- Siempre haz una copia de seguridad de tu base de datos y directorio de archivos antes de realizar operaciones de eliminación o fusión
- Comienza con lotes pequeños al eliminar archivos para verificar que los elementos correctos están seleccionados
- Usa los ajustes de exclusión para omitir directorios generados por el sistema como css, js y derivados de estilos de imagen
- Para sitios grandes, establece un límite razonable de máximo de registros (250-500) para prevenir tiempos de espera agotados durante la carga inicial de la página
- El botón de procesamiento por lotes aparece cuando se alcanza el límite máximo de registros, permitiendo acceso completo al conjunto de datos sin tiempos de espera agotados
- Revisa el informe 'Gestionados no usados' cuidadosamente - algunos archivos sin usar pueden ser intencionales (por ejemplo, imágenes de marcador de posición, subidas temporales)
Technical Details
Admin Pages 9
/admin/config/system/auditfiles
Configura los ajustes globales para todos los informes de Audit Files incluyendo rutas del sistema de archivos, reglas de exclusión, manejo de dominios y opciones de visualización de informes.
/admin/reports/auditfiles
Página principal de destino para todos los informes de Audit Files. Proporciona enlaces a siete informes de auditoría especializados para analizar y corregir discrepancias de archivos.
/admin/reports/auditfiles/notindatabase
Lista los archivos que existen en el sistema de archivos del servidor pero no están registrados en la tabla de base de datos file_managed. Estos pueden ser archivos huérfanos cuyo contenido padre fue eliminado, archivos de módulos que no limpiaron correctamente, o archivos subidos fuera de Drupal (por ejemplo, vía FTP). El informe muestra la ruta del archivo, tipo MIME, tamaño y fecha de última modificación.
/admin/reports/auditfiles/notonserver
Lista los archivos que tienen entradas en la tabla de base de datos file_managed pero no existen en el sistema de archivos del servidor. Estos archivos faltantes pueden causar imágenes rotas, descargas fallidas u otros problemas de visualización en el contenido.
/admin/reports/auditfiles/managednotused
Lista los archivos que existen en la tabla de base de datos file_managed pero no tienen entradas en la tabla file_usage. Esto es a menudo normal para archivos temporales o archivos esperando recolección de basura. Revisa para verificar el comportamiento esperado.
/admin/reports/auditfiles/usednotmanaged
Lista las entradas en la tabla file_usage donde la entidad de archivo correspondiente no existe en file_managed. Estos son registros de uso huérfanos que referencian archivos inexistentes.
/admin/reports/auditfiles/usednotreferenced
Lista los archivos que tienen entradas en la tabla file_usage pero ya no son referenciados en el contenido que supuestamente los usa. El campo de archivo en la entidad de contenido ya no contiene una referencia al archivo.
/admin/reports/auditfiles/referencednotused
Lista las referencias de archivos encontradas en campos de archivo adjuntos a entidades de contenido que no tienen entradas correspondientes en la tabla file_usage. Estas referencias normalmente deberían estar registradas en file_usage.
/admin/reports/auditfiles/mergefilereferences
Lista todos los archivos en file_managed agrupados por nombre de archivo, mostrando posibles duplicados. Permite fusionar múltiples entidades de archivo que tienen el mismo nombre de archivo en un único archivo canónico, consolidando registros de uso y ahorrando espacio en disco.
Permissions 2
Troubleshooting 4
Establece un valor más bajo de 'Máximo de registros' en la página de configuración de Audit Files, luego usa el botón 'Cargar todos los registros' en la página del informe para procesar los datos por lotes.
Establece un valor más bajo de 'Máximo de registros' para limitar la consulta inicial. La función de procesamiento por lotes cargará los registros restantes sin alcanzar los límites de tiempo de espera de PHP.
Configura rutas de exclusión apropiadas para directorios con muchos archivos que no necesitan auditoría (por ejemplo, css, js, styles). Reduce los ajustes de elementos por página y máximo de registros.
Limpia la caché de Drupal después de hacer cambios. El módulo consulta la base de datos directamente, pero los datos en caché pueden causar visualizaciones obsoletas.
Security Notes 4
- El permiso 'configure audit files reports' está marcado como acceso restringido debido al impacto potencial de una configuración incorrecta
- Las operaciones de eliminación son permanentes y no se pueden deshacer - verifica las selecciones cuidadosamente antes de confirmar
- La fusión de archivos actualiza las referencias en todo el contenido - asegúrate de que la elección del archivo canónico sea correcta
- Considera restringir el acceso a estos informes solo a administradores de confianza, ya que proporcionan información detallada sobre el sistema de archivos