Was ist der beste Weg, um 100.000 Dateien aus einem Windows-Verzeichnis zu entfernen?

12

Ich hatte einen Benutzer mit mehr als 100.000 Dateien in einem einzigen Verzeichnis. Der Computer blockiert und wird für eine lange Zeit unbrauchbar, während der Explorer den Speicher ausfüllt und der Computer abstürzen kann. Gibt es eine einfache Möglichkeit, das Verzeichnis und den Inhalt zu sichern? Wir haben versucht, den Befehlszeilen-Deltree zu verwenden, und dies hat nicht viel besser funktioniert.

DaveF

Extra -

Wir hatten dieses Problem mehrmals mit demselben Benutzer (tatsächlich Client). Ein Programm erstellt während seiner Ausführung Hunderttausende von temporären Dateien. Wenn das Programm korrekt funktioniert, spielt es keine Rolle, da sie langsamer entfernt werden, wenn es damit fertig ist. Aber hin und wieder stirbt es und hinterlässt das Durcheinander von Dateien. Wir haben versucht, die Methoden rmdir und del etc zu verwenden, und sie sind schneller als die Verwendung des Explorers, aber wir haben im Allgemeinen die gleichen Probleme. Die Partition wird beschädigt, es gibt eine unerklärliche gesperrte Datei, einige Dateien haben ein Berechtigungsproblem, das das Löschen verhindert. Normalerweise kann dieses Problem durch einen Neustart behoben werden. In diesem Fall handelt es sich jedoch um ein kritisches System, das in der Produktionszeit nicht verfügbar ist. Unter Unix können Sie einfach ein rm -rf usw. ausführen. Dies ist schnell und es gibt im Allgemeinen kein wirkliches Problem damit.

Übrigens - die Anwendung wird geändert, aber diese wird für einige Zeit nicht in Produktion gehen, und ich dachte, dieses Problem war wahrscheinlich für andere interessant.

Update - da wir MKS Nutcracker auf dem System haben (ohne die Befehlszeilen-Dienstprogramme), haben wir den Programmierer dazu gebracht, ein einfaches rm zusammenzuschlagen. Dies ist mehrere Bestellungen schneller als del / deltree usw. Ich finde es seltsam, dass es keine so einfache App gibt, die als Standard-Windows-Systemadministrationstool verfügbar ist.

David Allan Finch
quelle

Antworten:

15

Sie könnten verwenden rmdir:

rmdir /s /q FOLDERNAME

Flags: /sbedeutet rekursiv löschen, /qist der "leise" Modus.

splattne
quelle
Wir haben es versucht - ich werde der Frage mehr hinzufügen.
David Allan Finch
das hätte bei dir funktionieren sollen. Hat es funktioniert ?
s_ruchit
ja meistens - ich füge hinzu, welche Probleme wir oben in der Frage gesehen haben. vielen Dank für Ihren Kommentar.
David Allan Finch
Ich werde diese Antwort akzeptieren. Es gibt jedoch eine bessere Lösung, die darin besteht, einen einfacheren Unix-Stil zu verwenden. Da dies jedoch für die meisten Benutzer nicht verfügbar ist, ist dies die beste Wahl für 99% der Benutzer. Für Windows sollte ein rm im Unix-Stil implementiert sein, der nichts anderes tut, als rekursiv zu löschen. Übrigens haben unsere Programmierer MKS remove_tree (siehe oben) rmdir verprügelt, so dass das Problem nicht Windows ist, sondern die eingebauten Apps.
David Allan Finch
6

Ich habe dieses Problem mit Servern, die ich verwaltet habe. Überspringen Sie den Explorer insgesamt und verwenden Sie die Eingabeaufforderung. Navigieren Sie zu dem Ordner und „del .

Auf diese Weise vermeiden Sie den Overhead der GUI (Explorer ist Papierkorb) und des Papierkorbs.

user3913
quelle
Wir haben es versucht - ich werde der Frage mehr hinzufügen.
David Allan Finch
4

Versuchen Sie, die Leistung zu steigern, indem Sie die Generierung kurzer Dateinamen deaktivieren, es sei denn, Sie benötigen dies für ältere 16-Bit-Anwendungen. Dies kann erhebliche Auswirkungen auf Verzeichnisvorgänge mit einer großen Anzahl von Dateien haben.

Regedt32 select:
"HKLM\system\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameC
reation"=1

Dann benutze:

RMDIR / S / Q [Laufwerk:] Pfad

um das Verzeichnis mit all seinen Dateien zu entfernen.

Peter Stuer
quelle
Das ist interessant zu wissen.
David Allan Finch
3

