Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Dateien austauschen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Mon Sep 11, 2006 6:28 am    Post subject: Dateien austauschen Reply with quote

Hallo zusammen,

ich bin auf der Suche nach ner Software, welche zentral auf einem Rechner läuft und für das Abholen und Zustellen von Dateien zuständig ist.
D.h. sie sollte in vordefinierbaren Abständen auf entfernten Rechnern (Linux, Unix, Windows) nachschauen ob Dateien zum Transfer bereitstehen, diese nach dem FIFO-Prinzip abholen und dem entsprechenden Ziel zustellen. Dabei sollte jeder Vorgang in einem Logfile Dokumentiert werden oder in ner DB.
Wenn der entfernte Rechner nicht erreichbar ist, wird einfach später probiert und die evtl. auszuliefernden Daten zwischengepuffert.

Das Ganze hätte ich mir eigentlich schon selbst gebastelt. Leider hab ich das Problem, das der Win FTP-Server bei den Dateizeiten nicht die Sekunden anzeigt, da wirds dann schwierig, die Reihenfolge nicht zu verlieren.
Wenn Windows da außen vor wäre, hätte ich vielleicht ne Mischung aus SSH und SFTP oder SCP genommen in Verbindung mit Key-Auth.
Mit sowas hab ich eigentlich recht gute Erfahrungen gemacht.

Kann mir da jemand nen Tip geben ?
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Mon Sep 11, 2006 7:29 am    Post subject: Reply with quote

Also das mit den Sekunden verstehe ich nicht ganz.

Ich würde es wie folgt machen (wenn ich es richtig verstanden habe).

Auf dem Client nen SSH-Server aufmachen und auf dem Server die Keys hinterlegen. Auf dem Server folgendes schematisches Script starten:

- leeres Verzeichnis mit Timestamp auf dem Server erzeugen (z.B. $dir="2006-09-11-06-30-00")
- connecte alle Clients und verschiebe deren Dateien im Ausgang auf den Server in $dir
- nun durchlaufe alle Verzeichnisse auf dem Server, älteste zuerst und versuche auf Zielclient zu verschieben, je Verzeichnis
-- wenn Zielclient erreicht
--- verschiebe Dateien auf Zielclients
--- wenn Verzeichnis leer, dann Verzeichnis löschen
- nach Wartezeit, beginne von vorn

D.h. die "Timestamp"-Verzeichnisse existieren solange bis die Dateien ausgeliefert wurden. Wird nun auf dem Client eine Datei abgelegt, die den gleichen Namen wie eine ältere Version hat, landet diese zwar zwei mal auf dem Server, in unterschiedlichen Verzeichnissn, aber durch das chronologische Abarbeiten wird dann die ggf. ältere Version durch die neuere auf dem Zielclient überschrieben. Möchte man das nicht kann man an den Dateinamen noch den Timestamp anhängen. Auch sollte man pro sendenden Client einen "Eingangsordner" auf dem empfangenden Client haben, um vorzubeugen das Clients die Dateien gleichen Namens senden sich nicht gegenseitig überschreiben.
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Mon Sep 11, 2006 7:43 am    Post subject: Reply with quote

So ähnlich dachte ich auch,

aber unser Windowsadmin hat das noch nicht hinbekommen, dass man sich auf Win per SSH mit nem Schlüssel authentifizieren kann. (Keine Ahnung warum das nicht geht.)

Als nächstes dachte ich an FTP, aber wie gesagt, kann ich da nicht sehen, welche Datei zuerst geschrieben worden ist, wenn dieses innerhalb einer Minute geschehen ist.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Mon Sep 11, 2006 9:48 am    Post subject: Reply with quote

tazinblack wrote:
Als nächstes dachte ich an FTP, aber wie gesagt, kann ich da nicht sehen, welche Datei zuerst geschrieben worden ist, wenn dieses innerhalb einer Minute geschehen ist.

Das brauchst Du doch auch gar nicht sehen, wenn der Server die Dateien über sich selbst zum Empfänger verschiebt.
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Mon Sep 11, 2006 6:03 pm    Post subject: Reply with quote

Na doch !

der Client schreibt mehrere Dateien kurz hintereinander.
Jetzt kommt der Server und will sie abholen um sie danach zuzustellen. Woher soll der jetzt wissen, welche dieser Dateien die älteste ist und damit zuerst verarbeitet werden muss ?

Wie willst Du das machen ohne ssh ? Wie gesagt liefert ftp nur Stunden und Minuten und sich per Schlüssel auf ner Win Kiste anzumelden klappt irgendwie nicht.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
Hilefoks
l33t
l33t


