DSC_0426.jpg DSC_0460.jpg DSC_0464.jpg

 i need more coffee

Atteint depuis mon plus jeune âge d'hippopotomonstrosesquippedaliophobie (cultivez vous ça ne fera pas de mal) j'ai décidé de faire un blog sur ma maladie (be feeeaar..).
Blague à part c'est un blog totalement axé génie logiciel que vous trouverez ici. Du PHP, du J2EE, et évidement toutes les technologies qui leur sont liées.

Have fun !

Debian : supprimer un très grand nombre de fichiers

13 juillet 2014Posté par : Kevin Danezis dans Divers

Il y a quelques jours je me suis rendu compte que le répertoire des sessions Apache sur le serveur de CmsMadeSimple ne se vidait plus. Sans connaitre l'origine de cette étrangeté je me retrouvais face à un double soucis : le web serveur Apache tombait alors même qu'il y avait encore de la place sur le disque dur (plus moyen de créer de nouvelle session dans ce répertoire déjà bourré) et impossible pour moi, néophyte, de vider ce satané répertoire à coup de commande classique de suppression Unix, celle ci me retournant l'erreur

arg list too long

L'erreur rencontrée par un classique

rm -rf ./sessions/*

était "arg list too long". En cause le fait que la commande rm liste les fichiers avant de les supprimer et possède une limitation interne de la taille cette liste. Trop de fichier égal : impossible de les supprimer.

J'ai bien tenté de filtrer sur une portion du nom des fichiers de session sans résultat.

La solution porte sur les commandes xargs unix.

find ./sessions/ -type f -cmin +3600 -print0 | xargs -r -0 rm

En français : trouve moi les fichiers de plus de 3600 secondes dans le répertoire sessions, et pour chacun d'entre eux, exécute la commande rm. Ainsi plus de limitation, la suppression se faisant fichier par fichier.

Par contre j'ai trouvé le traitement extrêmement long (plusieurs heures). J'ai donc arrêté et repris le traitement à intervalle régulier tout en exécutant cette ligne pour connaitre le nombre de fichier restant dans ce maudit répertoire.

find ./sessions/ | wc -l

Ce qui permet de se rendre compte de l'étendu des dégâts lorsque vous dépassez les millions de fichier...

Reste à comprendre pourquoi Apache (ou php) ne supprime pas ces fichiers.

comments powered by Disqus