¿Cómo obtener la lista de todos los archivos de imagen huérfanos?

8

Me gustaría crear la lista de imágenes que ya no se usan en ningún elemento de contenido para que se puedan purgar del disco. ¿Cuál es el mejor método para generar dicha lista?

miroxlav
fuente

Respuestas:

5

No estoy seguro de que haya un mejor método para hacerlo. La única forma en que puedo pensar requiere un poco de esfuerzo. Es decir, generar una lista de todas las imágenes en la tabla de contenido en la base de datos (y potencialmente en módulos, menús, pancartas, etc. Cualquier lugar donde se hace referencia a imágenes, lo cual es mucho), compare esa lista con todas las imágenes. en el sistema de archivos, y luego compare entre cada lista y elimine las imágenes que no se utilizan.

Entonces esto se vería así:

1) Obtenga una lista de todas las imágenes en la tabla de base de datos de com_content. Volcar todas las filas, regex para <img src="images/stories/an-image.jpg" />. Otra forma es usar el método strip_tags () de php y solo permitir la etiqueta. Esto me resulta más fácil que escribir una expresión regular en general. Básicamente ejecute un script php para construir esta lista para usted como un documento de texto o csv.

2) Obtenga una lista de todas las imágenes en el sitio. Podría usar grep desde la línea de comando para hacer esto, creo. Probablemente también podría hacerlo con algún tipo de método de sistema de archivos php recursivo.

3) coloque ambos en una hoja de cálculo y ejecute algún tipo de comparación con cada columna para ver si se usa la imagen, compilando una lista de imágenes no utilizadas en una tercera columna.

-

Personalmente, a menos que tenga un montón de imágenes, no estoy seguro de que valga la pena el esfuerzo. Pero tendrá que determinar eso en espera de su caso de uso. ¡También puede haber una solución mucho más simple que alguien más tendrá que sugerir!

Chad Windnagle
fuente
3

No conozco una extensión existente que lo haga. Su mejor opción sería escribir un script que verifique cada imagen con las tablas de la base de datos donde se puede almacenar el contenido para ver si están en uso.

Miguel
fuente
3

Si tiene sus registros de acceso, es posible que pueda extraer todos los archivos de imagen solicitados en los últimos X meses (deberá jugar con todos estos datos). Por lo tanto, es muy probable que estén en uso en su sitio real (pero no al 100%). Dependiendo de su contenido y estructura del sitio y si su sitio no es realmente enorme (es decir, 1 millón de artículos), es muy probable que el resto probablemente no esté en uso (de nuevo, no al 100%).

Encuentro esta solución tan fácil. Haga una copia de seguridad de las imágenes antes de eliminarlas. Puede rastrear más adelante los errores 404 que intentan abrir archivos específicos y puede decidir restaurarlos.

Es una solución sucia, pero realmente no hay una manera fácil. La mejor opción sería seguir los consejos de Chad y escribir su propio analizador.

Ivo
fuente
Buena idea, gracias. En mi proveedor de alojamiento web, los registros de acceso no son accesibles para los clientes, pero esta respuesta puede ser útil para otros lectores.
miroxlav
0

Si bien no existían extensiones cuando se hizo la pregunta, a partir de agosto de 2018 hay al menos un par de extensiones que aparentemente pueden encontrar y eliminar imágenes huérfanas:

VX imágenes huérfanas (extensión pagada)

"El complemento VX orphanImages escanea la carpeta de imágenes del sitio de Joomla! Para encontrar elementos que no se utilizan en ningún contenido del sitio. Utiliza el componente principal de medios para marcar las imágenes huérfanas en la lista, para que pueda decidir si desea conservarlas o eliminarlas. "

ImageManager (versiones gratuitas / pagas)

"ImageManager for Joomla! Le permite mover y renombrar imágenes sin perder el enlace de la imagen en Artículos y Módulos HTML personalizados. Simplemente arrastre y suelte sus imágenes para reestructurar y limpiar su sitio web. También puede enumerar todas las imágenes no utilizadas y eliminarlas ".

Neil Robertson
fuente