Joined: 29 Jan 2003
Posts: 849
Location: Emden / Deutschland

PostPosted: Mon Sep 11, 2006 7:35 pm    Post subject: Reply with quote

Ist die genaue Reihenfolge den so wichtig? Wenn ja, könnte man die Dateien nicht mit einem Timestamp im Dateinamen speichern - und diesen vorm verschieben auf das Ziel wieder aus dem Dateinamen löschen?

MfG, Hilefoks
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 6:16 am    Post subject: Reply with quote

Hilefoks wrote:
Ist die genaue Reihenfolge den so wichtig? Wenn ja, könnte man die Dateien nicht mit einem Timestamp im Dateinamen speichern - und diesen vorm verschieben auf das Ziel wieder aus dem Dateinamen löschen?

MfG, Hilefoks


Jap, die Reihenfolge ist wichtig ! Mit dem Timestamp das wäre ne Möglichkeit, aber irgendwie hoffe ich noch auf ne Lösung, wo ich sagen kann, genau das ists. Vielleicht sollte ich doch mal versuchen, ob ich das mit ssh und Win hinbekomme.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
slick
Bodhisattva
Bodhisattva


Joined: 20 Apr 2003
Posts: 3495

PostPosted: Tue Sep 12, 2006 6:57 am    Post subject: Reply with quote

Also ich kann echt noch nicht nachvollziehen warum Du die Sekunden brauchst. Versuchs mir mal bitte zu erklären. (Ob es dann nun ssh, smb oder ftp etc. ist in meinem Beispiel egal.)

So wie ich das verstanden habe soll es so laufen:

- Client kopiert folgende Dateien in seinen Ausgang:
foo.txt (Timestamp: 12.09.2006 - 8:30:45)
foo2.txt (Timestamp: 12.09.2006 - 8:33:45)
foo3.txt (Timestamp: 12.09.2006 - 8:38:45)

- Server zieht sich diese Dateien

- Server verschiebt diese Dateien auf Empfänger (jetzt ist Timestamp Zeitpunkt des Schreibens auf den Client)
foo.txt (Timestamp: 12.09.2006 - 8:45:00)
foo2.txt (Timestamp: 12.09.2006 - 8:45:01)
foo3.txt (Timestamp: 12.09.2006 - 8:45:02)

In der Zwischenzeit hat der Ausgangsclient eine neuere Version von foo.txt in den Ausgang kopiert:
foo.txt (Timestamp: 12.09.2006 - 8:46:19)

Diese landet dann beim nächsten Durchgang auf dem Empfangenden und entweder die überschreibt die erste Version oder sie wird um den Timestamp (Zeitpunkt des Lesens vom sendenden Client) ergänzt:
foo.txt (Timestamp: 12.09.2006 - 9:00:00) oder foo-06-09-12-09-00-00.txt (Timestamp: 12.09.2006 - 9:00:00)
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 8:23 am    Post subject: Reply with quote

slick wrote:
Also ich kann echt noch nicht nachvollziehen warum Du die Sekunden brauchst. Versuchs mir mal bitte zu erklären. (Ob es dann nun ssh, smb oder ftp etc. ist in meinem Beispiel egal.)


Stell Dir vor der Client stellt in kurzer Zeit (innerhalb einer Minute) 100 Dateien zum Abholen bereit.
Diese müssen aber in der Reihenfolge, in der sie erzeugt worden sind abgearbeitet werden.
Jetzt kommt der Server holt die 100 ab und stellt sie auf den Zielclient.
Wie willst Du jetzt sicherstellen, dass die Datei, die zuerst erzeugt worden ist auch zuerst verarbeitet wird und nicht alles willkürlich durcheinander.

Beispiel :
Stell Dir vor, es handelt sich um Lagerbewegungen. Du stellst einen Karton 1 auf Platz A im Lager. Dann eine Box 2 auf Platz C.
Um jetzt genügend Platz für einen besonders langen Karton 3 zu haben stellst Du Karton 1 von Platz A nach Platz D.
Jetzt kann Du für Karton 3 die Plätze A,B,C nutzen.
Wenn diese Buchungen durcheinander kommen, stimmt irgendwann deine Lagerliste auf dem Rechner nicht mehr mit dem Bestand überein.

Aus diesem Grund ist die Reihenfolge wichtig. Ist hoffe, das ist jetzt nachvollziehbar !
Es handelt sich nicht um irgendwelche Dokumente sondern um ne einfache Art von Schnittstelle zwischen verschiedenartigen Systemen.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
STiGMaTa_ch
Veteran
Veteran