Wie wäre es, diesen temporären Ordner auf ein anderes Laufwerk / eine andere Partition zu verschieben? Anstatt den gesamten Müll zu löschen, können Sie das Laufwerk formatieren (entweder GUI oder Befehlszeile). Mit dem schnellen Format sollte dies relativ schnell sein.


quelle
1
Wir haben es versucht und manchmal erlaubte es das nicht. Der Client führt das Programm nun jedes Mal in einem anderen Verzeichnis aus.
David Allan Finch
Erstellen Sie einen Hardlink zwischen dem Pfad und dem Laufwerk, dh: Der Hardlink "c: \ meine dumme App \, in der die Dateien gespeichert sind" zeigt das Laufwerk X: in einem Startstapel
Nime Cloud
2

Dies ist eine Kombination der vorherigen Beiträge

Öffnen Sie ein Befehlsfenster:
File -> Run -> cmd

Entfernen Sie das Verzeichnis
rmdir /s /q FOLDERNAME

ODER

Entfernen Sie ein Dateimuster
cd \....\directory
del *.[something]

Wie Sie in Ihrer Frage bemerkt haben, kann Windows Explorer die Dinge wirklich verlangsamen.

Nachdem ich Ihr Update gesehen habe, habe ich einen eigenen.
Überprüfen Sie diese Liste der Dateientferner

Brad Bruce
quelle
Ich hatte dies bei nur einigen Hunderten von Dateien in der Vergangenheit bemerkt. Es ist eine Schande, dass der Explorer so schnell wie die Befehlszeilen-Apps ausgeführt werden kann - wir könnten den Client dazu bringen, dies selbst zu tun. Danke für deine Antwort.
David Allan Finch
1

Ich habe nichts Besseres als del und rm, aber selbst wenn sie sehr lange dauern, sollte es nicht zu Partitionsschäden führen. Die gesperrten Dateien können daran liegen, dass das Programm, das sie erstellt hat, unerwartet gestorben ist.

Obwohl die Dateien nicht gelöscht werden können, können sie manchmal in ein anderes temporäres Unterverzeichnis verschoben werden. Ich erstelle einfach ein _todel-Unterverzeichnis und verschiebe sie dorthin. Normalerweise funktioniert es besser, wenn ich das gesamte Verzeichnis um eine Ebene nach oben verschiebe, anstatt die Dateien selbst.

Abgesehen davon besteht die einzige Möglichkeit, das Löschen zu beschleunigen, darin, die Festplatte zu defragmentieren. Eine vorübergehende Problemumgehung kann darin bestehen, dieses Verzeichnis auf eine Samba-Freigabe zu verschieben oder eine NTFS-Verbindung auf eine tragbare USB-Festplatte zu verwenden. (Eine kleine Partition wäre besser und schneller als die Verwendung der gesamten Festplatte). Sie können dann einfach die Festplatte auswerfen und ein schnelles Format auf einem anderen PC ausführen.

Chayim
quelle
Das ist, was ich denke - IE die beschädigten Dateien, aber warum werden sie nicht vom NT-Kernel geschlossen? Geschwindigkeit ist ein Problem mit dem Programm, daher ist die Verwendung von Samba oder einer USB-Festplatte kein Starter. Dem Client wurde jedoch vorgeschlagen, für jeden Lauf eine separate Partition zu erstellen und neu zu formatieren. Ich bin mir nicht sicher, ob sie es schon versucht haben. - Danke
David Allan Finch
1

Eine beschädigte Partition beim Löschen von Dateien? Dies ist ein großes Problem mit der Festplatte, unabhängig von der Anzahl der gelöschten Dateien.

Ich würde versuchen, die Befehlszeile zu löschen und so viele wie möglich zu löschen, bis Sie auf eine gesperrte stoßen. Verwenden Sie dann den Prozess-Explorer, um herauszufinden, in welchem ​​Prozess diese Datei geöffnet ist. Beenden Sie diesen Vorgang (wenn Sie können) und löschen Sie ihn erneut. Spülen, wiederholen :)

DougN
quelle
Ich möchte dies versuchen, aber wir haben keinen direkten Zugriff auf den Computer und die Anwendung ist gestorben. Danke trotzdem.
David Allan Finch
1

Starten Sie mit einer 'Live'-Linux-CD, der rm -rf, neu


quelle
Wir können diesen Server nicht einfach neu starten, da dies für den Client von entscheidender Bedeutung ist - aber danke für die Antwort.
David Allan Finch
1

Ein bisschen hacky, aber Sie können ein Skript erstellen, das die Dateien löscht. Ich kenne das Format nicht, aber wenn es Dateien sind, die mit den Buchstaben az beginnen, können Sie dies tun

deltree /y a*
deltree /y b*
...
deltree /y z*

