Si le nombre de fichiers à supprimer dépasse largement le nombre de fichiers laissés, ce n'est peut-être pas la méthode la plus efficace pour parcourir l'arborescence des fichiers à supprimer et effectuer toutes les mises à jour du système de fichiers. (Cela revient à faire une gestion maladroite de la mémoire comptée en références, visiter chaque objet dans un grand arbre pour laisser tomber sa référence, au lieu de tout mettre en ordre en une seule étape, puis balayer tout ce qui est accessible à nettoyer.)
C’est-à-dire cloner les parties de l’arbre à conserver sur un autre volume. Recréez un nouveau système de fichiers vierge sur le volume d'origine. Copiez les fichiers conservés dans leur chemin d'origine. Ceci est vaguement similaire à la copie d'une récupération de place .
Il y aura des temps morts, mais cela pourrait être mieux que de mauvaises performances continues et des interruptions de service.
Cela peut ne pas être pratique dans votre système et votre situation, mais il est facile d'imaginer des cas évidents où c'est la voie à suivre.
Par exemple, supposons que vous vouliez supprimer tous les fichiers d'un système de fichiers. Quel serait le but de récursir et de supprimer un par un? Démontez-le et faites un "mkfs" sur la partition pour créer un système de fichiers vide.
Ou supposez que vous vouliez supprimer tous les fichiers sauf une demi-douzaine de fichiers importants? Sortez la demi-douzaine et ... "mkfs" par dessus.
Finalement, il y a un seuil de rentabilité quand il y a suffisamment de fichiers qui doivent rester, qu'il devient moins coûteux de faire la suppression récursive, en tenant compte des autres coûts, comme tout temps d'arrêt.