AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Viele große Dateien übers Netzwerk verschieben
Thema durchsuchen
Ansicht
Themen-Optionen

Viele große Dateien übers Netzwerk verschieben

Ein Thema von Computerbabalulu · begonnen am 5. Okt 2008 · letzter Beitrag vom 6. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#1

Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 22:44
Hallo ihr lieben.

Ich habe folgendes Problem:

Ich muss (möchte) automatisiert viele große Dateien (1-4 GB pro Datei) zentral auf einen
Fileserver verschieben / holen. Die Dateien liegen verteilt auf ca. 15-20 Windows Systemen (XP) und müssen entweder vom Server eingesammelt oder von den XP Clients automatisch auf den Server übertragen werden. Da das ganze übers Netzwerk laufen soll, muss das ganze auch mit diversen Sicherheitsfunktionen ausgestattet sein, so das bei Störungen beispielsweise später automatisch angefangene Übertragungen fortgesetzt oder wiederholt werden. Außerdem muss sichergestellt werden, dass die Datei fehlerfrei verschoben wurde. Das ganze sollte natürlich möglichst performant sein, da hier am Tag etwa 1 bis 3 Tausend solcher Dateien zu verschieben sind. Die betreffenden Systeme sind alle mit 2-10 Gbit Netzwerk (2Gbit Clients, 10 Gbit Server) verbunden. FibreChanel, iSCSI bzw ein reines SAN kommt für uns aus Kostengründen nicht in betracht. Der Zielserver ist allerdings schon ganz nett mit 20 TB Volumen (Raid 10, 15K SAS Platten) und 2 10Gbit NICs. Der Server läuft übrigens mit Win2003.

Jetzt meine Frage. Wie realisiere ich das ganze?

Mach es Sinn mit die Dateien mit den Indys auf den Server zu schieben, oder besser die ganz normalen Win APIs zum verschieben verwenden? Hat vielleicht jemand Erfahrung mit solchen dingen oder gar schon mal etwas Ähnliches Programmiert?
Schön wären natürlich auch, wenn das Programm später die aktuelle Übertragungsgeschwindigkeit und den Fortschritt anzeigen würde. Und wie ist es überhaupt Sinnvoller: Dateien vom Server einsammeln lassen oder jeweils von den Clients auf den Server schreiben?

Für Vorschläge, Informationen und eventuelle Beispiele wäre ich dankbar.

Gruß
Frank
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 22:52
Meine spontane Idee, deren Realisierbarkeit ich in keinster Weise versichern kann, wäre, einfach eine Freigabe auf dem Server (Domaincontroller?) zu machen, auf die nur ein bestimmter Nutzer zugreifen kann. Jetzt kommt der Part bei dem ich mir nicht sicher bin. Auf dieser Freigabe meldest du dich dann mittels deines Programms an / Könntest aber auch Alternativ den Ordner für Standardbenutzer weder einsehbar noch lesbar, sondern nur schreibbar machst und schiebst die Datei ganz normal rüber, und gibst eventuell noch nötige Rechte (?). Mit der Ordnerstruktur kannst du dann bestimmte Strukturen nachbilden oder noch nebenbei 'ne Datenbank pflegen. Den Sicherheitsaspekt hast du mit den Ordnerrechten und dem geschützen Ordner unter Kontrolle.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#3

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 22:58
Hallo, HalloDu

Das Problem mit der Sicherheit besteht keinenfalls insofern das die Dateien vor fremden Zugriff geschützt bleiben müssen.
Das ganze Netzwerk ist Firmenintern und alle Rechner sind mit Shares für alle Freigegeben.
Mit Sicherheit meinte ich nur die Sicherheit das die Dateien auch 100%ig zuverlässig fehlerfrei übertragen werden.
Daher frage ich mich wie ich das am besten realisiere. Sicher ist es kein Problem die Freigaben zu Mounten und
einfach mit der Win API die Dateien zu verschieben. Aber macht es auch Sinn es so zu machen?

Gruß
Frank
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:00
Kennst du denn die Anzahl und die Struktur der Dateien, gibt es irgendwelche Regelmäßigkeiten? (Es könnten ja auch vlt einige Dateien garn nicht übertragen worden sein, dafür wären solche Informationen nützlich). Auf jeden Fall kannst du mit Hashes arbeiten um zu überprüfen, ob die Dateien wenigsten korrekt übertragen wurden.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#5

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:02
Es hantelt sich bei den Dateien immer um den gleichen Dateityp (pdf Dateien).
Frank
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:05
Ja wie gesagt, du kannst nach der Dateiübertragung prüfen, ob die Hashes übereinstimmen. Entweder einfach vom Client aus, oder dem Server noch auf welchem Wege auch immer den Hash übermitteln und einem Serverdienst das Validieren überlassen. Was ist wenn ein Client mal "vergisst" die Datei zu übertragen, kann man darauf irgendwie schließen.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#7

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:11
Wie wäre es mit einer Art Torrent-System?

Der Client erstellt zuerst ein eine Art torrent-File für die zu übertragenen Dateien. Jede Datei wird in kleine Parts (sagen wir mal 10 MB) unterteilt (also nur im Container, nicht die Datei selbst) und jedes Part bekommt einen einzelnen Hash. Zusätzlich bekommt dann noch die komplette Datei einen Hash über alle Parts sowie über alle Daten.

Wenn du jetzt eine Datei an den Server schicken willst, sendest du zuerst die Container-Daten mit den Hashes und den Dateigrößen. Dieses Containerfile überprüfst du dann wiederum erstmal, in dem du einen Hash-Vergleich machst. Ist das Container-File in Ordnung, sendet der Server nacheinander Request an den Client, der dann die Daten der einzelnen Parts überträgt. Sobald ein Part ankommen ist und die CheckSumme des Parts beim Server mit der CheckSumme im Containerfile übereinstimmt, sendet der Server ein weiteren Request an den Clienten, bei dem er einen neuen, noch nicht vorhandenen Part anfragt.

Dies wiederholt der Server so lange, bis alle Parts herungergeladen und alle Checksummen übereinstimmen. Damit der Server die einzelnen Clients erkennt, könnten die sich ber UDP-Broadcast beim Server melden.

Das lästigste dabei wäre dabei die Erstellung des Container-Files, da dies bei 1-4 GB doch schon ein paar Minuten dauern kann. Jedoch bist du dann ziemlich sicher, ob irgendwelche Dateien fehlerhaft sind. Dann musst du nicht mehr die komplette Datei anfordnern sondern nur den Part, der eine falsche CheckSumme hat.

Das ganze kannst du noch besser machen, wenn mehrere identische Dateien von mehreren Clienten auf einmal gesendet werden. Dann kannst du verschiedene Parts von unterschiedlichen Clienten herunterladen - gleichzeitig bei einer Datei.

Ich hab sowas schon mal gemacht, hat ca. 1-2 Wochen gedauert und hat super funktioniert.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#8

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:20
Hi littleDave,

das hört sich interessant an


Zitat:
Das lästigste dabei wäre dabei die Erstellung des Container-Files, da dies bei 1-4 GB doch schon ein paar Minuten dauern kann.
Das wäre eigentlich nicht soooo ein großes Problem. Die XP Clients haben alle 2 QuadCore Xeon CPUs und sollte das locker schaffen.

Hättest du vielleicht mal ein Beispiel von deiner Lösung für mich?

Da du ja alles schonmal gemacht hast und es sogar funktioniert wäre es blöd wenn ich hier das Rad neu erfinden müsste.


Oder vielleicht kenn ja wer ein Programm was ich nutzen kann welches es schon gibt??

Gruß
Frank
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#9

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:26
Ich kann mal schauen, jedoch heute nicht mehr. Wahrscheinlich komm ich morgen dazu - kann ich aber nicht garantieren.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#10

Re: Viele große Dateien übers Netzwerk verschieben

  Alt 5. Okt 2008, 23:27
Supi, vorab schnmal herzlichen Dank für deine Mühe!!
Frank
  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 11:20 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