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
Thema durchsuchen
Ansicht
Themen-Optionen

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 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

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

Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 11:38
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 MSDN-Library durchsuchenRemoveDirectory 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
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 11:53
Frage 4 Fehlt: Welche Funktioniert

Lese mal die MSDN-Doku zu RemoveDirectory:

Zitat:
This path must specify an empty directory, ...
und dann auch noch das:

Zitat:
... recursively delete the files in a directory, use the SHFileOperation function.
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
 
#3

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:07
Frage 4 Fehlt: Welche Funktioniert
Beide funktionieren.

Lese mal die MSDN-Doku zu RemoveDirectory:

Zitat:
This path must specify an empty directory, ...
und dann auch noch das:

Zitat:
... recursively delete the files in a directory, use the SHFileOperation function.
Ich habe die Fragen gestellt, da die Funktion RemoveDirectory auch recursiv löscht, ohne die SHFileOperation Funktion zu nutzen. Nur braucht das Programm etwas über 4 Stunden um die Verzeichnisse zu löschen. Deshabl habe ich ja auch nach euerer Erfahrung gefragt, welche der beiden Funktionen Ihr einsetzt.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#4

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:34
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Mär 2012 um 12:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:42
Beide funktionieren.
Wie das wenn die Doku MSDN-Doku was anderes sagt? Ok. MSDN-Doku ist auch nicht fehlerhaft aber AFAIK haben wir das schon mal probiert und es ging nicht wenn das verzeichnis leer ist.

Ich habe die Fragen gestellt, da die Funktion RemoveDirectory auch recursiv löscht, ohne die SHFileOperation Funktion zu nutzen. Nur braucht das Programm etwas über 4 Stunden um die Verzeichnisse zu löschen. Deshabl habe ich ja auch nach euerer Erfahrung gefragt, welche der beiden Funktionen Ihr einsetzt.[/QUOTE]

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

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#6

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:46
@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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

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

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 12:58
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

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?
Die Verzeichnisse liegen alle samt auf einem Linux-Server (Samba-Share).
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 13:10
Die Verzeichnisse liegen alle samt auf einem Linux-Server (Samba-Share).
Kannst du einen Gegentest auf einem Windows-Server mit der gleichen Datei/Verzeichnisstruktur machen?
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.
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
 
#9

AW: Verzeichnis recursive übers Netzwerk löschen

  Alt 3. Mär 2012, 13:15
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 ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Verzeichnis recursive übers Netzwerk löschen

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

rm -rf ist recht fix

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:39 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