ADAC OnlineShop Newsletteranmeldung
Alt 17.10.2011, 15:41:24   #1 (permalink)
Xot
-

ID: 413078
Lose-Remote

Reg: 26.11.2006
Beiträge: 442
Xot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekannt
Standard Delta File Change

Hallo zusammen,

Folgendes Problem:
Ich habe eine Client/Server Struktur. Auf dem Client befinden sich mehrere 100 Textdateien (10 - 100MB) die sich häufiger Ändern (Log-Files). Diese Files sollen immer sobald sie geändert wurden auf den Server übertragen werden.

Bisher werden die kompletten Dateien übertragen und auf dem Server ersetzt. Da in letzter Zeit die Übertragung immer länger dauert suche ich eine Möglichkeit nur den geänderten Teil zu übertragen.

Meine Überlegung bisher:
Die Files die sich auf dem Server befinden auch lokal in einem anderen Ordner aufbewahren. Wird nun ein Textfile im eigentlichen Ordner geändert Vergleiche ich beide Files und Übertrage nur die Änderung. Dies würde jedoch doppelt so viel Speicherplatz belegen. Da es hier um mobile Geräte geht, haben wir leider nur einen sehr begrenzten Speicherplatz zur Verfügung.

Hat jemand eine andere Lösung für dieses Problem?
Xot ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 17.10.2011, 16:35:43   #2 (permalink)
bekämpft die Mächte des Bösen
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.468
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

Keine Ahnung, ob ich das Problem jetzt richtig verstanden hab, aber wenn du nur übertragen willst, was sich geändert hat,
  • diff
  • übertragen
  • patch
Bedingt ein UNIX-Betriebssystem, wo diff und patch verfügbar sind und natürlich, dass die Datei, die du patcht vorher denselben Stand hatte, wie damals, wie du gedifft hast.

(Was hat das mit Java zu tun?)
theHacker ist gerade online   Mit Zitat antworten
Alt 17.10.2011, 17:06:12   #3 (permalink)
return void
Benutzerbild von ice-breaker

ID: 93995
Lose-Remote

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.026
ice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehenice-breaker genießt hohes Ansehen
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
(Was hat das mit Java zu tun?)
Das er es in Java implementieren muss, und somit keine Unix Tools zur Verfügung stehen. Möglicherweise es auch nicht möglich ist, einen Patch zu erstellen, da man den Vorher-Zustand der Datei nicht kennt.

Ich würde es ähnlich wie rsync machen: Die Datei in Chunks aufteilen und zu jedem Chunk den Hash (sha1) an den Server senden und der bestimmt dann, welche Chunks übertragen werden sollen. Wenn solche einzelne Chunk-Vergleiche im Gegensatz zu der wirklichen Übertragung schneller sein sollten, könnte man auch ggf. wie bei Quadtrees die Änderung immer weiter eingrenzen:
den Chunk nochmal halbieren und hashen, sollte nur bei einem die Prüfsume sich unterscheiden den gleichen Prozess wieder für den Chunk usw.


"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici
ice-breaker ist offline   Mit Zitat antworten
Alt 17.10.2011, 18:43:59   #4 (permalink)
Erfahrener Benutzer

ID: 50642
Lose-Remote

Reg: 30.04.2006
Beiträge: 263
alge sorgt für eine eindrucksvolle Atmosphärealge sorgt für eine eindrucksvolle Atmosphäre
Standard

Du sprichst da von Logfiles. Üblicherweise werden Logfiles ja nur insofern verändert, dass etwas angehängt wird.

Unter diesen Voraussetzungen würde ich folgenden einfachen Ablauf vorschlagen:
1) Das eigentliche Logfile liegt in einem seperaten Ordner.
2) Das schreibende Programm erstellt das Logfile im gewohnten Verzeichnis jedes mal neu.
3) Sobald ein Logfile nun angelegt wurde, wird es gelesen und gelöscht. Die gelesenen Daten werden an das Logfile im seperaten Ordner angehängt. Gleichzeitig werden die Daten zum Server geschickt. Dieser hängt die Daten an die entsprechende Server-Logdatei an.

Wenn es kritische Daten sind, brauchst du noch ein Protokoll um zu erkennen, ob am Server alle Daten angekommen sind.
alge ist gerade online   Mit Zitat antworten
Alt 17.10.2011, 19:59:53   #5 (permalink)
Xot
-

ID: 413078
Lose-Remote

Reg: 26.11.2006
Beiträge: 442
Xot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekanntXot ist jedem bekannt
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
Die Datei in Chunks aufteilen und zu jedem Chunk den Hash (sha1) an den Server senden und der bestimmt dann, welche Chunks übertragen werden sollen.
Dieser Ansatz gefällt mir, ich werde mal schauen auf welche Datengrösse ich das runterbreche um die beste Performance zu erhalten.

Zitat:
Zitat von alge Beitrag anzeigen
Du sprichst da von Logfiles. Üblicherweise werden Logfiles ja nur insofern verändert, dass etwas angehängt wird.
Angehängt stimmt bisher, jedoch werden diese auch auf dem Client benötigt. Desweiteren soll das Ganze später auf weitere Dateitypen ausgeweitet werden, daher fällt diese Option weg.
Xot ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[CSS/PHP/HTML] *erledigt* CSS-file mit weiterem file 'dynamisch' erweitern justme69 Programmierung 7 28.04.2006 20:51:34


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11:57 Uhr.