Joined: 28 Dec 2004
Posts: 1686
Location: Rüti ZH / Schweiz

PostPosted: Tue Sep 12, 2006 9:04 am    Post subject: Reply with quote

tazinblack wrote:
Stell Dir vor der Client stellt in kurzer Zeit (innerhalb einer Minute) 100 Dateien zum Abholen bereit.

Ich kapiere immer noch nicht ganz wozu dir dann die Sekunden wichtig sind :oops:

Wenn du mehr als 60 Dateien pro Minute erstellst, dann haben zwangsläufig mehrere Dateien die selbe Stunde:Minute:Sekunde. Denn bei 100 Dateien pro Minute wird etwas weniger als die hälfte der Dateien den selben Zeitstempel haben wie eine andere Datei. Du muesstest also wenn schon einen Timestamp drinn haben der auf Milisekunden runterbricht oder ein anderer Teil im Dateinamen wird für die Identifikation verwendet.

Und wenn du anhand dieses anderen Teiles des Dateinamens eruieren kannst welche Datei zuerst da war, dann solltest du dieses Schema doch auch für alle 100 Dateien anwenden können.

Oder übersehe ich da was?

Beispiel:
Um 15:32:12 werden foo001 und foo002 erzeugt. Beide haben den selben Timestamp. Das bedeutet, du musst über einen anderen Mechanismus in Erfahrung bringen welche Datei zuerst da war. Und das geht nunmal nur ueber den Dateinamen (In diesem Fall 001 und 002). Warum kannst du dann auf dem Zielsystem nicht einfach anhand dieser Merkmale die Dateien verarbeiten?

Lieber Gruss
STiGMaTa
_________________
Ich bin Schuldknappe. Das bedeutet ich bin immer an allem Schuld. Und das nicht zu knapp! | Der alltägliche Familienwahnsinn auf meinem BLOG
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Tue Sep 12, 2006 9:40 am    Post subject: Reply with quote

STiGMaTa_ch wrote:
tazinblack wrote:
Stell Dir vor der Client stellt in kurzer Zeit (innerhalb einer Minute) 100 Dateien zum Abholen bereit.

Ich kapiere immer noch nicht ganz wozu dir dann die Sekunden wichtig sind :oops:

Wenn du mehr als 60 Dateien pro Minute erstellst, dann haben zwangsläufig mehrere Dateien die selbe Stunde:Minute:Sekunde. Denn bei 100 Dateien pro Minute wird etwas weniger als die hälfte der Dateien den selben Zeitstempel haben wie eine andere Datei. Du muesstest also wenn schon einen Timestamp drinn haben der auf Milisekunden runterbricht oder ein anderer Teil im Dateinamen wird für die Identifikation verwendet.

Und wenn du anhand dieses anderen Teiles des Dateinamens eruieren kannst welche Datei zuerst da war, dann solltest du dieses Schema doch auch für alle 100 Dateien anwenden können.

Oder übersehe ich da was?

Beispiel:
Um 15:32:12 werden foo001 und foo002 erzeugt. Beide haben den selben Timestamp. Das bedeutet, du musst über einen anderen Mechanismus in Erfahrung bringen welche Datei zuerst da war. Und das geht nunmal nur ueber den Dateinamen (In diesem Fall 001 und 002). Warum kannst du dann auf dem Zielsystem nicht einfach anhand dieser Merkmale die Dateien verarbeiten?

Lieber Gruss
STiGMaTa


Ich würde es auch so machen:

foo-jahr-monat-tag-laufende_nummer.endung.

Damit hast du das ganze Problem nicht und verschiebst einfach immer alles und trotzdem kann sich die Reihenfolge nicht verändern.

Nachteil: Du musst es hinbekommen, dass die Ausgabeprogramme auf den Clienten nen Dateinamen dynamisch erzeugen.

Tobi
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 11:07 am    Post subject: Reply with quote

Ich gebe zu das mit den Sekunden max 60 pro Minute möglich sind.
Wobei ich z.Zt. mit 2-3 pro Minute rechne.

Natürlich ist das mit der Sequenz besser !
Werd ich wohl machen !
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
forrestfunk81
Guru
Guru


Joined: 07 Feb 2006
Posts: 567
Location: münchen.de

PostPosted: Tue Sep 12, 2006 1:58 pm    Post subject: Reply with quote

Hi,

weiß nicht ob du das noch brauchst, aber wenn du doch nen ssh Server auf Windows aufsetzten wills, versuch das doch mit cygwin.
_________________
# cd /pub/
# more beer
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 3:45 pm    Post subject: Reply with quote

forrestfunk81 wrote:
Hi,

weiß nicht ob du das noch brauchst, aber wenn du doch nen ssh Server auf Windows aufsetzten wills, versuch das doch mit cygwin.


Das werd ich als erstes probieren !
Danke !
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Tue Sep 12, 2006 6:24 pm    Post subject: Reply with quote

du solltest dabei auch an Spezialfälle denken...

soweit ich es verstehe holt eine zentrale Maschine die Dateien von den umliegenden Maschinen ab, korrekt?
Was aber wenn gerade während dieser Abholprozess läuft von Client-A eine neue Datei erstellt wird?

Entweder wird sie nicht beachtet und wird im nächsten Durchlauf mitgenommen - Glück gehabt
oder sie wird mitgenommen ist aber zu diesem Zeitpunkt noch gar nicht fertig erstellt - Datensalat, Pech gehabt
oder aber der Fetchprozess will sie holen darf aber nicht weil sie noch vom Erstellprozess gelockt ist und fällt auf die Nase - Pech gehabt

Läßt sich am simpelsten dadurch umgehen alle neu erstellten Daten erstmal in einem /holmich/tmp-Ordner zu erstellen und erst wenn die Datei komplett geschrieben wurde mittels move datei .. in das eigentliche Verzeichnis aus dem geholt wird verschoben wird. Minimiert das Zeitfenster für obige Fehler auf ein absolutes Minimum.
Außerdem solltest du natürlich nach dem Abholen auf dem Server noch checken ob die Dateien richtig übertragen wurden - i.d.R. genügt hier ein Vergleich der Dateigröße auf Client und Server.
Und natürlich nicht das Löschen 'drüben' vergessen, sonst holst du die Daten mehrfach.
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 6:59 pm    Post subject: Reply with quote

Think4UrS11 wrote:
du solltest dabei auch an Spezialfälle denken...

soweit ich es verstehe holt eine zentrale Maschine die Dateien von den umliegenden Maschinen ab, korrekt?
Was aber wenn gerade während dieser Abholprozess läuft von Client-A eine neue Datei erstellt wird?

Entweder wird sie nicht beachtet und wird im nächsten Durchlauf mitgenommen - Glück gehabt
oder sie wird mitgenommen ist aber zu diesem Zeitpunkt noch gar nicht fertig erstellt - Datensalat, Pech gehabt
oder aber der Fetchprozess will sie holen darf aber nicht weil sie noch vom Erstellprozess gelockt ist und fällt auf die Nase - Pech gehabt

Läßt sich am simpelsten dadurch umgehen alle neu erstellten Daten erstmal in einem /holmich/tmp-Ordner zu erstellen und erst wenn die Datei komplett geschrieben wurde mittels move datei .. in das eigentliche Verzeichnis aus dem geholt wird verschoben wird. Minimiert das Zeitfenster für obige Fehler auf ein absolutes Minimum.
Außerdem solltest du natürlich nach dem Abholen auf dem Server noch checken ob die Dateien richtig übertragen wurden - i.d.R. genügt hier ein Vergleich der Dateigröße auf Client und Server.
Und natürlich nicht das Löschen 'drüben' vergessen, sonst holst du die Daten mehrfach.


Jap, sowas beschäftigt mich auch ! Neue Dateien werden erst mit Endung .tmp geschrieben und erst wenn sie fertig sind umbenannt. Und der Abholprozess beachtet .tmp-Dateien nicht. Für die Prüfung auf Dateikoruption während der Übertragung verwende ich normalerwiese sum. Keine Ahnung, ob cygwin unter Win das bietet. Mal sehen.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Tue Sep 12, 2006 7:06 pm    Post subject: Reply with quote

Klar, Prüfsummen jeder Art sind deutlich besser als ein simpler Größenvergleich.
Ich habe nur oft das Problem bei solchen Geschichten das 'drüben' nur ein FTP-Zugang vorhanden ist und selbst da muß ich manchmal noch betteln damit ein ls funktioniert - jedenfalls bis die erste defekte Datei übertragen wurde, dann gehts meistens schnell :roll:
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Tue Sep 12, 2006 7:28 pm    Post subject: Reply with quote

Think4UrS11 wrote:
jedenfalls bis die erste defekte Datei übertragen wurde, dann gehts meistens schnell :roll:

*lol*

Woher kenn ich das !
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum