Purger ses fichiers sous Linux

cdbalai



Voici une petite commande bash bien pratique qui permet de « purger » les fichiers qui sont plus vieux que 7 jours:

find /dossier_à_purger -type f -mtime +7 -exec rm {} \;

A exécuter en root si vous êtes très très sûr de vous.(voir paragraphe « précautions » à la fin du billet) ou alors vérifier les droits du propriétaire des fichiers et utiliser sudo en conséquence. Cette commande est à adapter selon vos besoins.
Si vraiment vous ne voyez pas concrètement dans quelle situation l’utiliser, suivez moi je vais vous montrer quelques exemples…

Dans quel cas ça peut me servir ?

1/ Corbeille Samba

Imaginons que vous ayez activé la fonctionnalité de corbeille sur votre serveur samba.

Les fichiers contenus dans la corbeille s’amasseront et prendront de la place , puisque le principe est de pouvoir les récupérer en cas de suppression par erreur.
Mais votre serveur n’a pas d’espace de stockage illimité.
Donc en fonction de votre stratégie de sauvegarde, il convient de « vider » la corbeille et cette fois-ci de supprimer définitivement les fichiers par un bon vieux « rm ».

Donc la commande ci -dessus est à planifier dans votre crontab:
10 23 * * 1-5 find /dossier_partagé/.corbeille/ -type f -mtime +7 -exec rm {} \;

-Du lundi au vendredi à 23h10
-On cherche dans /dossier_partagé/.corbeille/
– tous les fichiers (ordinaires)
– qui ont une date de modification supérieure à 7 jours ( = plus anciens que 7 jours)
– et on les supprime à chaque fois que la condition est remplie

2/ Fichiers temporaires

Les répertoires suivants concentrent un certain nombre de fichiers temporaires liés au Home de l’utilisateur:
-/home/USER/.cache
-/home/USER/.local/share/Trash
-/home/USER/.thumbnails
Il peut être intéressant de les nettoyer de temps en temps avec par exemple:

find /home/USER/.thumbnails -type f -atime +5 -delete

Cette commande supprime toutes les vignettes dont la dernière date d’accès est supérieure à 5 jours. Au passage, j’ai remplacé un argument de la commande find:
exec rm {} \;
par
delete
Juste ça fait la même chose ^_^’

D’autres fichiers se terminant par le « ~ », sont des fichiers de sauvegarde temporaires cachés créés par le système pour des fichiers de conf, de bureautique, de php etc…
Perso je n’y toucherai pas car le volume de stockage qu’ils représentent sur le disque par rapport à leur utilité en cas de crash d’un des fichiers sources n’en vaut pas forcément la chandelle.
Cependant , j’avais envie de montrer une autre manière de faire pour nettoyer ce type de fichier.

find ~/ -name '*~' -print0 | xargs -0 rm

Find va chercher tous les fichiers se terminant par « ~ » et les mettre en sortie standard.
Xargs prend en entrée chaque fichier trouvé par Find puis exécute « rm » pour le supprimer  puis passe au fichier suivant.

3/ Script de sauvegarde

La commande Find avec paramètres de purge peut aussi être incluse dans un script de sauvegarde pour appliquer votre politique de durée de rétention maximale de vos « backup ».

Vous souhaitez garder uniquement celles des 30 derniers jours:

05 22 * * 1-5 find /dossier_sauvegarde -type f -mtime +30 -exec rm {} \;

Attention, précautions

  • La commande « find  » peut être gourmande en ressources en fonction de l’importance du dossier que vous lui donnez à parcourir.
    Donc à exécuter de préférence sur des répertoires de destination bien ciblés . A planifier si possible la nuit : -)
  • la commande « rm » est toujours « sans filet ». Une fois qu’elle est appliquée , il n’y a pas de possibilité de retour à moins de restaurer une éventuelle sauvegarde que vous auriez faite par prudence.
    Il est donc conseillé de filtrer un maximum la commande find avec par exemple « supprime moi ce fichier qui a tel droit et qui appartient à tel propriétaire ».
  • De préférence, afficher simplement le résultat des commandes avant exécution de la suppression pour être sûr des conséquences.

Be the first to comment

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*