AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Verzeichnis recursive übers Netzwerk löschen

Verzeichnis recursive übers Netzwerk löschen

Ein Thema von RWarnecke · begonnen am 3. Mär 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#11

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:35
Die Verzeichnisse liegen alle samt auf einem Linux-Server (Samba-Share).
.. Shell Zugriff hast du nicht?
Doch Shell-Zugriff habe ich.

rm -rf ist recht fix
Den Befehl müsse ich dann jede Woche manuell ausführen, da es sich bei den zur Zeit 7 Verzeichnissen um Backupverzeichnisse handelt, wo jede Woche die ältesten Verzeichnisse gelöscht werden. Genau diese Backupverzeichnisse ermittelt das Programm und löscht diese dann auf dem Server.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.178 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:54
Kannst du einen Gegentest auf einem Windows-Server mit der gleichen Datei/Verzeichnisstruktur machen?
Nee kann ich nicht, da ich keinen Windows Server mit einem Hardware Raid5 habe. Wenn ich das auf einer normalen Platte auf einem Windows-Server teste glaube ich, dass das Ergebnis nicht aussagekräftig ist. Seit Ihr da anderer Meinung ?
Und wieso hältst du uns solche relevanten Informationen vor? Was hätte es dir gebracht wenn ich gesagt hätte: 20.000 Dateien, 15 GB waren auf unserem Test-Server übers Netz in 10 Sekunden gelöscht. Dieser hat aber Win 2008 drauf und nur AFAIK nur ein RAID1.

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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#13

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 13:18
Und wieso hältst du uns solche relevanten Informationen vor? Was hätte es dir gebracht wenn ich gesagt hätte: 20.000 Dateien, 15 GB waren auf unserem Test-Server übers Netz in 10 Sekunden gelöscht. Dieser hat aber Win 2008 drauf und nur AFAIK nur ein RAID1.
Ich habe nicht gewusst, dass das von Bedeutung ist. Sorry, dass ich das vorenthalten habe, war keine Absicht.

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.
Siehe unten bei dem Ergebnis meines Tests.

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.
Der Linux-Server ist eine Ubuntu 10.04.3 LTS mit Samba 3.4.7.

Ich habe ein paar Tests durchgeführt und folgendes ist dabei rausgekommen :
  • Bernhard hat Recht, der MSDN-Befehl RemoveDirectory löscht nur Verzeichnisse, die auch leer sind.
  • Ich hatte bei dem Vorgang letzte Nacht doch noch eine ältere Version von meinem Programm laufen, die mit DelDir gelöscht hat.
  • Als zweiten Test habe ich jetzt ein Verzeichnis in einer Größe von 722MB genommen und habe es auf den Linux-Server mit Samba-Share gespielt. Das Samba-Share liegt nicht auf dem Raid5. Das gleiche Verzeichnis auch noch auf einem Windows-Server 2008 ohne Raid5. Das Löschen auf beiden Server mit der Funktion DelDir von den Schweizern war gleich schnell.

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.
Rolf Warnecke
App4Mission

Geändert von RWarnecke ( 3. Mär 2012 um 13:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#14

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 13:50
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.
Wieso denn Alternative? Ich hätte es von vornherein nicht anders gemacht.

Du schreibst einfach
Code:
4 0 * * 0 sambauser rm -rf /path/to/old/backup 2>/dev/null
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.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle ( 3. Mär 2012 um 13:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#15

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 14:00
Hallo Valle,

folgender Aufbau der Backupstruktur ist gegeben :

Code:
1.Verzeichnis
      |
      --- Backupverz. 1
      |
...
      |
      --- Backupverz. 25
      |
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.

Du schreibst einfach
Code:
4 0 * * 0 sambauser rm -rf /path/to/old/backup 2>/dev/null
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.
So einfach geht das nicht, da immer das älteste Datum ermittelt werden muss, welches sich im Verzeichnisnamen befindet. So benötige auf jedenfall ein Bash-Skript.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#16

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 14:25
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:
find /path/to/backups -mindepth 2 -maxdepth 2 -type d -iname 'backupverz_*' -mtime +31 -exec rm -rf "{}" \;
Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle ( 3. Mär 2012 um 14:39 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 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