itanfaenger
Goto Top

Dateiabgleich über langsame Verbindung - nur geänderte Dateien übertragen

Hallo zusammen,

ich habe folgende Problemstellung und wollte mich schlau machen, wie ich das Ganze am besten angehe

Ich muß öfters Dokumente auf den Servern von Kunden aktualisieren. Diese setzen eine Software von uns ein (in PHP programmiert), dazu haben die Kunden einige hundert PDF-Dateien, welche teil der Software sind und regelmäßig aktualisiert werden müssen.
Bei einem Update der PDF-Dateien wird jeweils die alte PDF Datei mit einer neuen Version überschrieben, d.h. die Dateinamen bleiben dieselben.

Normalerweise könnte ich jetzt die ganzen PDF-Dateien (d.h. den kompletten Ordner) mit einer neuen Version überschreiben, somit liegen ja alle PDFs in der jeweilig neuesten Fassung vor. Das Problem ist nur, daß dies

a) händisch geschieht, ich hätte es gerne vollständig automatisiert gescriptet
b) dadurch die Datenmenge sehr groß ist, teilweise wird nach Datenvolumen abgerechnet, daher möchte ich nur die geänderten Dateien übertragen

Die für mich ideale Vorgehensweise wäre diese:

1. Ich starte auf dem Kundenserver ein Tool (das kann eine Batch-Datei, ein Kommandozeilentool oder ein PHP Programm sein), welches mir die aktuell vorhandenen Dateien in eine Datei oder Datenbank schreibt, mit Größe, Änderungsdatum und idealerweise mit einer Prüfsumme
2. ich übertrage die Datei und führe bei mir ein weiteres Tool aus, weches diese Datei mit meinem Datenbestand abgleicht und nur die geänderten bzw. neu hinzugekommenen PDF Dokumente in ein ZIP-Archiv packt
3. ich übertrage das ZIP mit den Änderungen wieder zurück zum Kunden
4. ein weiteres Tool sorgt dann dafür, daß die Dateien vom ZIP auf dem Kundenserver entpackt werden


Wie löse ich dieses Problem am besten vollautomatisiert? Habt Ihr Vorschläge für mich? Das Problem ist, es besteht nicht die ganze Zeit über eine Verbindung (VPN) zum Kundenserver, sondern eben nur, wenn ich ein Update einspiele.

Vorab herzlichen Dank für Eure Anregungen

Content-ID: 158054

Url: https://administrator.de/contentid/158054

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

60730
60730 05.01.2011 um 15:34:56 Uhr
Goto Top
moin,

  • Gegenfrage(n)

  • schonmal im Forum nach ftp batch/script gesucht?
  • Warum soll der Job "geteilt" werden?
  • wer pflegt die PDF Dateien - ausschliesslich Ihr oder auch der Kunde?

Im Prinzip hört sich dass doch so an, als ob Ihr einen Datenbestand der PDFfe bei euch habt und Ihr auch die Masterupdates derselben - ergo braucht Ihr doch keine Abfrage, welche Dateien in welcher Version auf dem Kundenserver sind, denn die kommen ja ursprünglich von euch.

  • btw: Pdffe zippen bringt zu 95% kaum den von Euch erwarteten Erfolg der Dateigrößenminimierung - im Gegenteil das erzeugt nur unnötig Last.
(u.a können nicht alle FTPServer und Clients abgebrochene Downloads wieder dort aufnehmen und fangen von wieder vorne an)

Ich würde alles auf einem System machen - Abfrage des Datenbestands und Abgleich mit aktuellem sowie den upload zum Ziel.

Gruß
ITAnfaenger
ITAnfaenger 05.01.2011 um 16:36:11 Uhr
Goto Top
Hallo nochmals,

Zitat von @60730:


  • schonmal im Forum nach ftp batch/script gesucht?

Ich habe vorab schon das Forum grob durchsucht, jedoch nach "Dateiabgleich" und nicht so wie von Dir vorgeschlagen. Ich war mir auch nicht richtig sicher, welche Kategorien im Forum hierfür die richtigen sind.

* Warum soll der Job "geteilt" werden?

Weil aufgrund der Sicherheitskonfiguration ich nicht gleichzeitig Zugriff auf unseren Dateipool und dem Kundenserver habe. Außerdem ist per VPN nur der Zugriff via Remotedesktop möglich, über FTP kann ich nichts übertragen, zumeist sind alle anderen Ports geblockt. Ich kann einzelne Dateien übertragen, darum wollte ich es auch in ein ZIP packen. Hier geht es mir nicht um eine mögliche Kompression der Daten (man kann ja auch ZIP Archive ohne Komprimierung erstellen), sondern lediglich darum, alle geänderten PDFs in nur einer einzigen Datei zu haben, da ich sonst jedes einzelne PDF händisch übertragen müsste.

* wer pflegt die PDF Dateien - ausschliesslich Ihr oder auch der Kunde?

Die Dateien werden nur von uns gepflegt. Teilweise durch externe Mitarbeiter. Daher weiß ich selbst vorab nicht immer, welche und wieviele Dateien sich geändert haben.


Im Prinzip hört sich dass doch so an, als ob Ihr einen Datenbestand der PDFfe bei euch habt und Ihr auch die Masterupdates
derselben - ergo braucht Ihr doch keine Abfrage, welche Dateien in welcher Version auf dem Kundenserver sind, denn die kommen ja
ursprünglich von euch.

Die Updateintervalle unterscheiden sich bei den Kunden. Was also beim Kunde A übertragen werden muß, muß nicht unbedingt bei Kunde B genau so sein

  • btw: Pdffe zippen bringt zu 95% kaum den von Euch erwarteten Erfolg der Dateigrößenminimierung - im Gegenteil das
erzeugt nur unnötig Last.
(u.a können nicht alle FTPServer und Clients abgebrochene Downloads wieder dort aufnehmen und fangen von wieder vorne an)

Ich würde alles auf einem System machen - Abfrage des Datenbestands und Abgleich mit aktuellem sowie den upload zum Ziel.

Das würde ich gerne, aber wie gesagt, habe ich nicht gleichzeitig Zugriff auf Quelle -> Ziel, sondern kann nur einzelne Dateien übertragen.


Ich hoffe, ich konnte nun mein Problem besser darstellen. Ich muß einmal den Ist-Stand beim Kunden ermitteln und dann diesen mit unserem Datenbestand abgleichen. Alle Änderungen sollen in einer einzigen Datei (ob ZIP oder was auch immer) zusammengefasst werden und möglichst automatisiert beim Kunden landen. Es wäre OK, wenn ich die Datei wieder zum Kunden übertrage und dort einen entsprechenden Import-Job händisch anschubse.

Nochmals danke für Eure Hilfe
60730
60730 05.01.2011 um 19:54:39 Uhr
Goto Top
Salü,
ziemlich abstrakt - ich versuchs mal abstrakt zu beschreiben und vermute es geht erstmal nur um Funktionierende Wege - nicht um die Details derselben (fertige Scripte)

  • alle Änderungen kommen von dir - ergo hast du vor dem upload der neuesten Änderungen ja den Stand der vorherigen. (Stichwort versionierung)
  • Wenn das mit dem Datenvolumen so problematisch ist - bau eine Iso und brenn die Daten
  • Andernfalls RDP bietet auch die Funktion "lokale Datenträger" auf dem Ziel zu verbinden. So hättest du gleichzeitig auf q & z Zugriff.
  • Wenn es nicht so ist - dann baue ein Script in einer deiner Lieblingssprachen, dass regelmäßig per Cron/AT Job den Datenbestand ausliesst und eine MD5 oder banaler Dateidatum in eine Liste schreibt und die an Euch gemailt wird.
(Das geht aber nurohne viel weitere Sicherheitslücken aufzureissen, wenn die einen lokalen Mailserver haben)
  • 7Zip kann man Kommandozeilenbasiert anweisen "irgendwas" zusammen zu einem Zip zu fassen.
  • Auf den Zielmaschinen kann ein weiteres Script laufen (so löse ich das auf jeden Fall) - dass es regelmäßig überprüft, ob eine bestimmte CD im Laufwerk liegt - dort überprüft, ob diese bereits verarbeitet wurde und wenn das nicht der Fall ist zu reagieren - Daten ins Ziel entzippen und was sonst noch nötig ist.

Gruß