Ändern Sie den Deltree mit der von Ihnen gewählten Entfernungsmethode. wahrscheinlich langsamer, aber weniger fehleranfällig?

Nebenbemerkung: Sie können auch versuchen, cygwin zu installieren, um Befehle wie rm abzurufen, die wahrscheinlich das Löschen von Dateien fortsetzen, selbst wenn bei einer Datei ein Fehler auftritt .

Roy Rico
quelle
Dies wurde versucht, aber es hat das Problem nicht wirklich gelöst - trotzdem danke.
David Allan Finch
Wir haben auch MKS Nutcracker installiert, aber aus Sicherheitsgründen wurden die Befehlszeilen-Dienstprogramme entfernt - keine Wahl. Aber was wir getan haben, ist aus eigener Kraft geschrieben und das funktioniert.
David Allan Finch
1

Die verschiedenen Methoden funktionieren vor allem. Wenn Sie Cygwin auf einem USB-Stick geladen haben, können Sie es einfach an Ihren lokalen USB-Anschluss anschließen, Ihre Cygwin-Shell starten und den RM-Befehl wie oben angegeben ausführen. Dies ist eine praktische Möglichkeit, die Unix-Flexibilität immer zur Hand zu haben.

user13846
quelle
Dies ist eine vernünftige Lösung, wenn Sie das System verwalten.
David Allan Finch
1

Sie können auch die Wiederherstellungskonsole oder etwas in dieser Richtung starten. Das sollte alle seltsamen Probleme mit dem Betriebssystem völlig ignorieren.

Yannone
quelle
Leider können wir den Server nicht einfach neu starten, aber danke für die Antwort.
David Allan Finch
1

Hängen Sie den Ordner von einem Linux-Computer ein und löschen Sie ihn von dort aus rekursiv.

# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername

# rm /mnt/tobedeleted/* -R

Sie können sogar einen Cron-Job verwenden, um die Dateien in regelmäßigen Abständen zu löschen.

Steve
quelle
hast du das versucht
David Allan Finch
1

Warum nicht einfach Robocopy verwenden und ein leeres Verzeichnis spiegeln?

Erstellen Sie einfach einen leeren Ordner und verwenden Sie dann:

ROBOCOPY C:\ThisIsAnEmptyFolder C:\Users\SomeUser\Desktop\SomeFolderWithTempFiles /MIR
NotoriousPyro
quelle
0

Wenn keiner der anderen Vorschläge funktioniert, haben Sie darüber nachgedacht, Ihre E / A zu beschleunigen?

Kaufen Sie bessere Controller, schnellere Festplatten.

Oder ich frage mich, ob die Dateien temporär sind (wie Sie andeuten) und die Größe dies zulässt, Sie könnten der Box zusätzlichen RAM hinzufügen (billig) und eine RAM-Disk einrichten?

Im besten Fall wird die Leistung beim Löschen großer Dateivolumen nicht beeinträchtigt. Im schlimmsten Fall würde ein Neustart die Partition löschen.

Tomfanning
quelle
Ich liebe es, aber ich glaube nicht, dass der Client eine neue Version des Programms erwarten wird - danke für die Antwort.
David Allan Finch
Der Server-RAM in Großbritannien beträgt derzeit etwa 10 GBP pro Gigabyte.
Tomfanning
Richtig, aber der Kunde zahlt X für die Maschine (aus einem Angebot) und sieht keinen Grund, Y mehr auszugeben.
David Allan Finch
Weil der angegebene Server die Arbeit nicht gut genug macht?
Tomfanning
Es ist gut genug für den Job. Das Problem ist, dass das Programm einen Fehler hat, der gerade behoben wird. Sie werden kein Geld mehr ausgeben.
David Allan Finch
0

Versuchen Sie, es auszuschneiden und in den Papierkorb einzufügen. Es sollte den Versuch umgehen, jede einzelne Datei zu verschieben. Ich bin mir nicht sicher, was es tun wird, um den Papierkorb zu leeren, da es dann wahrscheinlich jede Datei durchläuft.

Erwin Blonk
quelle
Ich denke, der Client hat dies versucht und es war nicht viel besser als die normale Verwendung des Explorers. Vielen Dank
David Allan Finch
0

Hat das Löschen mit UMSCHALT + ENTF einen Einfluss auf die Geschwindigkeit?

Kevin Kuphal
quelle
Als ich es zuletzt versuchte, war es ähnlich.
David Allan Finch
Tatsächlich habe ich es gerade noch einmal versucht - mit einer alten Installation und ich warte immer noch. Ich werde wahrscheinlich aufgeben und die MKS rm benutzen.
David Allan Finch