2011-03-21 8 views
10

utilizo el siguiente registro de crontab con el fin de copia de seguridad diaria mi DB:eliminación de viejos archivos usando crontab

0 2 * * * MYSQL_PWD=password mysqldump -u user db_name > $HOME/db_backups/db_name-$(date +\%Y-\%m-\%d-\%H-\%M).sql 2>> $HOME/db_backups/cron.log 

quiero añadir otro récord crontab que eliminar los vertederos de base de datos que son más viejos que un mes.

¿Alguna idea?

+0

use logrotate (8) – knittl

+0

@knittle logrotate es para registros (?) – AlxVallejo

+1

Mientras logrotate puede eliminar archivos de cierta edad, solo opera en archivos que gira; no es un escenario típico para una copia de seguridad db. Por supuesto, puede agregar el comando 'find ... -exec rm {} \;' (documentado en otras respuestas) como un script dentro de la configuración de logrotate. Esto puede ser útil en algunos casos; [ejemplo en la última entrada de un hilo de conversación en otro foro] (http://www.directadmin.com/forum/archive/index.php/t-3654.html) –

Respuesta

19

Basta con crear otra cron:

0 3 * * * find $HOME/db_backups -name "db_name*.sql" -mtime +30 -exec rm {} \; >> $HOME/db_backups/purge.log 2>&1 

Se encontrarán todas las copias de seguridad de más de 30 días y eliminarlos.

+0

¿Podemos escribir los nombres de archivo que se eliminarán a un archivo de referencia –

+0

Claro, puede usar 'rm -v' o' buscar -print' para dar salida a los nombres de los archivos que se están eliminando. – dogbane

25
find /db_backups/ -mtime +30 -delete 

Este comando eliminaría copias de seguridad de bases de datos anteriores a 30 días.

3

Hay una herramienta llamada tmpreaper que borra de forma segura los archivos que coinciden con ciertos criterios, como una fecha de acceso o modificación n días en el pasado.

Cuestiones relacionadas