Ich habe ein Verzeichnis, das ~ 3 Millionen Dateien in bestimmten Unterverzeichnissen auf einem Windows 2008 Server enthält. Das manuelle Löschen der Dateien mit UMSCHALT + ENTF im Stammverzeichnis dauert einige Zeit. Gibt es eine andere Möglichkeit, die Löschung schneller durchzuführen?
windows
file-management
Cfinley
quelle
quelle
Antworten:
WARNUNG: Wenn Sie Symlinks zu Verzeichnissen haben,
del
werden die tatsächlichen Verzeichnisse und nicht die Symlinks gelöscht. Gehen Sie dabei sehr vorsichtig vor und führen Sie diese Befehle nur aus, wenn Sie wissen, dass sich keine Symlinks im Zielverzeichnis befinden.Ich muss regelmäßig viele Dateien und Verzeichnisse von einem WinXP-verschlüsselten Laufwerk löschen, normalerweise ungefähr 22 GB mit 500.000 Dateien in 45.000 Ordnern.
Das Löschen mit dem Windows Explorer ist Blödsinn, da das Auflisten der Dateien viel Zeit kostet. Normalerweise verschiebe ich das zu löschende Material nach C: \ stufftodelete und habe eine Stapeldatei deletestuff.bat nach
rmdir /s/q C:\stufftodelete
. Dies soll nachts laufen, aber manchmal muss ich es tagsüber laufen lassen, je schneller desto besser.Hier sind die Ergebnisse eines Kurzzeittests eines kleinen 5,85-MB-Beispiels von 960 Dateien in 303 Ordnern. Ich habe Methode 1 gefolgt von Methode 2 ausgeführt und dann die Testverzeichnisse zurückgesetzt.
Methode 1 entfernt die Dateien und die Verzeichnisstruktur in einem Durchgang:
Methode 2 hat einen ersten Durchgang, um Dateien zu löschen und Ausgaben an nul zu senden, um den Overhead beim Schreiben auf den Bildschirm für jede einzelne Datei zu vermeiden. Ein zweiter Durchlauf bereinigt dann die verbleibende Verzeichnisstruktur:
Hier sind die Ergebnisse eines weiteren Tests mit 404 MB von 19.521 Dateien in 3.243 Ordnern:
Es ist also nicht viel drin, wahrscheinlich zu nahe dran, um einen einzelnen Test beurteilen zu können.
Bearbeiten: Ich habe mit viel mehr Daten erneut getestet. Dies ist ein typischer Fall für mich: 28,3 GB mit 1.159.211 Dateien in 146.918 Ordnern:
Wow, Methode 2 ist fast dreimal schneller als Methode 1! Ich aktualisiere meine deletestuff.bat!
quelle
del
werden die tatsächlichen Verzeichnisse und nicht die Symlinks gelöscht. Gehen Sie dabei sehr vorsichtig vor und führen Sie diese Befehle nur aus, wenn Sie wissen, dass sich keine Symlinks im Zielverzeichnis befinden.Wenn Sie regelmäßig große Verzeichnisbäume löschen müssen, sollten Sie erwägen, das Stammverzeichnis dieses Verzeichnisbaums auf einer separaten Partition zu speichern. Formatieren Sie es dann einfach schnell, wenn Sie alles löschen müssen. Wenn Sie dies automatisieren müssen, können Sie diesen DOS-Befehl verwenden:
Wobei Z: Ihre "flüchtige" Partition ist. Hinweis: Die Partition darf keine Beschriftung haben. Ich habe darüber hier gebloggt .
quelle
In der Eingabeaufforderung (Start -> Ausführen ->
cmd
):quelle
TeraCopy kopiert und verschiebt Dateien nicht nur sehr schnell (mithilfe seiner eigenen API), sondern löscht auch Dateien. Seit ich TeraCopy herausgefunden habe, benutze ich keinen Computer ohne diesen installiert (wenn ich kopieren / verschieben / löschen möchte).
Das gleiche Installationsprogramm installiert die x64-Edition, aber um sie zu verwenden, müssen Sie sie manuell erzwingen.
Die Beta, die ich gegenüber den Stable-Versionen empfehle: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
quelle
Ich habe eine Fledermaus-Datei erstellt, die dasselbe tut.
Es macht die Arbeit in zwei Schritten, einem, es versucht, die Dateien zu löschen. Und die zweite ist, zu versuchen, den Besitz der Dateien zu übernehmen. y sollte entsprechend Ihrer lokalen geändert werden (Ja in Englisch). Wenn die Aufgabe fehlschlägt (z. B. wegen fehlgeschlagener Berechtigung), müssen Sie sie erneut ausführen. In der zweiten Runde wird jedoch nicht versucht, die in der ersten Runde gelöschten Dateien zu löschen, daher kann dies recht schnell gehen.
Wie man es benutzt. Speichern Sie die Datei als delfolder.bat in einer Pfadroute (z. B. c: \ windows) und führen Sie sie dann als aus
Dabei ist Ordnername der Name des Ordners
In meinem Test dauerte das Löschen von 123'000 Dateien 3 Minuten (sata 7200rpm). YAY!
quelle
%1
in einem Skript aber nicht verwenden"%~1"
. Auf diese Weise wird das Argument, wenn es mit Anführungszeichen übergeben wurde, deklassiert und erneut zitiert. Wenn es nicht mit Anführungszeichen übergeben wurde, wird es in Anführungszeichen gesetzt.Der folgende Code funktioniert normalerweise gut für mich.
quelle
rsync
Linux. Dann ist es hier sogar schnellerrmdir
?del /f/q/s
+rmdir /s/q
. Wenn dein dir_to_wipe mit dir in Verbindung steht, gehenc:\some_important_dir
deine Daten verloren.Verwenden Sie den Befehl rd / s an der Eingabeaufforderung.
quelle
Die praktischste Lösung ist wahrscheinlich, den Ordner an eine andere Stelle zu verschieben (z. B. in den Papierkorb) und ihn dann zu löschen. Es wird Ewigkeiten dauern, aber zumindest wird es aus dem Weg gehen.
Ich bin mir ziemlich sicher, dass die zum Löschen all dieser Dateien erforderliche Zeit eine inhärente Anforderung der Aufgabe ist und keine Ineffizienz bei der Implementierung des Löschvorgangs.
quelle
Installieren Sie Cygwin und verwenden Sie rm -r . Aber das ist wahrscheinlich übertrieben.
quelle
rd /q /s
...rm
wirklich so schnell wie cmd.exe eingebautrd
? Da die Cygwin-Emulation der Posix-Schnittstelle ziemlich langsam ist, da sie einige zusätzliche Arbeiten erfordert, wirdrm
dies nicht wirklich gewürdigt.rm -rf
. Ungefähr 10 Minuten später brach ich ab und ging zurück zu,del /f/s/q
da unter Cygwin die Festplattenauslastung nur 50% betrug. Unterdel
ist die Datenträgernutzung auf 100% festgelegt. Ich denke also, es muss schneller gelöscht werden. Die CPU-Auslastung liegt bei beiden Methoden bei <1%. Ich bin mir bei der Dateinummer nicht sicher, da ich den Windows File Deleter nach 10-minütiger Berechnung geschlossen habe.Haben Sie die Kurznamengenerierung aktiviert? Wenn ja, brauchen Sie das wirklich? Das Entfernen einer Datei ist nur eine Metadatenoperation. Wenn Sie also doppelt so viele Namen entfernen müssen, ist der Arbeitsaufwand erheblich höher.
quelle
Haben Sie eine dieser beiden Apps ausprobiert?
Stellen Sie sicher, dass die Anzahl der Überschreibungen auf 0 eingestellt ist, wenn Sie die schnellste Leistung erzielen möchten. Klicken Sie dazu auf Optionen und ändern Sie den Wert unten im Dialogfeld.
Geben Sie den zu löschenden Pfad in das Feld Quelle ein und klicken Sie dann auf Löschen.
Diese Apps legen die Dateien nicht im Papierkorb ab. Mit Vorsicht verwenden.
quelle
Dies wird bereitgestellt, um die in den zuvor erwähnten Antworten unternommenen Schritte zu ergänzen und zu ergänzen.
Die beiden oben genannten Methoden scheinen recht effektiv zu sein, aber die Leistung zu bestimmen, wäre schwierig, wenn sie nicht mit denselben Bedingungen verglichen werden:
Führen Sie dann die Konfigurationen über die Stapeldatei aus und verwenden Sie das Powershell-Cmdlet, um deren Leistung zu protokollieren und zu messen.
Im Folgenden sind einige Beispielordner (als Gesamtgröße bezeichnet) aufgeführt, an denen ich experimentiert habe, die jedoch keine aussagekräftigen Ergebnisse liefern konnten.
r.bat
rd.bat
Power Shell:
quelle
Die Antwort von Hugo ist die schnellste, entfernt jedoch keine versteckten Dateien oder Systemdateien im ersten Durchgang. Wenn Sie also eine umfassendere Lösung wünschen, verwenden Sie den Parameter / a:
Über die BAT-Datei von Magallanes : Seien Sie sehr vorsichtig mit takeown- und icacls-Dateien. Hardlinks haben dieselben Berechtigungen und Eigentümer. Wenn sich also ungesättigte Hardlinks in dem Ordner befinden, den Sie entfernen möchten, ändern takeown- und icacls-Dateien die Berechtigungen und Eigentümer von Dateien außerhalb des Ordners die Mappe.
Mit dem Tool ln.exe können Sie alle Dateien auflisten, die innerhalb des Ordners fest verbunden sind, und feststellen, ob sie mit Dateien außerhalb des Ordners fest verbunden sind (ungesättigte Hardlinks):
quelle
Das Löschen eines Ordners ist schneller als das Löschen mehrerer Dateien.
Wenn Sie also lieber die Maus als die Eingabeaufforderung verwenden möchten, können Sie ein Verzeichnis erstellen, Dateien dorthin verschieben und löschen (wie gesagt mit Umschalt + Entf).
quelle