Como eliminar copias de cursos hechas por los profesores

Como eliminar copias de cursos hechas por los profesores

by Amado Urias G. -
Number of replies: 10

Hola.

En nuestra universidad tenemos como 80 plataformas instaladas (una para cada Unidad Académica) en el mismo servidor, todo bien, pero al paso de los años se nos está saturando el espacio en disco y he encontrado que las copias (backups) de los cursos que realizan los profesores me está consumiendo mucho espacio. Algunos de ellos tienen varias copias de seguridad en el mismo curso, aún cuando las descarguen en su computadora las dejan ahí en el servidor.

Ya he leído el foro https://moodle.org/mod/forum/discuss.php?d=316217 , pero igual que él no quiero prohibir que lo hagan, solamente quiero que yo como administrador los pueda ver todos, o mejor aún, las pueda eliminar por medio de un script (dado que son muchas Moodles y muchos cursos por todos). 

No sé si se guardan en alguna carpeta específica o dentro de cada curso en moodledata (Moodle 3.5). 

Nota: No me estoy refriendo a las copias automáticas de moodle, esas ya se donde se configuran.


Un saludo desde México, y espero me puedan ayudar por que ya estoy a un 5% de llenar mi espacio en disco duro.


Average of ratings: -
In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Héctor Noel González García -

Hola. 

Tego un caso similar, pero con menos cursos y hasta donde sé, cada copia de seguridad de un curso se guarda en su propia carpeta (al menos, así sucedía en versiones anteriores de Moodle). 

Saludos. 

Héctor Noel González García. 

In reply to Héctor Noel González García

Re: Como eliminar copias de cursos hechas por los profesores

by Amado Urias G. -

Hola Héctor, gracias por la aportación.

Estoy usando Moodle desde la versión 1.9 y antes si podías identificar esos archivos desde el moodledata, había una carpeta con el ID cada curso, pero hoy en día (Moodle 3.5) ha cambiado la distribución de esos archivos (no sé desde qué versión):

Ahora tenemos los folders "cache,  filedir,  lang,  localcache,  lock,  models,  muc,  oldlang,  sessions,  temp,  trashdir,  upgradelogs" y dentro de "filedir" hay folders nombrados con dos dígitos hexadecimales y cuando llegas a un archivo final, el nombre del archivo es una cadena larga también hexadecimal sin extensión.

Ya busqué los archivos *.mbz y no hay dentro de moodledata, por eso entré a ver la estructura de la misma.

Creo que la solución tendría que ser desde la Administración web de Moodle por medio de algún plugins (aún no encuentro uno que me sirva).


Pendientes y saludos.


In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Héctor Noel González García -

Hola Armando, efectivamente la estructura es como la describes. 

Veo complicado qué encuentres un plugin para esto, pero si se de algo te comparto la información. 

Saludos. 

In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Jose Luis Martin Jimenez -
Picture of Moodlers de gran ayuda

Hola, Amado.

No conozco ningún plugin para hacer algo así, pero si tienes acceso a la base de datos (MySQL o del tipo que sea) con alguna herramienta como PhpMyAdmin o MySQL Workbench, puedes obtener información de los archivos de backup que hayan creado "a mano" los usuarios.

En mi plataforma de pruebas de la versión 3.5 he estado investigando un poco, y quizás lo más sencillo es acceder a la tabla "mdl_files" y filtrar aquellos registros para los archivos que comienzan por "copia_de_seguridad-moodle-2..." y en los que el campo "component" sea igual a "user" (entiendo que son los creados a demanda de cualquier usuario), para obviar los creados por las copias automáticas (component = backup).

Haciéndolo así, en mi ejemplo (usando MySQL Workbench) he obtenido este resultado:


La información de la columna "contenthast" te serviría para localizar la ubicación exacta de cada archivo backup en tu servidor (dos primeros dígitos son la carpeta superior, los dos siguientes la subcarpeta y todo junto, el nombre de archivo encriptado), pero NO TE RECOMIENDO borrarlos directamente, porque entonces la base de datos quedaría inconsistente ... seguiría teniendo registrados unos archivos que han dejado de existir ... posiblemente ocasione problemas de funcionamiento más o menos tarde.

Sin embargo, aunque sea más lento, yo lo que haría sería ordenar esa tabla por tamaño (haciendo clic sobre "filesize") y según el número ID del nombre de cada archivo (copia_de_seguridad-moodle-2-course-XX-...), se puede saber a qué cursos corresponden. Ya dependería de si esos backups están en la "Zona de copia de seguridad de curso" (los podrías borrar tú mismo, si tienes acceso de administrador de la plataforma) o si están en la "Zona de copia de seguridad privada de usuario" (debería hacerlo el usuario que hizo las copias).

Bueno ... a ver si te sirve de ayuda para buscar la solución mejor en tu caso.

Saludos.

Average of ratings: Útil (1)
In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Amado Urias G. -

Fernando y José Luis gracias por sus aportes.


Instalaré el plugin para probarlo y si funciona bien, con eso iré "manualmente" a los cursos mas grandes para limpiarle cosas.

En cuando al proceso de la Bases de datos, haré esas consultas mysql para saber en qué cursos están los respaldos mas grandes.


Mientras sale algo mas automatizado me pondré a trabajar "a pie" con estas opciones. 

Gracias de nuevo.


In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Sandra Piedrabuena -

Estimado Amado

Como administrador, ingreso al curso y elimino las copias de seguridad.

EliminarCopias

Saludos


In reply to Sandra Piedrabuena

Re: Como eliminar copias de cursos hechas por los profesores

by Amado Urias G. -

Gracias Sandra.

Si lo haría así pero el problema es que tengo 82 plataformas Moodle instaladas para mi Universidad, que suman 9,988 cursos creados. Eso lo vuelve un problema para una sola persona administrador.


Sigo buscando soluciones con acciones masivas o para aplicarlas en un script.

In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Virgilio Rey -

Ya tambien llevo tiempo buscando una forma de eliminar las copias de los profesores, y lo único que he encontrado que pueda automatizar la tarea es usando moosh (https://moosh-online.com/commands/)

moosh file-list -i 'component="user" AND filearea="backup"' | moosh file-delete -s
moosh file-delete --flush

In reply to Amado Urias G.

Re: Como eliminar copias de cursos hechas por los profesores

by Sergio Galisteo -

No conocía el plugin moosh y realmente es muy útil (gracias por el aporte). En cualquier caso y, siempre y cuando se tenga acceso a terminal (linux), en nuestra plataforma nosotros utilizamos el siguiente script que nos realiza el borrado de todos los archivos de copia de seguridad (mbz). Dado que estos archivos desde hace ya un tiempo no son visibles por nombre en el sistema de archivos (dentro de moodledata), lo que hace el script es buscar su nombre codificado en la base de datos para así después poderlo borrar. Bueno, espero que a alguien le resulte útil.

La contrasenya de acceso a la bd de estar guardada en: /root/.my.cnf
Formato del archivo:
[client]
user = "xxxxx"
password = "xxxxxx"
(para que se pueda lanzar script sin necesidad de tenerla que introducir)

# script 
echo " -> Borrando trashdir"
rm -R /var/www/moodledata/trashdir/*
echo " -> Archivos a borrar..."
mysql -u moodle moodlebd -e "select CAST(ROUND(SUM(filesize/1024/1024),2) as CHAR) as "MBytes_Ocupados", CAST(count(*) as CHAR) as "Total_Archivos" from mdl_files where filename like '%mbz'"
echo "Antes" > info-borra-mbz
mysql -u moodle moodlebd -e "select CAST(ROUND(SUM(filesize/1024/1024),2) as CHAR) as "MBytes_Ocupados", CAST(count(*) as CHAR) as "Total_Archivos" from mdl_files where filename like '%mbz'" >> info-borra-mbz
echo " -> Archivos encontrados..."
mysql -u moodle moodlebd -e "select contenthash from mdl_files where filename like '%mbz'" > archivos
cat archivos
sed '1d' archivos > archivos1
echo " -> Borrando archivos de moodledata"
nl -s "find /var/www/moodledata -name " archivos1 | cut -c7- > buscar.sh
sh buscar.sh > encontrados
nl -s "rm " encontrados | cut -c7- > borrar.sh
sh borrar.sh
rm archivos archivos1 encontrados buscar.sh borrar.sh
echo " -> Borrando entradas en la BD"
mysql -u moodle moodlebd -e "delete from mdl_files where filename like '%mbz'"
echo " -> Proceso finalizado"
mysql -u moodle moodlebd -e "select CAST(ROUND(SUM(filesize/1024/1024),2) as CHAR) as "MBytes_Ocupados", CAST(count(*) as CHAR) as "Total_Archivos" from mdl_files where filename like '%mbz'"
echo "\nDespues" >> info-borra-mbz
mysql -u moodle moodlebd -e "select CAST(ROUND(SUM(filesize/1024/1024),2) as CHAR) as "MBytes_Ocupados", CAST(count(*) as CHAR) as "Total_Archivos" from mdl_files where filename like '%mbz'" >> info-borra-mbz
Average of ratings: Útil (1)