Comment supprimer les fichiers plus vieux qu'une date donnée en bash ?

Logs tournants, sauvegardes tournantes : la commande pour faire le ménage sur votre serveur.

Si vous faites un peu d'administration système, il vous est forcément arrivé de vouloir faire le ménage sur vos serveurs, notamment dans les fichiers de logs trop vieux. Il existe un tas d'outils plus ou moins performants pour automatiser ce roulement : logrotate etc... Je vais vous présenter une commande simple pour trouver les fichiers plus vieux qu'un certain nombre de jours et les supprimer.

Si l'on ne veut garder les fichiers que pendant 7 jours, il suffit de trouver ceux dont la date de modification est antérieure à 7 jours. La commande find permet de le faire grâce à l'option mtime, il ne reste qu'à donner le résultat à la commande rm via l'option --exec. Le paramètre "f" de l'option -type indique que nous ne souhaitons trouver que les fichiers.

Trouver et supprimer les fichiers de plus de 7 jours en bash

find $log -type f -mtime +7 -exec /bin/rm -f {} \;

Bien sûr faites attention à ne pas supprimer accidentellement des fichiers. Vous pouvez évidemment remplacer la suppression par n'importe quelle autre action : archivage, déplacement etc...

Maintenant à moi de poser une question : qu'utilisez vous pour vos systèmes de logs ?