Martes, 19 Agosto 2014 23:49

Crear una tarea cron en CPanel (II) - Eliminar archivos temporales y de caché de Joomla

Escrito por 
CMS:  Todos |  Versión:  Todas |  Nivel de dificultad:  Medio |  Tiempo estimado de lectura:  15 minutos


Crear una tarea cron en CPanel (II) - Eliminar archivos temporales y de caché de JoomlaEn el capítulo primero de esta serie dedicada a cron y tareas programadas conocimos la herramientas que se encuentra disponible en el Panel de Hosting (cPanel) y como construir guiones que puedan ser ejecutados de forma automática y programada.

Como las tareas debemos aplicarlas a acciones concretas, vamos a centrarnos en este capitulo en la programación de tareas o crontabs que nos permitan vaciar determinadas carpetas que periódicamente se llenan de archivos temporales o cacheados de nuestro sitio web Joomla.

Cuando administramos un solo sitio web Joomla es posible que sea relativamente sencillo mantenerlo, limpiar regularmente la caché, ya sea manualmente o por medio de alguna extensión como Cache Cleaner, o vaciar la carpeta de archivos temporales y de esta forma evitar que estos archivos poco a poco vayan consumiendo espacio del Hosting que necesitamos para otras cosas más importantes.

Lo normal seria utilizar las herramientas propias del backend de Joomla para purgar dicha caché y dejar a cero la carpeta citada, pero muchos usuarios, sin tiempo, por olvido o desconocimeinto dejan de realizar esta tarea y al final acaba conviertiéndose en un consumidor de espacio no controlado.

Por defecto, cualquier instalación de Joomla gestiona la caché del CMS o de extensiones almacenando los archivos en la carpeta /public_html/cache o /carpeta/donde_este_instalado_joomla/cache y los mismo para los temporales que se almacenan en /public_html/tmp o /carpeta/donde_este_instalado_joomla/tmp de forma que con el paso del tiempo, si no se vacían estas carpetas se acaban acumulando muchos archivos que ocupan espacio en el Hosting.

Dependiendo de la cantidad de extensiones que utilicemos y de la periodicidad con que instalemos nuevas extensiones, la carpeta /tmp tendrá los archivos usados para instalar plantillas, plugins, módulos o componentes y si nunca hemos vaciado esta carpeta es probable que nos sorprendamos con la cantidad de extensiones y plantillas instaladas que han dejado rastros temporales.

Podemos programar una tarea que una vez por semana (o diaria), dependiendo de la actividad que desarrollemos como administradores en la web, vacie las carpetas /cache y /tmp de forma que recuperemos ese espacio ocupado y mantengamos más saneada la cuenta de Hosting.

¿Como programar una tarea cron para vaciar /tmp y /cache de Joomla?

Lo resolvemos con una tarea programada, la cual requiere pocos minutos para ponerla en marcha y olvidarnos en adelante de realizar manualmente la eliminación de estos archivos.

El proceso resumido es el siguiente:

  1. Accede a cPanel, Avanzado, Cron jobs.
  2. Añade las siguiente lineas de comandos (en cronjob diferentes) para ejecutarse una vez por día durante en un horario que no tengas trafico en el sitio (por ejemplo a las 3 am) para que vacíe la carpeta /public_html/cache (o la carpeta donde gestione tu instalación de Joomla la cache):

Para eliminar carpetas de forma recursiva y sus correspondientes archivos:

find /home/pruebasw/public_html/sport25/cache/ -mindepth 1 -type d -exec rm -rf  {} \;

Para eliminar los archivos que haya directamente en la carpeta cache:

find /home/pruebasw/public_html/sport25/cache/ -mindepth 1 -type f -exec rm -rf  {} \;

Nota: Si la web Joomla está en otra carpeta -porque tenemos varias webs instaladas- diferente de /public_html entonces debemos indicar la ruta después de find, si está en la carpeta /public_html/sport25 entonces añadiremos /home/pruebasw/public_html/sport25/cache/ tal como se muestra en el ejemplo.



Esta misma tarea la podemos aplicar para vaciar la carpeta /tmp eliminando los archivos temporales que se generan en Joomla.

Sintasix para find:

find [-H] [-L] [-P] [ruta...] [expression]

-mindepth n = Verdadero si la profundidad del archivo actual en el árbol es mayor o igual a n.

Nota: Las rutas deben preceder a la expresión.

Comandos para rm:

-f = --force - No pide confirmación. No escribe mensajes de diagnóstico. No produce un estado de salida de error si los únicos errores han sido ficheros que no existen.

-r = --recursive (también puede ser R)- Elimina directorios y subdirectorios de forma reiterada en la lista de argumentos. El directorio será vaciado de archivos y eliminado. Normalmente se pregunta al usuario antes de eliminar cualquier archivo protegido contra escritura que contenga el directorio.

La acción de ‑exec toma un comando como argumento (junto con sus opciones). Los argumentos deben contener {} (generalmente citado), que es sustituido por el nombre del archivo encontrado en el comando. El comando se finaliza por un punto y coma, que debe ser citado (escapado) para que pase con el comando find.

Caso práctico:

Como ejemplo podemos ver que tenemos una instalación de Joomla en la carpeta del Hosting /public_html/esport25 y dentro, en la carpeta /cache numerosos archivos y carpetas que a su vez contienen archivos y más carpetas.



Una vez programamos una tarea cron y añadimos el comando adecuado para que se vacíe periódicamente la carpeta /cache, podemos observar, tras la ejecución del cron que la carpeta se vació completamente:



Este tipo de tareas son útiles para mantener carpetas vacías como /cache o /tmp en Joomla, que son los colectores habituales de archivos temporales procedentes de la instalación de extensiones, plantillas, etc., y o de la carpeta /cache que en ocasiones, dependiendo de la cantidad de extensiones que utilicemos puede ocupar un espacio considerable en el Hosting.

Si quieres conocer con más detalle contrab puedes consultar en el siguiente enlace.



¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+