Aux fins de cette question, "grand répertoire" signifie par exemple un référentiel git du noyau Linux ou la source Chromium.
Si j'ai rm -rf
un grand répertoire comme celui-ci à partir du shell, il est supprimé en quelques secondes tout au plus.
Si je le place d'abord dans la corbeille, puis que je vide la corbeille, la première opération prend moins d'une seconde, puis la suppression proprement dite prend plusieurs minutes (nous parlons de chiffres doubles).
Pourquoi la vidange est-elle si lente? Que fait-il quand il dit "se préparer". Combien de préparation faut-il réellement pour courir rm -rf ~/.local/share/Trash/
?
libnautilus-private/nautilus-file-operations.c
dans la source (apt-get source nautilus
). Je n'ai pas la diligence et la patience pour lire C. Question intéressante cependant. +1rm -rf ~/.local/share/Trash
pourrait être plus rapide. Voir askubuntu.com/a/468722/2273Réponses:
Lorsque la première opération se produit, il déplace simplement les fichiers dans la corbeille.
Lorsque vous "jetez" ces fichiers, il charge l'intégralité du fichier d'arborescence en mémoire, puis supprime chaque fichier un par un. Cela permet aux calculs de synchronisation de savoir combien de temps il faut pour supprimer le fichier, combien de fichiers doivent être supprimés, la taille de ces fichiers, bien que la plupart des paramètres ne soient pas utilisés ici, et vous permet d'appuyer sur cette petite croix rouge pour arrêtez le processus.
C'est pourquoi je supprime toujours du shell
la source