Supprimer des millions de fichiers le plus rapidement possible
Keith Winstein vient de publier les résultats d'une étude intéressante : quelle est la commande Linux / UNIX la plus rapide pour supprimer un million de fichiers vides dans un répertoire ? Pour effectuer cette analyse, il a mesuré le temps écoulé avec la commande time en utilisant successivement des programmes de suppression comme find, rsync et rm.
Voici le tableau comparatif des résultats :
Commandes utilisées | Nombre de fichiers | Temps de suppression |
---|---|---|
rsync -a –delete empty/ s1/ | 1000000 | 6m50.638s |
find s2/ -type f -delete | 1000000 | 87m38.826s |
find s3/ -type f | xargs -L 100 rm | 1000000 | 83m36.851s |
find s4/ -type f | xargs -L 100 -P 100 rm | 1000000 | 78m4.658s |
rm -rf s5 | 1000000 | 80m33.434s |
Grosse surprise, puisque c'est rsync qui est la commande la plus rapide. En revanche, ce que je n'arrive pas à comprendre c'est pourquoi la commande rm est aussi lente et pourquoi utiliser l'option -a avec la commande rsync ... ?
Voici les spécifications matérielles de la machine utilisée lors des tests :
- CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
- 4 Go de RAM
- Disque dur : ST3250318AS: 250G/7200RPM
11 Commentaires pour "Supprimer des millions de fichiers le plus rapidement possible"
Flux des commentaires de cet article Ajouter un commentaireJe suis quand même étonné, 80 min pour supprimer des fichiers ???? D'accord il y en a beaucoup mais ça parait excessif. Ou alors peut-être qu'il s'amuse à faire ses test en ufs.
En effet, le '-a' est certainement là par habitude parce que, à part pour le '-r' inclus, cela n'a pas vraiment d’intérêt. Et encore, vu que les fichiers sont censés être tous dans le même dossier...
Sur mon système, impossible d'effacer plus de 80000 fichiers d'un coup (avec rm), ce qui pose pas mal de soucis... Quelqu'un a deja vu ça ?
@chuck essaye tmpreaper, bien plus rapide que rm et permet de jouer sur la date de modification du fichier comme critère de suppression
@amo__ : Je note, meme si je crois que rm aussi tu peux jouer avec la date (ou alors je sais plus si c'est combiné avec un find), mais la c'est des machines du boulot et donc je peux pas installer ce que je veux.
Dommage, il a pas testé avec mv sX /dev/null/.
cool bien que je j'utilise tre rarement Linux, mais ou est le rapport avec la porche?
@bossa : la porsche c'est pour illustrer au passage du Flash ! si le flash enregistre la commande, plouf plus rien
@bossa: regarde la plaque de la Porsch "rm -rf", c'est une commande pour supprimer un repertoire (avec -f pour forcer la suppression). De plus je pense que la Porsch illustre la vitesse, en l'occurence ici, la vitesse de suppression.
EDIT: j'avais pas vu l'étoile en plus "rm -rf *".
@Al : tu fais le test et tu nous redis ?
@bossa : l'explication de @LinuxUser est la bonne. On peut pas faire mieux en terme de relation photo / article sur ce coup-là.
Merci pour le site mais c'est pas plutôt ––delete
rsync -a ––delete empty/ s1/
Chez moi, j'ai pas chronométré mais c'est pas hyper rapide la méthode rsync. Par le passé j'avais fait les frais de rsync et c'était fulgurant (suite à un mauvaise utilisation de rsync)
Bon là, j'ai beaucoup de lien symbolique sur mes dossiers (utilisation de rsnapshot). ça peut expliquer la "lenteur"...