OVH Community, votre nouvel espace communautaire.

Supprimer une grante quantité de fichiers


extralarge
08/10/2015, 15h52
Super merci pour l'info
Xavier

Amrac
07/10/2015, 11h40
Suite à un DDOS, j'ai un serveur qui à planté pour disque dur plein.

Après enquête, j'ai pu constater la présence de 12 millions de fichiers session dans /var/lib/php5.
Hors, supprimer un très grand nombre de fichier est difficile car beaucoup de commandes plantes.
Habituellement, mon serveur fait cette commande pour nettoyer les sessions vieilles de plus de 30 minutes:
Code:
find /var/lib/php5/  -type f -mmin +30 -exec rm -f {} \;
Hors, ici elle n'arrive jamais à s’exécuter.
Les variantes de find suivi d'un delete ne fonctionnent pas dans ce cas.
De même, faire un rm -R /var/lib/php5/sess_* ne fonctionne pas non plus, après avoir pris le processeur à fond pendant un long moment.
En ne prenant qu'une partie, par exemple, les fichiers sessions commençant par h, le problème est le même.
Il semble que ça vient du fait que ces commandes font d'abord la liste des fichiers à passer en arguments à la fonction de suppression, ce qui entraine une erreur lors de la réception des 12 millions de nom de fichiers.

La solution la plus simple est de faire:
Code:
rm -R /var/lib/php5
En essayant de supprimer directement le dossier, la fonction va prendre 1 a 1 les fichiers et les supprimer au fur et a mesure.

Je vous conseil d'utiliser cette commande pour savoir combien de fichier vous avez à supprimer:
Code:
find /var/lib/php5 | wc -l
Ce qui est utilise aussi, c'est que ça vous permet de suivre la suppression des fichiers, car c'est assez long.

J'espère que ce retour pourra être utile aux utilisateurs d'OVH et aux futurs visiteurs de moteurs de recherche.
Le problème est assez bénin, mais chaque test prend entre 30 et 40 minutes avant de retourner une erreur, ce qui fait que la recherche de la bonne commande de suppression peu être particulièrement laborieuse et qu'il est donc important d'avoir la bonne info.

Vous pouvez bien entendue utiliser cela pour n'importe quel autre dossier que /var/lib/php5, mais notez qu'ici, le but est de tout supprimer sans distinction.