Verzeichnis recursive übers Netzwerk löschen
Hallo zusammen,
ich schreibe gerade ein Programm, welches über ein 100MBit-Netzwerk Daten in einem Gesamtumfang von ca. 40GB löschen muss. 1.) Welche Erfahrungen habt Ihr gemacht mit der Funktion RemoveDirectory und der Funktion DelDir von den Schweizern ? 2.) Welche der beiden Funktionen ist besser und sicherer ? 3.) Welche der beiden Funktionen ist schneller ? Gruß Rolf |
AW: Verzeichnis recursive übers Netzwerk löschen
Frage 4 Fehlt: Welche Funktioniert
Lese mal die MSDN-Doku zu RemoveDirectory: Zitat:
Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Die 40 GB sind nicht sehr aussagefähig, auf dieses Problem bezogen.
Um wieviele Dateien und Verzeichnisse handelt es sich denn? Eine 40 GB-Datei ist sehr schnell gelöscht, ein Verzeichnis mit 40.000 Dateien dauert schonmal länger und sind die 40.000 auch noch zu je einer Datei auf 40.000 Verzeichnisse verteilt, ist es übel. Ein schnelles Netzwerk hilft auch ungemein (bzw. das Netzwerk sollte schneller sein, als der Datenträger) und sind die Verzeichnisstrukturen (bei vielen Dateien und Verzeichnissen) schon in der Windows File Cache geladen, ist das auch nicht schlecht. |
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Zitat:
Selbst lesen wir die Dateien des Verzeichnisses ein und löschen sie per DeleteFile. Wie lange würde das in deinem Fall dauern. Ist das entfernte Verzeichnis (neben der Frage von himitsu) auf einem Win-Server (Version) oder einem Linux-System? Wie lange dauert denn der SHFileOperation-Aufruf? |
AW: Verzeichnis recursive übers Netzwerk löschen
@Bernhard Geyer:
Die Doku ist auf die Windows-Schnittstellen und den Dateisystemtreiber bezogen. Beim Netzlaufwerk ist aber noch eine Schicht dazwischen und diese Schicht könnte zuzätzliche Funktionalitäten einführen, bzw. auf der anderen Seite befindet sich ein anderes Dateisystem oder gar ein anderes Betriebssystem. |
AW: Verzeichnis recursive übers Netzwerk löschen
Es sind 7 Hauptverzeichnisse mit mehreren Unterverzeichnissen. Das größte Hauptverzeichnis liegt bei ca. 12 GB und das kleinste Hauptverzeichnis liegt bei ca. 15MB. Die Dateien sind alle unterschiedlich groß. Es gibt aber keine Datei die größer ist als 30MB.
Hier mal eine Aufstellung von den Verzeichnissen :
Code:
Anzahl Dateien Anzahl Verzeichnisse
1. Verzeichnis 11140 446 2. Verzeichnis 3099 531 3. Verzeichnis 132789 4767 4. Verzeichnis 176 21 5. Verzeichnis 3383 310 6. Verzeichnis 96735 10678 7. Verzeichnis 12979 2448 Gesamt 260301 19201 Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Die Samba-Implementierungen sind nach meinen Erfahrungen nicht unbedingt 100% Identisch vom Verhalten her wie die MS-Implementierung unter Windows. Evtl. funktioniert ja das RemoveDirectory wegen entsprechender Samba-Konfiguration so langsam. |
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
rm -rf ist recht fix Grüße Klaus |
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Kannst du denn den Gegentest machen indem du die Dateien auf ein Nicht-RAID-Serverlaufwerk kopierst und dann dort löscht? Dann würde man schon mal sehen ob evtl. das RAID-5 bei den entsprechenden API-Aufrufen der Flaschenhals ist. Auch ja: Für ein vollständiges Testszenario wäre auch noch die Linux und Samba-Version relevant und das eingesetzte Dateisystem. Wenn man "RemoveDirectory Samba" googled findet man viele Eintrag, aber primär von 2006. Es könnte also man was gegeben haben was hier problematisch ist. |
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Zitat:
Zitat:
Ich habe ein paar Tests durchgeführt und folgendes ist dabei rausgekommen :
Fazit: Da der Windows-Server und der Linux-Server gleich schnell sind, liegt es aus meiner Sicht nicht an der Konfiguration des Samba-Shares. Um jetzt schneller die Backupverzeichnisse löschen zu können, habe ich im Moment nur eine Alternative, da ich nicht weiß ob es noch Optimierungsmöglichkeiten für die Funktion DelDir von den Schweizern gibt. Ich muss ein Bash-Skript von dem Programm erstellen lassen, welches die 7 Verzeichnisse löscht. Dieses Bash-Skript wird dann per Cron-Job aufgerufen. Sorry, für die etwas chaotische Beschreibung. Edit: Vom Mausklick zum Starten des Löschvorgangs bis zur Meldung hat der Linux- und Windows-Server 1 Minute und 6 Sekunden benötigt. |
AW: Verzeichnis recursive übers Netzwerk löschen
Zitat:
Du schreibst einfach
Code:
in deine crontab und fertig. Löscht das Verzeichnis jeden Sonntag um 4 Uhr nachts und schickt dir Fehlermeldungen (wenn der Server richtig konfiguriert ist) per E-Mail.
4 0 * * 0 sambauser rm -rf /path/to/old/backup 2>/dev/null
Liebe Grüße, Valentin |
AW: Verzeichnis recursive übers Netzwerk löschen
Hallo Valle,
folgender Aufbau der Backupstruktur ist gegeben :
Code:
So ist jedes der 7 Verzeichnisse aufgebaut. Der Name des Backupverzeichnisses enthält das Datum. Dieses Datum wird von meinem Programm ausgelesen und in eine Liste geschrieben. Diese Liste wird dann abgearbeitet. Die Abarbeitung der Liste dauert die genannten 4 Stunden.
1.Verzeichnis
| --- Backupverz. 1 | ... | --- Backupverz. 25 | Zitat:
|
AW: Verzeichnis recursive übers Netzwerk löschen
Achso, na dann schreibt man sich eben ein Script.
Es gäbe übrigens noch die Möglichkeit "find" mit Paramter "mtime" zu nutzen. So mache ich das immer.
Code:
Liebe Grüße,
find /path/to/backups -mindepth 2 -maxdepth 2 -type d -iname 'backupverz_*' -mtime +31 -exec rm -rf "{}" \;
Valentin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz