Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Datentransfer





Frage

Hallo, es sollen Abends die Daten von 6 Filialen an einen FTP Server geschickt werden, dort werden sie gesammelt und am nächsten Tag wieder zurück an die Filialen geschickt. Dazu benötigte ich einen automatischen FTP Client, damit diese Vorgänge automatisiert werden. Ein weiteres Problem ist, dass die Daten nach dem ersten Transfer Abends dann bei den Filialen gelöscht werden soll, aber nur wenn sie unversehrt beim Server angekommen, nicht das ein Datenverlust aufkommt. Welcher FTP Client ist da am besten? Danke schon im Voraus für eure Hilfe.

Antwort 1 von son_quatsch

Fällt mir keiner ein, der alles unterstützt. Klingt eher nach einem eigen programmierten Programm, welches einerseite eine Datei hoch- (oder runter)laden kann und gleichzeitig auch z.B. einen MD5-Hash erstellt.

Allerdings müsste auch der Server einen MD5-Hash bereitstellen - vorzugsweise sofort nach dem Fertigstellen des (aus seiner Sicht gesehenen) Dateidownloads. Doch wie kann der Client in der Filiale den MD5-Hash jener Datei auf dem Server sehen?

Im Grunde müsste sowohl ein eigens programmierter Client für alle Filialen, als auch ein eigens programmierter Server erstellt werden. Wobei es dann egal wäre, ob der Transfer per FTP stattfinden soll.

Eine kostengünstigere, aber sicherheitstechnisch fragwürdige Variante wäre es, in jeder Filiale UND auf dem zentralen Server je einen HTTP-Server aufzusetzen. So könnten sich die HTTP-Server gegenseitig die Dateien runterladen und dank PHP auch schnell MD5-Hashes bereitstellen und gegenseitig prüfen. Allerdings muss man hier Authentifizierungen bedenken, damit nicht ein Unberechtigter eine der Dateien runterladen kann...

Antwort 2 von Jaja

ja das ist ein bissl kompliziert.. allerdings würde mir schon ne lösung unter linux einfallen. glücklicherweise gibts die meisten kommand line tools auch für windows - die könnte man nutzen..
würde aber noch die möglichkeit fehlen, unter windows ein leistungsfähiges shell script zu erstellen..

naja ich fang einfach mal an meine gedanken dazu zu spinnen:

1. statt ftp würde ich ne gesicherte SFTP verbindung nutzen..
(du kannst natürlich auch ftp nutzen, aber das ist für geschäftsdaten vielleicht nicht so prickelnd)

2. openssh gibts auch für win und bringt ein kommand line tool sftp mit.

3. md5 gibts als md5sum für windows, auch ein kommand line tool.

4. standardbefehl wie rm bzw. del zum löschen von dateien..

5. zum zusammenfassen von dateien zu einer gibts cpio bzw. tar auch für windows..

6. lzma (sehr gute und schnelle kompresion - besonders für textdateien) gibts für windows..

7. mit dem windowseigenen cron job "task planer" lassen sich scripte beliebig zeitgesteuert ausführen. (systemsteuerung->taskplaner)
alterativ könnte ein script beim abmelden, eines beim anmelden ausgeführt werden..


so damit hätte man erstmal alle zutaten da, um ein schönes script zu basteln..

leider hab ich von windows/dos bzw. wsh programmierung wenig ahnung, eher von bash shell scripts, aber so schwierig ist das eigentlich nicht -

da findet sich sicher einer hier der mein "rezept" auch backen kann:

script am abend:

1. alle betroffenen dateien mit cpio zusammenfassen, mit lzma komprimieren, md5 hash erzeugen und per sftp uploaden.

unter linux/unix z.b.:

find /home/daten/ -depht  -print | cpio -o | lzma -9 > data.cpio.lzma
md5 -binary -out data.cpio.lzma.md5 data.cpio.lzma
... mit sftp kenne ich mich jetzt erlich gesagt nich so aus, geht aber auch im batch modus.



2. datei wieder downloaden, erneut md5 hash erzeugen und mit ursprünglichen hash vergleichen.
ist der ungleich, gehe wieder zu 1. (nur nochmals übertragen)

3. ist der hash gleich, kann das cpio archiv gelöscht werden, so auch die orginaldateien.

script am morgen:

1. am morgen dann die daten mit sftp abholen, per lzma dekomprimieren und per cpio wieder die orginale daten und ordnerstruktur hergestellen.
alternativ könnte nun erneut ein md5 hash erzeugt werden, um nochmals die daten auf veränderung gegenüber dem vorabend zu testen - ist aber ein wenig sinnlos..


so das wars auch schon - wer ist hier wsh/batch script meister? ;)

Antwort 3 von Jaja

Zitat:
erneut md5 hash erzeugen und mit ursprünglichen hash vergleichen.


eh ist natürlich käse - man kann ja einfach die datei mit dem vorhandenen md5 hash verifizieren lassen - da muss nicht extra noch einer erstellt werden. sorry

Antwort 4 von son_quatsch

Dateien hochzuladen und danach gleich wieder runterzuladen hab ich bewusst vermieden in der Annahme, dass der Datentransfer eine Rolle spielt und die Daten mehrere 100MBs umfassen könnten.

Ansonsten kann man mit allen gängigen Packprogrammen unter Windows genausogut sowas machen:
rar a -md5 -mdG -s -r dateiname.rar c:\hier\daten\*.*


MD5-Hasher für die Kommandozeile gibts ebenfalls wie Sand am Meer; zur Not kann man deren Ausgabe in je eine Datei schreiben und anschließend mittels FC vergleichen.

Spannend wird es bei Anomalitäten: Verbindungsabbruch, Host nicht erreichbar, Platz reicht nicht aus, Keine Rechte usw... Hier kann ein Skript wenig bis gar nicht reagieren. Zur Vermeidung von Endlosschleifen sollte man auch überlegen, ab wieviel Versuchen das ganze als gescheitert zu betrachten ist.

Antwort 5 von Jaja

Zitat:
Dateien hochzuladen und danach gleich wieder runterzuladen hab ich bewusst vermieden in der Annahme, dass der Datentransfer eine Rolle spielt und die Daten mehrere 100MBs umfassen könnten.


is schon richtig, aber wie du auch schon oben sagtest, müsste dann der server aktiv werden und einen hash erzeugen..

müsste jetzt also mal der fragesteller stellung beziehn und sagen, ob:

1. die übertragene datenmenge ins gewicht fällt,

2. die daten sehr groß sind (wie groß?),

3. die daten hauptsächlich "intern" textdaten sind. (lzma schafft da wie gesagt erstaunliche ergebnisse, rar natürlich auch, aber das ist nicht frei)

Zitat:
MD5-Hasher für die Kommandozeile gibts ebenfalls wie Sand am Meer;


ja, das von mir herausgesuchte md5sum hat aber ein unix kompatibles datenformat und kommandozeilenoptionen. naja mag nicht so wichtig sein.


Zitat:
Spannend wird es bei Anomalitäten


sehe ich auch so..

diese kommondozeilen tools wie sftp und co kann man aber über optionen steuern, sodass sie z.b. 3 versuche unternehmen.

allerdings muss das script in der lage sein bedingte sprünge auszuführen und exit (fehler) codes der programme abzufangen und auszuwerden.

geht das eigentlich bei ner windows/dos batch? mit wsh sicher, aber wer kann das schon?

Zitat:
Platz reicht nicht aus


da batch keine named pipes wie unter linux/unix kennt, ist das wohl ein großes problem, da bei jedem schritt die daten quasi kopiert werden (archiv erstellen, komprimierte fassung usw..)
als behelfslösung würde ich nach jedem schritt die vorher erstellte datei löschen.. im fehlerfall wie in meinem rezept nr. 2 (datei nicht korrekt übertragen) müsste dann allerdings der ganze quark wieder von vorn durchlaufen werden... hebt man hingegen die hochgeladene datei auf, braucht man durch das (zum testen) herunterladen derselben den doppelten platz..

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: