2011-03-21 2 views
10

J'utilise le dossier crontab suivant afin de sauvegarder tous les jours mon DB:Suppression des anciens fichiers en utilisant 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 

Je veux ajouter un autre enregistrement crontab qui supprimera les décharges DB qui sont plus alors un mois.

Des pensées?

+0

utilisez logrotate (8) – knittl

+0

@knittle logrotate est pour les journaux (?) – AlxVallejo

+1

Alors que logrotate peut supprimer des fichiers d'un certain âge, il ne fonctionne que sur les fichiers qu'il tourne; pas un scénario typique pour une sauvegarde db. Bien sûr, vous pouvez ajouter la commande 'find ... -exec rm {} \;' (documentée dans d'autres réponses) en tant que script dans la configuration de logrotate. Cela peut être utile dans certains cas; [exemple dans la dernière entrée d'un fil de conversation sur un autre forum] (http://www.directadmin.com/forum/archive/index.php/t-3654.html) –

Répondre

19

Il suffit de créer un autre Cron:

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

Il trouvera toutes les sauvegardes de plus de 30 jours et de les supprimer.

+0

Pouvons-nous écrire les noms de fichiers qui seront supprimés dans un autre forum? fichier pour référence. –

+0

Bien sûr, vous pouvez utiliser 'rm -v' ou' find -print' pour afficher les noms des fichiers en cours de suppression. – dogbane

25
find /db_backups/ -mtime +30 -delete 

Cette commande supprime les sauvegardes de base de données de plus de 30 jours.

3

Il existe un outil appelé tmpreaper qui supprime en toute sécurité les fichiers correspondant à certains critères, tels qu'une date d'accès ou de modification n jours auparavant.

Questions connexes