AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Unterschiede in Binärdatei(en) separat speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiede in Binärdatei(en) separat speichern

Ein Thema von Stefanie · begonnen am 16. Jul 2008 · letzter Beitrag vom 16. Jul 2008
Antwort Antwort
Stefanie

Registriert seit: 12. Aug 2004
21 Beiträge
 
#1

Unterschiede in Binärdatei(en) separat speichern

  Alt 16. Jul 2008, 10:42
Hallo,
ich tausche mir mit einem Bekannten regelmäßig Daten über's Internet(FTP-Server) aus. Dabei handelt es sich immer wieder um die gleichen Dateien( z.T. um Datenbanken, gezippte Archive & Binär-Dateien), die nur jeden Tag ein wenig erweitert werden. Num sollte die Sache übers Internet so effizient wie möglich gehn, deshalb war meine Überlegung, nur die binären Veränderungen der Dateien auszulesen, ein sehr viel kleineres Image zu erstellen & nur noch dieses dann meinem Bekannten zu senden. Der hat ja die Daten vom Vortag und braucht nur noch das Image drüberspielen und ist updated. Im Forum hab ich so was ähnliches mit Bilder vergleichen gefundenLink.

Zitat:

1. Bilde die Differenz zwischen dem alten und dem neuen Bild (z.B. einfach die RGB-Werte voneinander abziehen) und speichere das Ergebnis in einem 24-Bit-Stream.
2. Wende auf diesen Stream ein verlustfreies Komprimierungsverfahren an.

Das andere Programm kann dann aus dem alten Bild und den Differenzdaten das neue Bild erstellen. Dort wo die Bilder gleich sind, erhälst du eine lange Kette mit Nullen, die von einer Komprimierung normalerweise fast auf die Länge 0 reduziert werden.
Nun hab ich mich mit so einer Sache überhaupt noch nicht beschäftigt, vielleicht gibt's ja sowas schon bzw. wie wäre es am sinnvollsten so etwas umzusetzen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Unterschiede in Binärdatei(en) separat speichern

  Alt 16. Jul 2008, 11:28
Hi,

das von Dir zitierte Verfahren setzt (würde ich mal vermuten) gleich große (Bild-Dateien) voraus.
Die Pixel-Differenzen = 0 (also viele gleiche Bildinhalte) lassen sich dann platzsparend komprimieren.

Dein Problem würde ich so angehen:

1) Checkdaten für alte Zip ermitteln (damit beim Einlesen von gleichen Dateien ausgegangen wird)
- Dateiname
- Speicherdatum
- Dateigröße
- EinePrüfsumme
2) das gleiche für die neue Zip
3) beides in einen Stream speichern
4) die Bytes der neuen Zip in den Stream schreiben
4a) ggf. Kennzeichen für gleichen Block und die Anzahl der Bytes ("=10000")
und die Daten weglassen
4b) ggf. Kennzeichen für neue Daten und die Anzahl der Bytes ("!500")
und die neuen Bytes anfügen

Beim Wiederherstellen können dann 10000 Bytes aus der alten Zip gelesen werden und die neuen 500 aus dem neue übertragenen Stream.
Ich weiß aber nicht, inwieweit Zips evtl. ihre gesamte Struktur verändern, wenn neue Daten angefügt werden.
Wenn es abwechselnd viele gleiche und auch unterschiedliche Abschnitte gibt wird das Gasnze sicher rsehr aufwändig.

stahli
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Unterschiede in Binärdatei(en) separat speichern

  Alt 16. Jul 2008, 11:37
Wenn es euch nur drum geht, die Dateien schneller zu kopieren/abzugleichen, dann nutzt doch dementsprechende Tools.

Windows:
SyncToc
WinMerge
WinSCP

Linux:
RSync

Tools abhängig von eurer Umgebung.
Ich nutze meistens WinSCP mit SSH/SFTP, da ich FTP als Protokoll nicht mag.
WinMerge und SyncToc ist eher für NetBios Freigaben geeignet.

In der Linuxwelt nutze ich sonst nur RSync.

Ihr könntet auch eine Sourcecodeverwaltung nutzen.
Subversion z.b. ist sehr praktisch für sowas.
Vor allem habt immer immer alle Stände und alte Versionen von etwas.

Bei den o.g. Lösungen solltest du nicht ZIPen, da du sonst keinen Erfolg hast.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Stefanie

Registriert seit: 12. Aug 2004
21 Beiträge
 
#4

Re: Unterschiede in Binärdatei(en) separat speichern

  Alt 16. Jul 2008, 11:57
Danke für die Antworten.
Uns geht es ausschließlich um die Menge der zu übertragenden Daten, denn bei DSL-Light mit einem Upload das der ISDN-Geschwindigkeit entspricht, ziehen sich z.B. 100MB gleich mal über ~3h. Deshalb der Ansatz nur die Änderungen zu übertragen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:43 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