J'avais un utilisateur avec plus de 100 000 fichiers dans un seul répertoire. La machine se verrouille et devient inutilisable pendant longtemps tandis que l'Explorateur remplit la mémoire et la machine peut se bloquer. Existe-t-il un moyen simple de vider le répertoire et le contenu? Nous avons essayé d'utiliser la ligne de commande deltree et cela ne s'est pas beaucoup mieux passé.
DaveF
Supplémentaire -
Nous avons eu ce problème plusieurs fois avec le même utilisateur (en fait client). Un programme crée des centaines de milliers de fichiers temporaires pendant son exécution. Si le programme fonctionne correctement, cela n'a pas d'importance car ils sont supprimés en ralentissant à la fin. Mais de temps en temps, il meurt en laissant le fouillis de fichiers. Nous avons essayé d'utiliser les méthodes rmdir et del etc et elles sont plus rapides que d'utiliser l'explorateur mais nous nous retrouvons généralement avec les mêmes problèmes. La partition est endommagée, il y a un fichier verrouillé inexpliqué, certains fichiers ont un problème d'autorisation, ce qui empêche la suppression de fonctionner. Normalement, ces problèmes peuvent être résolus avec un redémarrage, mais dans ce cas, car il s'agit d'un système critique, nous ne pouvons pas le faire en temps de production. Sur Unix, vous pouvez simplement faire un rm -rf, etc. et c'est rapide et il n'y a généralement pas de vrai problème avec.
BTW - l'application est en cours de modification, mais cela n'entrera pas en production pendant un certain temps et je pensais que ce problème était probablement intéressant pour d'autres.
Mise à jour - parce que nous avons MKS Nutcracker sur le système (sans les utilitaires de ligne de commande), nous avons demandé au programmeur de créer un rm simple. Il s'agit de plusieurs commandes plus rapidement que del / deltree, etc. Je trouve étrange qu'il n'y ait pas une telle application simple facilement disponible comme outil d'administration système Windows standard.
la source
Réponses:
Vous pouvez utiliser
rmdir
:Drapeaux:
/s
signifie supprimer récursivement,/q
c'est le mode "silencieux".la source
J'utilise pour avoir ce problème avec les serveurs que j'administrais. Ignorez complètement l'explorateur et utilisez l'invite de commande. Accédez au dossier et "del " .
De cette façon, vous évitez les frais généraux de l'interface graphique (l'explorateur est la corbeille) et le bac de recyclage.
la source
Sauf si vous en avez besoin pour les applications 16 bits héritées, essayez d'augmenter les performances en désactivant la génération de noms de fichiers courts. Cela peut avoir un impact significatif sur les opérations de répertoire avec un grand nombre de fichiers.
Utilisez ensuite:
Chemin RMDIR / S / Q [lecteur:]
pour supprimer le répertoire avec tous ses fichiers.
la source
Que diriez-vous de déplacer ce dossier temporaire vers un autre lecteur / partition? Au lieu de supprimer toutes les ordures, vous pouvez formater le lecteur (GUI ou ligne de commande). Avec un formatage rapide, cela devrait être raisonnablement rapide.
la source
Ceci est une combinaison des messages précédents
ouvrir une fenêtre de commande:
File -> Run -> cmd
Supprimer le répertoire
rmdir /s /q FOLDERNAME
OU
Supprimer un modèle de fichiers
cd \....\directory
del *.[something]
Comme vous l'avez noté dans votre question, l'Explorateur Windows peut vraiment ralentir les choses.
Après avoir vu votre mise à jour, je possède l'un des miens
Consultez cette liste de suppresseurs de fichiers
la source
Je n'ai rien de mieux que del et rm, mais même s'ils prennent très longtemps, cela ne devrait pas endommager la partition. Les fichiers verrouillés peuvent être dus au fait que le programme qui les a créés est mort de manière inattendue.
Parfois, même si les fichiers ne peuvent pas être supprimés, ils peuvent être déplacés vers un autre sous-répertoire temporaire. Je viens de créer un sous-répertoire _todel et de les y déplacer. Cela fonctionne généralement mieux si je déplace le répertoire entier d'un niveau vers le haut, plutôt que les fichiers eux-mêmes.
En dehors de cela, la seule façon d'accélérer les suppressions est de défragmenter le disque dur. Une solution temporaire peut être de déplacer ce répertoire vers un partage samba ou d'utiliser une jonction NTFS vers un disque dur USB portable. (Une petite partition serait meilleure et plus rapide que d'utiliser l'intégralité du disque dur). Vous pouvez ensuite simplement éjecter le disque dur et effectuer un formatage rapide sur un autre PC.
la source
Une partition endommagée lors de la suppression de fichiers? C'est un problème majeur avec le disque, quel que soit le nombre de fichiers supprimés.
J'essaierais la ligne de commande supprimer et supprimer autant que vous le pouvez jusqu'à ce que vous en rencontriez un qui est verrouillé. Utilisez ensuite l'Explorateur de processus pour trouver quel processus a ouvert ce fichier. Tuez ce processus (si vous le pouvez), puis recommencez la suppression. Rincez, répétez :)
la source
Redémarrez à l'aide d'un CD Linux 'Live', le rm -rf
la source
Un peu hacky, mais vous pouvez créer un script qui supprimera en bloc les fichiers, je ne connais pas le format, mais en supposant que ce sont des fichiers qui commencent par les lettres az, vous pouvez le faire
changer deltree avec votre méthode de suppression de choix. probablement plus lent, mais moins sujet aux erreurs?
sidenote: vous pouvez également essayer d'installer cygwin pour obtenir des commandes comme rm qui continueraient probablement à supprimer des fichiers même après avoir rencontré une erreur avec un fichier.
la source
Les différentes méthodes fonctionnent avant tout. Si vous avez cygwin chargé sur une clé USB, vous pouvez simplement le brancher sur votre clé USB locale, allumer votre shell cygwin et exécuter la commande RM comme mentionné ci-dessus. C'est un moyen pratique de garder la flexibilité Unix à portée de main.
la source
Vous pouvez également démarrer dans la console de récupération, ou quelque chose du genre. Cela devrait ignorer complètement tout problème étrange avec le système d'exploitation.
la source
Montez le dossier à partir d'une machine Linux et effectuez la suppression récursive à partir de là.
# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername
# rm /mnt/tobedeleted/* -R
Vous pouvez même utiliser un travail cron pour supprimer les fichiers à intervalles réguliers.
la source
Pourquoi ne pas simplement utiliser robocopy et mettre en miroir un répertoire vide?
Créez simplement un dossier vide, puis utilisez:
la source
Si aucune des autres suggestions ne fonctionne, avez-vous envisagé d'accélérer vos E / S?
Achetez de meilleurs contrôleurs, des disques plus rapides.
Ou je me demande, si les fichiers sont temporaires (comme vous l'impliquez) et que les tailles le permettent, vous pouvez ajouter de la RAM supplémentaire à la boîte (pas cher) et configurer un disque RAM?
Dans le meilleur des cas, les performances ne seraient pas dégradées lors de la suppression de gros volumes de fichiers. Dans le pire des cas, un redémarrage effacerait la partition.
la source
Essayez de le copier-coller dans la corbeille, il devrait contourner la tentative de déplacement de chaque fichier. Je ne sais pas ce que cela fera pour vider le bac, car il parcourra probablement chaque fichier.
la source
La suppression avec SHIFT + DEL fait-elle une différence quant à la vitesse?
la source