DE69534292T2 - Verfahren und System zur Dateifernübertragung - Google Patents

Verfahren und System zur Dateifernübertragung Download PDF

Info

Publication number
DE69534292T2
DE69534292T2 DE69534292T DE69534292T DE69534292T2 DE 69534292 T2 DE69534292 T2 DE 69534292T2 DE 69534292 T DE69534292 T DE 69534292T DE 69534292 T DE69534292 T DE 69534292T DE 69534292 T2 DE69534292 T2 DE 69534292T2
Authority
DE
Germany
Prior art keywords
data
key
block
file
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69534292T
Other languages
English (en)
Other versions
DE69534292D1 (de
Inventor
Charles F. Norfolk Pyne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Laplink Software Inc Kirkland
Laplink Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22670854&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69534292(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Laplink Software Inc Kirkland, Laplink Software Inc filed Critical Laplink Software Inc Kirkland
Publication of DE69534292D1 publication Critical patent/DE69534292D1/de
Application granted granted Critical
Publication of DE69534292T2 publication Critical patent/DE69534292T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1787Details of non-transparently synchronising file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

  • Die vorliegende Erfindung bezieht sich im allgemeinen auf Computer-Datenübertragung und insbesondere auf ein Verfahren und eine Vorrichtung zur Reduzierung der für die Aktualisierung von Dateien benötigten Zeit, die sich auf einem entfernt aufgestellten Computer befinden.
  • In der Computer-Datenübertragungstechnik ist die Daten-Übertragungsrate zwischen einem Computer und anderen Peripherie-Vorrichtungen sehr wichtig. Die Möglichkeit, schnell und präzise Daten zwischen zwei Personalcomputern zu übertragen, ist angesichts der gesteigerten Verwendung von Personalcomputern von besonderem Interesse. Oft werden die in einen tragbaren Computer eintretenden Daten letzten Endes zu dem Heim- oder Büro-Personalcomputer eines Anwenders übertragen. Computerspezialisten suchen fortwährend nach Übertragungsprotokollen, welche die für die Übertragung von Daten erforderliche Zeit verringern, ohne die Zuverlässigkeit der übertragenen Daten zu beeinträchtigen.
  • Ein herkömmliches Verfahren, um Daten zwischen Computern, insbesondere Personalcomputern zu übertragen, betrifft die Zusammenschaltung eines Datenbusses in einem Sendecomputer mit einem Datenbus in einem Empfangscomputer. Dies kann durch Verbindung der seriellen, parallelen oder ähnlichen Übertragungsschnittstellen eines jeden Computers durch eine Schnittstellenverbindung, wie etwa ein Kabel oder über einen Datenweg unter Verwendung von Modems erfolgen. Bei der seriellen Übertragung werden die Daten zu einem Zeitpunkt mit einem Bit übertragen. Serielle Übertragungen arbeiten gut für die Übertragung von Daten über große Distanzen, und insbesondere mit Modems, die zwei Computer unter Verwendung einer Telefonleitung verbinden. Jedoch kann bei Verwendung von seriellen Übertragungen die zur Übertragung von Daten erforderliche Zeit signifikant sein, insbesondere für größere Dateien. Bei der Datenübertragung zwischen zwei vergleichsweise nahen Vorrichtungen werden oft parallele Datenübertragungen verwendet. Parallele Datenübertragung ist die gleichzeitige parallele Übertragung einer Anzahl von Datenbits, z.B. 8-Bit, unter Verwendung eines Mehrbit-Datenwegs.
  • Computersoftware-Unternehmen untersuchen fortwährend wirksamere Verfahren zur Übertragung von Daten, um die Daten-Übertragungszeiten zu reduzieren. Zwei verbreitete Gebiete, auf die das Hauptaugenmerk gerichtet wurde, waren die Erhöhung der Daten-Übertragungsraten und die Einbeziehung von Datenkompressions-Methoden, um die Datengrößen zu reduzieren. Verbesserungen der Daten-Übertragungsraten wurden bei der seriellen Datenübertragung durch Erhöhung der Geschwindigkeit, mit der Modems Daten übertragen, verwirklicht und bei der parallelen Datenübertragung durch Erhöhung der Anzahl von Bits, die gleichzeitig übertragen werden können. Eine beispielhafte Technologie, die die letztere Technik einschließt, ist in US-Patent Nr. 5,261,060 mit dem Titel „ Acht-Bit -Parallel-Datenübertragungsverfahren und -vorrichtung" beschrieben und auf den Rechtsnachfolger der vorliegenden Erfindung übertragen. Datenkompressionsmethoden reduzieren die Größe einer zu übertragenden Datei mit unterschiedlichen Mitteln zur Verdichtung von Information. Eine beispielhafte herkömmliche Kompressionstechnik, Schlüsselwort-Codierung genannt, ersetzt Wörter, die häufig auftreten, z.B. das Wort „das" durch eine 2-Byte-Belegungsdarstellung eines jeden Worts. Nachdem die komprimierten Daten von einem entfernt aufgestellten Computer empfangen worden sind, werden die Daten dekomprimiert, um eine Darstellung des ursprünglichen Inhalts der Datei zu bilden.
  • Ein neuerer Ansatz zur Verringerung der zur Übertragung einer Datei erforderlichen Zeit hat erkannt, daß ein Empfangscomputer oftmals eine Datei, d.h. eine Referenzdatei aufweist, die ähnlich, vielleicht sogar identisch zu einer zu übertragenden Quelldatei ist. Beispielsweise kann die Quelldatei einfach Text von der Referenzdatei mit nur wenigen geänderten Wörtern oder Sätzen enthalten. Eher als ein Original oder eine komprimierte Darstellung der gesamten Quelldatei zu senden, identifizieren Datei-Übertragungsverfahren, welche diesen Ansatz verwenden, die Unterschiede zwischen den beiden Dateien und übertragen dann nur die Unterschiede an den Empfangscomputer. Nach Empfang wird die die Unterschiede umfassende Information verwendet, um die Referenzdatei auf dem Empfangscomputer zu aktualisieren, wodurch eine präzise Kopie der Quelldatei reproduziert wird. Ein Ansatz zu Verringerung der zur Aktualisierung einer Datei erforderlichen Zeit ist in der am 13. 10. 94 veröffentlichten PCT-Anmeldung Nr. WO 94/23377 beschrieben, welche ein Verfahren zur Aktualisierung einer früheren Version einer Datei beschreibt, die geändert wurde. Sowohl die frühere als auch die aktualisierte Datei müssen sich auf demselben Computer befinden. Ein anderer Ansatz zur Reduzierung des zur Aktualisierung einer Datei erforderlichen Zeitbetrages ist in dem Europäischen Patent Nr. EP-A-O 541 281 beschrieben, welches ein Datei-Archivierungssystem beschreibt, das mehrere Tabellen von Signaturen und Bitmaps verwendet, um permanente archivierbare Datensätze zu bilden. Nur geänderte Abschnitte der in diesen Datensätzen enthaltenen Daten müssen übertragen werden, was zu einer zweckmäßigeren Dateiarchivierung führt. Die vorliegende Erfindung ist auf ein verbessertes Verfahren zur Identifizierung und Übertragung von Revisionen zwischen einer Quelldatei und einer Referenzdatei gerichtet, um eine genaue Kopie der Quelldatei auf einem entfernt aufgestellten Computer zu bilden.
  • Die vorliegende Erfindung ist ein Daten-Übertragungsverfahren, das die Unterschiede zwischen einer Quelldatei, welche sich auf einem Sendecomputer befindet und einer Referenzdatei, welche sich auf einem Empfangscomputer befindet und die zu den die Quelldatei umfassenden Daten ähnliche Daten aufweisen kann, identifiziert und extrahiert. Die Computer sind über eine Computer-Datenschnittstelle verbunden. Das Verfahren umfasst die Schritte: (a) Aufteilen der Referenzdatei in eine Vielzahl von Datenblöcken und Zuordnen eines Schlüsselwerts, der repräsentativ für die Daten in jedem Block ist, zu jedem Datenblock; (b) Identifizieren von Datenblöcken in der Quelldatei und Verwenden der Schlüsselwerte, um die Datenblöcke von der Referenzdatei mit den Datenblöcken von der Quelldatei zu vergleichen, Senden einer Meldung der Übereinstimmung an den Empfangscomputer in Fällen, bei denen eine Übereinstimmung zwischen einem Datenblock von jeder Datei gefunden wird, so dass der Datenblock, der durch die Übereinstimmung gemeldet wird, nicht an den Empfangscomputer übertragen werden muss.
  • Gemäß anderen Aspekten der Erfindung umfasst der Schritt des Identifizierens von Datenblöcken in der Quelldatei den Schritt des Berechnens eines Quellschlüssels für jeden Datenblock, welcher dann mit Schlüsselwerten von der Referenzdatei verglichen wird.
  • Gemäß noch weiteren Aspekten der Erfindung wird einer anfänglicher Datenblock von der Quelldatei identifiziert und von dem anfänglichen Datenblock ein Quell-Schlüssel berechnet. Falls für den anfänglichen Block keine Übereinstimmung gefunden wird, umfasst das Verfahren die Schritte: (i) Übertragen eines Daten-Bytes von dem anfänglichen Block an den Empfangscomputer; und (ii) Identifizieren eines nachfolgenden Datenblocks von der Quelldatei, umfassend den anfänglichen Datenblock, abzüglich des übertragenen Bytes, und ein Daten-Byte von der Quelldatei.
  • Gemäß anderen Aspekten der Erfindung umfasst das Verfahren den Schritt des Übertragens der den Datenblöcken in der Referenzdatei zugeordneten Schlüsselwerte an den Sendecomputer. Ferner wird der Schlüsselwert für einen Datenblock berechnet durch Multiplizieren der Bytes in dem Block mit einem oder mehreren Multiplikatoren, wobei der Wert des Multiplikators von der Position eines vorliegenden Bytes in dem Block abhängig ist, und Summieren der Ergebnisse der Multiplikations-Operationen.
  • Die vorigen Aspekte und viele der zugehörigen Vorteile dieser Erfindung werden einfacher zugänglich, da dasselbe unter Bezugnahme auf die folgende detaillierte Beschreibung besser verständlich wird, wenn sie in Verbindung mit den beigefügten Zeichnungen benutzt wird wird, wobei:
  • 1 ein Blockdiagramm eines Daten-Übertragungsnetzwerks ist, umfassend einen Sendecomputer und einen Empfangscomputer, wobei auf jedem ein Daten-Übertragungsprogramm abläuft, das zur Aktualisierung von Daten gemäß der Erfindung verwendet werden kann;
  • 2 ein Blockdiagramm ist, das die Darstellung einer Referenzdatei beschreibt, die Ähnlichkeiten zu einer zu übertragenden Quelldatei aufweisen kann, unter Verwendung einer Anzahl von Schlüsseln, wobei jeder Schlüssel einem Datenblock in der Referenzdatei zugeordnet und repräsentativ für diesen ist;
  • 3 ein Blockdiagramm ist, das die Auswahl von Datenblöcken in der Quelldatei auf einer Schiebefensterbasis darstellt;
  • 4 ein Flussdiagramm einer beispielhaften Routine zur Implementierung eines Daten-Übertragungsprogramms gemäß der Erfindung ist;
  • 5 ein Flussdiagramm eines ersten beispielhaften Unterprogramms zur Bestimmung der Schlüsselwerte für jeden Datenblock in der Referenzdatei ist;
  • 6 ein Flussdiagramm einer beispielhaften Routine gemäß der Erfindung ist, zur Bestimmung der Unterschiede in den Quell- und Referenzdateien und Übertragung dieser Unterschiede an den Empfangscomputer, wo eine Zieldatei gebildet wird;
  • 7A ein zweites beispielhaftes Verfahren darstellt, zur Bestimmung von Schlüsselwerten für jeden Datenblock in der Referenzdatei;
  • 7B ein Flussdiagramm eines Unterprogramms ist, zur Implementierung des Verfahrens zur Bestimmung der in 7A dargestellten Schlüsselwerte; und
  • 7C ein Flussdiagramm eines Unterprogramms ist, zur Bestimmung des Wertes eines Schlüssels, der einem aktuellen Datenblock in der Quelldatei zugeordnet ist.
  • Dateifernübertragungs-Anwendungen umfassen oft eine Situation, wo ein Empfangscomputer bereits eine Datei enthält, die ähnlich oder vielleicht sogar identisch zu einer zu übertragendend Datei ist. Beispielsweise kann die zu übertragende Datei eine Revision einer Textdatei mit nur einigen geänderten Wörtern oder Sätzen sein. Die Erfindung ist ein Datei-Übertragungsverfahren, das die Unterschiede zwischen den beiden Dateien identifiziert und extrahiert, und nur diese Unterschiede an den Empfangscomputer überträgt. Für ähnliche Dateien können sich aus dem Datei-Übertragungsverfahren Kompressionsraten ergeben, welche die durch herkömmliche Kompressionsverfahren erzielten Kompressionsraten weit übersteigen.
  • 1 stellt eine typische Betriebsumgebung dar, in der die Erfindung verwendet werden kann. Ein Sendecomputer 20 ist mit einem Empfangscomputer 22 über ein Datenübertragungsglied 24 verbunden. Die Computern sind von einem Typ, der in der Technik allgemein bekannt ist, wie etwa Personal- oder Laptopcomputer. Das Datenübertragungsglied kann irgendein bekanntes Mittel zur Übertragung von Daten zwischen den beiden Computern sein, wie etwa die LAPLINK®-Serie von Datenübertragungsvorrichtungen, hergestellt und vertrieben von Traveling Software, Inc., dem Rechtsnachfolger der vorliegenden Erfindung.
  • Der Sendecomputer 20 weist im allgemeinen einen Prozessor 26, einen Speicher 28 und eine Anzahl von Übertragungsschnittstellen 30 auf. Der Speicher, umfassend Speicher mit beliebigem Zugriff (RAM), Nur-Lese-Speicher (ROM) und Speicher externer Systeme, ist mit dem Prozessor 26 durch einen Daten/Adress-Bus 32 verbunden. Die Übertragungsschnittstellen sind mit dem Prozessor durch einen Datenbus 34 verbunden. Die Übertragungsschnittstellen 30 umfassen parallele und serielle Schnittstellen als auch andere Eingabe/Ausgabe-Techniken, umfassend PCMCIA-Kartentechnik, die es ermöglichen mittels des Sendecomputers Daten zu senden und aufzunehmen. Der Empfangscomputer 22 ist ähnlich dem Sendecomputer und umfasst einen Prozessor 36, einen Speicher 38, Übertragungsschnittstellen 40, Daten/Adress-Leitungen 42 und einen Datenbus 44. Obwohl zur Vereinfachung der Beschreibung ein Computer Sendecomputer genannt wird und der andere Empfangscomputer genannt wird, sind die Computer allgemein untereinander austauschbar.
  • Um eine Datenübertragung zu verwirklichen, enthalten der Sende- und Empfangscomputer Computerprogramm-Steuermittel, die beispielsweise im RAM gespeichert sind und von den Prozessoren eines jeden Computers ausgeführt werden. Bei einer Ausführungsform der Erfindung sind die Steuermittel des Sendecomputers und des Empfangscomputers in einem einzelnen Datei-Übertragungsprogramm 45 kombiniert, das sich auf jedem Computer befindet. Auf diese Art und Weise kann jeder Computer als ein Sende- oder Empfangscomputer arbeiten. Augrund der Erfordernisse des Handshakes werden Kopien des Datei-Übertragungsprogramms 45, die sich auf jedem Computer befinden, vorzugsweise gleichzeitig ausgeführt. Dies ermöglicht eine Voll-Duplex-Übertragung, d.h. eine gleichzeitige Übertragung in jeder Richtung. Die Erfindung kann auch bei Halb-Duplex-Datenübertragungen verwendet werden, obwohl nicht so effizient.
  • Im Hinblick auf eine klare Darstellung in dieser Beschreibung, wird überall in der Detaillierten Beschreibung angenommen, daß eine Quelldatei 46, die sich auf dem Sendecomputer befindet, an den Empfangscomputer 22 zu senden ist. Ferner wird angenommen, dass der Empfangscomputer eine Referenzdatei 48 enthält, die mindestens einige Ähnlichkeiten zur der Quelldatei aufweist. Sobald ein Anwender meldet, dass eine Quelldatei zu übertragen ist, wird eine Referenzdatei identifiziert, die Daten aufweisen kann, die ähnlich zu denen der Quelldatei sind, beispielsweise dadurch, dass die Referenzdatei einen Dateinamen aufweist, der gleich oder ähnlich dem der Quelldatei ist. In der hierin beschriebenen Erfindung wird allgemein angenommen, dass eine Referenzdatei identifiziert wurde. Die durch das Datei-Übertragungsprogramm implementierten Basisschritte sind folgende:
    • (1) Identifizieren einer Referenzdatei auf dem Empfangscomputer, die Daten aufweisen kann, die ähnlich zu den Daten umfassend die Quelldatei sind;
    • (2) Aufteilen der Daten umfassend die Referenzdatei in eine Vielzahl von Datenblöcken, die n-Bytes pro Block aufweisen, und Zuordnen eines Schlüsselwerts zu jedem Datenblock;
    • (3) Übertragen der Schlüsselwerte von dem Empfangscomputer an den Sendecomputer;
    • (4) Identifizieren eines aktuellen n-Byte-Datenblocks von der Quelldatei und Berechnen eines Wertes für einen Quellschlüssel, der dem aktuellen Datenblock zugeordnet ist;
    • (5) Vergleichen des Wertes des Quell-Schlüssels mit jedem der Schlüsselwerte von der Referenzdatei und, falls eine Übereinstimmung gefunden wird, (i) Übertragen einer Meldung der Übereinstimmung an den Empfangscomputer, und (ii) Wiederholen des Schrittes (4); und
    • (6) falls eine Übereinstimmung nicht gefunden wurde, Übertragen eines Daten-Bytes von dem aktuellen Datenblock an den Empfangscomputer, Addieren eines zusätzlichen Datenbytes von der Quelldatei zu dem aktuellen Datenblock, erneutes Berechnen des Wertes des Quellschlüssels und Wiederholen des Schrittes (5).
  • Allgemein werden die durch die Schritte (5) und (6) gebildeten Schleifen wiederholt bis alle Daten der Quelldatei berücksichtigt worden sind. Auf dem Empfangscomputer wird von den Übereinstimmungsmeldungen und den Byte-Übertragungen eine Zieldatei gebildet. Die Zieldatei wird nach Abschluß der Übertragung ein Duplikat der Quelldatei sein.
  • 2 veranschaulicht bildlich Schritt (2), welcher das Aufteilen der die Referenzdatei umfassenden Daten in eine Vielzahl von Datenblöcke 50a , 50b , 50c ,...50y , 50z und das Zuordnen eines Schlüsselwerts 50a , 50b , 50c ,...50y , 50z zu jedem Datenblock umfasst. Es sei bemerkt, dass der letzte Datenblock weniger als n-Bytes enthalten kann und folglich gemeldet wird, dass er x-Bytes aufweist. Sobald die Referenzdatei in die Datenblöcke 50 aufgeteilt ist, kann der Schlüsselwert 52 eines jeden Blocks unter Verwendung einer Anzahl von Verfahren berechnet werden. Bei einer ersten beispielhaften Ausführungsform wird jeder Schlüssel durch addieren des Wertes eines jeden Daten-Bytes in den Block berechnet, um einen Gesamtwert von allen Bytes in dem Block zu erzeugen. Hinsichtlich des Hintergrunds ist jedes 8-Bit-Zeichen in irgendeinem vorliegenden Block repräsentativ für einen ASCII-Wert, der von 0 bis 255 (d.h. 28 –1) reicht. ASCII ist ein Akronym für den amerikanischen Standardcode für Informationsaustausch, eine Codierungsmethode, die numerische Werte Buchstaben, Zahlen, Interpunktionszeichen und bestimmten anderen Zeichen zuordnet. Durch die Standardisierung von Werten, die für derartige Zeichen verwendet werden, ermöglicht ASCII Computern und Computerprogrammen Informationen auszutauschen. Die Berechnung der Schlüssel, wie oben beschrieben, erzeugt eine ganzzahlige Zahl zwischen null und n2, die repräsentativ ist für die Daten, die in irgendeinem vorliegenden Block enthalten sind.
  • Sobald die Schlüssel für jeden Datenblock in der Referenzdatei berechnet worden sind, werden die Schlüssel zum Vergleich mit der Quelldatei als ein Datenfeld an den Sendecomputer gesendet.
  • 3 ist eine bildliche Darstellung der Schritte (3)–(5). In Schritt (3) wird ein aktueller n-Byte-Datenblock von der Quelldatei identifiziert und ein Wert für einen Quell-Schlüssel, der dem aktuellen Datenblock zugeordnet ist, wird berechnet. Folglich werden bei dem ersten Vergleich die Bytes 0 bis (n-1) als der aktuelle Datenblock identifiziert. Danach wird der Schlüsselwert des aktuellen Datenblocks unter Verwendung desselben Verfahrens, das zur Berechnung der Schlüssel in der Referenzdatei verwendet wurde, berechnet. Der Schlüsselwert für den aktuellen Datenblock wird mit SCHLÜSSEL1 kenntlich gemacht.
  • In Schritt (4) wird der Wert von SCHLÜSSEL1 mit jedem der Schlüssel in der Referenzdatei verglichen, um zu bestimmen, ob eine Übereinstimmung gefunden wurde, wobei gemeldet wird, dass der aktuelle Datenblock identisch zu einem Datenblock in der Referenzdatei ist. Falls eine Übereinstimmung gefunden wurde, wird eine Meldung dieser an den Empfangscomputer gesendet. Unter der Annahme, dass eine Übereinstimmung nicht gefunden wurde, wird gemäß Schritt (5) das erste Byte in dem aktuellen Block (Byte null) an den Empfangscomputer gesendet. Ein nachfolgender „aktueller" Datenblock wird dann berechnet durch Subtrahieren des ersten Daten-Bytes (Byte Null) von dem aktuellen Block, Addieren des nächsten seuqentiellen Daten-Bytes (Byte n) zu dem aktuellen Block und erneutes Berechnen des Schlüsselwerts für den nachfolgenden aktuellen Block. Der Schlüsselwert für diesen Datenblock ist mit SCHLÜSSEL2 kenntlich gemacht. Folglich wird SCHLÜSSEL2 die Werte der Bytes von 1 bis n aufweisen. Der Wert des SCHLÜSSEL2 wird dann mit jedem der Schlüssel in dem Schlüssel-Datenfeld für die Referenzdatei verglichen.
  • Angenommen, dass eine Übereinstimmung nicht vorgenommen wird, wird das erste Byte in dem aktuellen Block (Byte 1) an den Empfangscomputer gesendet. Ein dritter Schlüssel SCHLÜSSEL3, der den aktuellen Datenblock repräsentiert, wird dann durch Schieben des aktuellen Datenblocks um ein Byte nach rechts berechnet, derart, dass SCHLÜSSEL3 die Werte der Bytes von 2 bis (n+1) aufweist. Dies setzt sich fort bis entweder eine Übereinstimmung zwischen einem Schlüsselwert, berechnet von einem Datenblock in der Quelldatei, und einem Schlüssel in dem Schlüssel-Datenfeld für die Referenzdatei gefunden wird oder alle Daten in der Quelldatei übertragen worden sind. Angenommen, dass eine Übereinstimmung gefunden wird, wird eine Meldung dieser an den Empfangscomputer gesendet und ein nachfolgender aktueller Datenblock wird von der Quelldatei berechnet.
  • Es sei bemerkt, dass in dem Fall, wo eine Übereinstimmung nicht gefunden wird, die zusätzliche zur Übertragung einer Datei erforderliche Zeit im Vergleich zu herkömmlichen Verfahren vernachlässigbar ist, trotz des Schiebefensters und Schlüssel-Berechnungen. Dies liegt teilweise an der Tatsache, daß der Prozessor Berechungen viel schneller durchführen kann, als Daten gesendet werden können. Ferner ist der Empfangscomputer in einer bevorzugten Ausführungsform dazu ausgebildet, zu erwarten, dass Bytes, die empfangen wurde, Datenbytes sind und keine Meldungen einer Übereinstimmung zwischen zwei Datenblöcken sind. Im letztern Fall wird ein zusätzliches „Übereinstimmungs-Meldung"-Byte vor dem Byte (den Bytes) gesendet, um zu melden, daß eine Übereinstimmung aufgetreten ist. Folglich wird die Anzahl der gesendeten Bytes im Falle keiner Übereinstimmungen allgemein näherungsweise dieselbe sein, als wenn die Daten einfach übertagen worden wären, ohne irgendeine Möglichkeit für Übereinstimmungsprüfungen gemäß der Erfindung.
  • Das vorhergehende ist ein Überblick einer beispielhaften Ausführungsform des Datei-Übertragungsprogramms 45. Beispielhafte Routinen zur Implementierung des Datei-Übertragungsprogramms in Software werden in den 46 und dem begleitenden Text bekannt gemacht. In dieser Hinsicht ist 4 ein Flussdiagramm einer Routine zur Berechnung eines Schlüssel-Datenfelds von dem Inhalt der Referenzdatei. Die Größe eines jeden Datenblocks wird in Block 100 festgesetzt. In einer Ausführungsform enthält jeder Block 256 Bytes. In Block 102 wird der veränderliche nBlock, der den aktuellen Datenblock repräsentiert, der von der Routine berücksichtigt wird, auf Null gesetzt. In Block 104 wird der Wert des Schlüssels für den aktuellen Datenblock berechnet. Eine geeignete Routine zur Berechnung des Schlüsselwerts ist in 5 dargestellt. In Block 106 wird das Datenfeld BlockSchlüssel[nBlock] dem Wert des für den aktuellen Block berechneten Schlüssels gleichgesetzt. Der veränderliche nBlock wird dann in Block 108 erhöht. In Block 110 wird ein Test vorgenommen, um zu bestimmen, ob das Ende der Referenzdatei erreicht wurde. Falls das Ende der Datei nicht erreicht wurde, springt die Routine zurück zu Block 104. Falls das Ende der Datei erreicht wurde, wird das BlockSchlüssel-Datenfeld in Block 112 an den Sendecomputer gesendet und die Routine endet.
  • 5 ist ein Flussdiagramm eines ersten beispielhaften Unterprogramms, geeignet zur Verwendung in 4 (Block 104) zur Berechnung des Wertes des Schlüssels, der einem vorliegenden Datenblock zugeordnet ist. Das Unterprogramm wird für jeden Datenblock in der Referenzdatei aufgerufen. In Block 120 wird die Variable „n", welche repräsentativ für den Byte-Zählwert ist, gleich Null gesetzt. In Block 122 wird die Variable SCHLÜSSEL ebenfalls gleich null gesetzt. In Block 124 wird dann ein Daten-Byte von der Referenzdatei gelesen. In Block 126 wird die Variable n erhöht. In Block 128 wird der Schlüssel dem vorherigen Schlüssel zuzüglich des Wertes des aktuellen Daten-Bytes, das in Block 124 gelesen wurde, gleichgesetzt.
  • In Block 130 wird ein Test vorgenommen, um zu bestimmen, ob das Ende der Referenzdatei erreicht worden ist. Falls das Ende der Referenzdatei nicht erreicht wurde, wird in Block 132 ein Test vorgenommen, um zu bestimmen, ob ein vollständiger Datenblock berücksichtigt worden ist, d.h. ob n gleich der Blockgröße ist. Falls n nicht gleich der Blockgröße ist, springt das Unterprogramm zurück zu Block 124. Falls n gleich der Blockgröße ist oder falls in Block 130 ermittelt wurde, dass das Ende der Datei erreicht wurde, endet das Unterprogramm und die Steuerung kehrt zurück zu der Routine von 4.
  • 6 ist ein Flussdiagramm einer Routine zum Vergleich von Schlüsseln, die n-Byte-Datenblöcken von der Quelldatei zugeordnet sind, mit den Schlüsseln, die von der Referenzdatei berechnet worden sind und in dem BlockSchlüssel-Datenfeld enthalten sind. In Block 150 wird die Variable „Aktueller Schlüssel" gleich null gesetzt. In Block 152 wird ein Test vorgenommen, um zu bestimmen, ob dort mindestens n-Bytes von Daten in der Quelldatei sind, die noch zu vergleichen sind. Falls dort mindestens n-Bytes von noch nicht verglichenen Daten sind, wird in Block 154 ein n-Byte-Datenblock von der Quelldatei gelesen. In Block 156 wird der Wert des aktuellen Schlüssels, der den aktuellen Datenblock repräsentiert, unter Verwendung derselben Berechnungsverfahren, die in 5 verwendet wurden, berechnet, d.h. durch Addieren des gewichteten Wertes eines jeden Bytes in den aktuellen Datenblock. In Block 158 werden dann die Schlüsselwerte in dem BlockSchlüssel-Datenfeld gesucht, um zu bestimmen, ob irgendeiner der Schlüssel in dem BlockSchlüssel-Datenfeld mit dem aktuellen Schlüssel übereinstimmt. Der Test zu Bestimmung, ob eine Übereinstimmung gefunden wurde, wird in Block 160 durchgeführt.
  • Falls in Block 160 eine Übereinstimmung gefunden wurde, wird in Block 162 eine Nachricht an den Empfangscomputer gesendet, um den übereinstimmenden Block an die Zieldatei zu senden. Die Routine springt dann zu Block 154. Falls eine Übereinstimmung nicht gefunden wurde, wird in Block 164 ein erstes Daten-Byte in dem aktuellen Block an den Empfangscomputer gesendet. In Block 166 wird das Daten-Byte, das an den Empfangscomputer gesendet wurde, von dem aktuellen Datenblock entfernt. Dann wird in Block 168 ein Test vorgenommen, um zu bestimmen, ob dort irgendwelche in der Quelldatei noch vorhandenen Daten sind, die nicht berücksichtigt worden sind. Falls dort in der Quelldatei noch vorhandene Daten sind, wird in Block 170 ein neues Datenbyte von der Quelldatei gelesen und in Block 172 zu dem aktuellen Datenblock addiert. Die Routine springt dann zu Block 156, wo der Schlüssel für den aktuellen Datenblock berechnet wird.
  • Fachleute werden erkennen, dass es nach Abzweigung von Block 172 bei der Berechnung des aktuellen Schlüssels in Block 156 effizienter ist, den Wert des Schlüssels für den aktuellen Block zu erhalten, indem von dem zuvor berechneten aktuellen Schlüssel der Wert des Bytes subtrahiert wird, der von dem aktuellen Block entfernt wurde (in Block 166) und dann der Wert des Bytes, das zu dem aktuellen Block addiert wurde (Block 172), addiert wird, eher als die Schlüsselberechnung durch Addieren jedes Zeichens in dem aktuellen Block durchzuführen.
  • Falls alle in der Quelldatei noch vorhandenen Daten berücksichtigt worden sind oder falls weniger als n-Datenbytes in der Quelldatei verbleiben, wie in dem Test in Block 152 bestimmt, werden die in der Quelldatei noch vorhandenen Daten in Block 174 an den Empfangscomputer gesendet. Auf dem Empfangscomputer werden die übertragenen Daten der Zieldatei hinzugefügt und die Datenübertragung ist abgeschlossen. Bei einer alternativen Ausführungsform wird, anstelle des einfachen Sendens der verbleibenden Daten, wie in Block 174 gezeigt, ein Test vorgenommen, um zu bestimmen, ob der Schlüsselwert der noch vorhandenen Daten mit dem Schlüsselwert des letzten Datenblocks in der Referenzdatei übereinstimmt. Falls eine Übereinstimmung vorhanden ist, wird eine Meldung der Übereinstimmung zu dem Empfangcomputer gesendet und die Daten selbst brauchen nicht übertragen zu werden. Im übrigen werden die aktuellen Daten übertragen. Dies führt zu einer weiteren Optimierung der Übertragung in Situationen, wo das Ende der Referenzdatei die gleichen Daten enthält wie das Ende der Quelldatei. Sobald alle Daten in der Quelldatei zu der Zieldatei hinzugefügt worden sind, d.h. durch die Blöcke 162, 164 und 174, wird die Zieldatei in den meisten Fällen eine exakte Kopie der Quelldatei sein. Jedoch ist es bevorzugt, dass ein Test vorgenommen wird, um sicherzustellen, dass die Zieldatei tatsächlich ein präzises Duplikat der Quelldatei ist. In Block 176 wird die Unverfälschtheit der Zieldatei unter Verwendung eines den Fachleuten bekannten Mittels überprüft. Ein Verfahren zur Überprüfung der Unverfälschtheit der Datei ist eine zyklische Redundanzanalyse (CRC), wie die in M. Nelson, The Data Compression Book, 446–448 (M&T Books 1991) bekannt gemachte. Falls die Unverfälschtheit der Zieldatei beeinträchtigt wurde, werden die Daten von der Quelldatei zu der Zieldatei unter Verwendung herkömmlicher Übertragungsverfahren zurückübertragen. Dies ist in Block 178 dargestellt. Falls die Unverfälschtheit der Zieldatei positiv getestet wurde, oder nach Übertragung der Quelldatei, endet die Routine.
  • Ein Fall, wo die Zieldatei keine genaue Kopie der Quelldatei sein kann, ist, wo zwei oder mehr unterschiedliche Blöcke den gleichen Schlüsselwert hervorbringen. Falls angenommen wird, dass jeder Datenblock aus 256 Bytes besteht, gemäß des in 5 beschriebenen Schlüsselberechnungs-Verfahrens, erstreckt sich der Bereich möglicher Schlüsselwerte von 0 bis 65,280, wobei der letztere Wert nur auftritt, falls jedes Byte in dem Block einen numerischen Wert von 255 aufweist. Die Ungeradzahligen, die duplizierte Schlüssel aufweisen, werden deutlich reduziert, falls: (1) der Bereich möglicher Schlüsselwerte vergleichsweise groß ist, und/oder (2) die Wahrscheinlichkeit, dass die Schlüsselberechnungen innerhalb eines breiteren Abschnitts des Bereichs fallen, erhöht ist. Angesichts des obigen ist es ersichtlich, dass die Genauigkeit des Dateidaten-Übertragungsverfahrens zur Übertragung von Daten gemäß der Erfindung, am effektivsten arbeitet, falls die Möglichkeit des Vorliegens zweier unterschiedlicher Datenblöcke, die den gleichen Schlüsselwert aufweisen, äußerst entfernt ist.
  • Ein anderes erwünschtes Merkmal eines vorteilhaften Schlüsselberechnungsverfahrens besteht darin, dass falls die aktuellen Schlüsselwerte für Blöcke von Quelldaten, die auf einer Schiebfenster-Basis hergeleitet wurden, schnell festgesetzt werden können. Eine Möglichkeit, um dies zu verwirklichen, besteht darin, ein Schlüsselberechnungsverfahren zu haben, das eine Aktualisierung des aktuellen Schlüssels ermöglicht, durch Subtrahieren des Schlüsselwertes, der dem von dem aktuellen Datenblock zu subtrahierenden Datenbyte zugeordnet ist, von dem aktuellen Datenblock (Block 166) und Addieren des Schlüsselwerts, der dem zu dem aktuellen Block zu addierenden Datenbyte zugeordnet ist, zu dem aktuellen Datenblock (Block 172). Während das in 5 beschriebene Schlüsselberechnungsverfahren dieses erwünschte Merkmal aufweist, wird es für größere Dateien aufgrund seines begrenzten Bereichs möglicher Schlüsselwerte und der Verteilung von Werten innerhalb dieses Bereichs nicht gut arbeiten.
  • 7A7C veranschaulichen eine zweite beispielhafte Ausführungsform zur Berechnung von Schlüsseln gemäß der Erfindung, bei der der Bereich möglicher Schlüsselwerte über das zusammenfassende Schema von 5 hinaus ausgedehnt wird, wodurch die Wahrscheinlichkeit, dass irgendein Schlüsselwert repräsentativ für mehr als einen einzelnen Datenblock ist, reduziert wird. Ferner ermöglicht das Berechnungsverfahren den aktuellen Schlüssel sehr schnell zu aktualisieren, wie in 7C und dem begleitenden Text beschrieben. Die Beispiele der 7A7C veranschaulichen einen 32-Bit-Schlüssel, wobei jedoch ersichtlich ist, dass andere Schlüsselgrößen implementiert werden können.
  • Bezugnehmend auf 7A, ist der 32-Bit-Schlüssel unterteilt in ein niedrigeres 24-Bit-Segment und ein höheres 8-Bit-Segment. Das 24-Bit-Segment wird unter Verwendung der folgenden Gleichung berechnet: C1(n) + C2(n-1) + C3(n-2) + . . . Cn-1(2) + Cn, (1)worin Ci das Zeichen in der i-ten Position eines aktuellen Blocks ist und n die Anzahl der Bytes in jedem Block ist. Die höheren 8-Bits des 32-Bit-Schlüssels werden mittels Anwendung einer exklusiven ODER-Operation (XOR) auf jedes der Zeichen berechnet, wie gezeigt durch die Gleichung: C1 XOR C2 XOR C3 . . . C n-1 XOR Cn (2)
  • Sobald die niedrigeren und höheren Schlüsselwerte berechnet worden sind, werden die Bits verkettet, um jeden 32-Bit-Schlüssel zu bilden.
  • 7B veranschaulicht ein geeignetes Unterprogramm zur Implementierung der in 7A dargestellten Schlüsselberechnungen. Das Unterprogramm wird von der Routine der 4 aufgerufen, anstatt das Unterprogramm von 5 aufzurufen. Die Variable n, welche den Byte-Zählwert für irgendeinen vorhandenen Block indiziert, wird in Block 200 gleich null gesetzt. In Block 202 werden die niedrigeren und höheren Abschnitte des Schlüssels, d. h. Schlüssel.24 und Schlüssel.8, gleich null gesetzt. Die Variable „SUMME" wird in Block 204 gleich null gesetzt. In Block 206 wird von der Referenzdatei ein Daten-Byte gelesen.
  • In Block 208 wird der Wert des aktuellen Bytes zu der variablen Summe addiert. Die Schlüssel.24-Variable wird dann in Block 210 um den Wert der Summe erhöht. Es ist ersichtlich, dass die Blöcke 208 und 210 alternierende Verfahren zur Berechnung der Gleichung (1) sind, die keine Multiplikations-Operationen erfordern. In Block 212 wird die Variable Schlüssel.8 dem vorherigen Wert von Schlüssel.8 XOR dem aktuellen Byte gleichgesetzt.
  • In Block 214 wird ein Test vorgenommen, um zu bestimmen, ob das Ende der Referenzdatei erreicht worden ist. Falls das Ende der Referenzdatei nicht erreicht wurde, wird in Block 216 ein Test vorgenommen, um zu bestimmen, ob n gleich der Blockgröße ist. Falls n nicht gleich der Blockgröße ist, springt die Routine zu Block 206. Falls n gleich der Blockgröße ist oder falls das Ende der Datei erreicht worden ist, wird die Variable „Schlüssel" durch Verketten des in Block 210 berechneten niedrigeren 24-Bit-Werts (Schlüssel.24) mit dem in Block 212 berechneten höheren 8-Bit-Werts (Schlüssel.8) festgelegt. Das Unterprogramm endet dann und das Programm kehrt zu Block 106 der 4 zurück.
  • 7C veranschaulicht ein geeignetes Unterprogramm, das von Block 156 der 6 aufgerufen werden kann, um den Wert des aktuellen Schlüssels für einen aktuellen Datenblock zu berechnen. Das Unterprogramm veranschaulicht die Optimierung von Schlüsselberechnungen für solche Blöcke von Quelldaten, die auf einer Schiebefensterbasis identifiziert werden und die folglich Schlüsselwerte aufweisen, die einem Schlüsselwert ähnlich sind, der bereits berechnet wurde. In Block 220 wird ein Test vorgenommen, um zu bestimmen, ob der aktuelle Block auf einer Schiebefensterbasis identifiziert wurde, oder in anderen Worten, ob das Unterprogramm aufgerufen wurde, weil eine Übereinstimmung mit dem vorherigen Block nicht gefunden wurde. Falls der aktuelle Datenblock nicht auf dieser Basis identifiziert wurde, das Unterprogramm von 7B, um den Wert des aktuellen Schlüssels zu berechnen. Dies erfolgt in dem ersten Datenblock in der Quelldatei oder nachdem eine Übereinstimmung gefunden wurde.
  • Falls der aktuelle Datenblock auf der Basis eines vorherigen, nicht übereinstimmenden Datenblocks identifiziert wurde, wird in Block 224 das erste Byte von dem vorherigen Block (das entfernte Byte genannt, durch die Operation von Block 166) von der Summe subtrahiert. In Block 226 wird der Schlüssel .24 seinem vorherigen Wert abzüglich des Produkts der Blockgröße mal dem Wert des entfernten Bytes. In Block 228 wird das neue Byte (in Block 172 addiert zu dem aktuellen Block) zu der Summe addiert. Die Variable Schlüssel.24 wird dann in Block 230 um den Wert der Summe erhöht.
  • In Block 232 wird die Variable Schlüssel.8 dem vorherigen Wert von Schlüssel.8 XOR dem entfernten Byte gleichgesetzt. Eine exklusive ODER-Operation wird dann zwischen Schlüssel.8 und dem neuen Byte durchgeführt. In Block 236 wird die Variable „Schlüssel" durch Verketten des niedrigeren, in Block 230 berechnen 24-Bit-Werts (Schlüssel.24) mit dem höheren, in Block 234 berechneten 8-Bit-Werts (Schlüssel.8) festgelegt. Das Unterprogramm endet dann und die Steuerung kehrt zu Block 158 von 6 zurück. Wie ersichtlich, ermöglicht das Unterprogramm von 7C eine schnelle Berechnung von Schlüsselwerten, und folglich, ermöglicht es einen schnelleren Ablauf des Datei-Übertragungsprogramms bei der Suche nach Übereinstimmungen zwischen Blöcken von der Quelldatei und Blöcken von der Referenzdatei.
  • Fachleuten ist es ersichtlich, das eine große Anzahl von unterschiedlichen Schlüssel-Berechnungsverfahren gemäß der Erfindung verwendet werden kann. Folglich ist die Erfindung nicht auf hierin erläutere beispielhafte Schlüsselberechnungen beschränkt. Irgendeine Schlüsselberechnung, die nicht unnötigerweise zeitraubend berechenbar ist und die einen vergleichsweise weiten Bereich von Ergebnissen bereitstellt, kann vorteilhaft sein. Ferner kann der in einer einzelnen Ausführungsform verwendete Schlüsselberechnungs-Typ von der Blockgröße abhängen, um optimale Ergebnisse zu erzielen. Eine andere Schlüsselberechnung, die verwendet werden kann, ist jedes Zeichen in einem Block mit seiner Position in dem Block zu multiplizieren und die Ergebnisse der Multiplikations-Operationen zu addieren. Eine andere Schlüsselberechnung, die implementiert werden kann, ist die oben beschriebene CRC-Überprüfung der Unverfälschtheit einer Datei. Obwohl dieses Verfahren äußerst genau ist, kann es für viele Anwendungen zu langsam sein.
  • Wieder bezugnehmend auf 6, sei bemerkt, dass eine weitere Optimierung erzielt werden kann, wenn das Blockschlüssel-Datenfeld (Block 158) unter Verwendung einer bisektionellen Suche gesucht wird. Eine bisektionelle Suche ist ein Such-Typ, bei dem ein Element, das in einer geordneten Liste vorhanden sein kann, durch wiederholtes Aufteilen der geordneten Liste in zwei gleiche Teile und Suchen der Hälfte, die das Element enthalten kann, gefunden wird. Da eine bisektionelle Suche erfordert, dass die Suchliste in einer bekannten Reihenfolge, z.B. absteigender Ordnung vorliegt, müsste das BlockSchlüssel-Datenfeld entsprechend angeordnet sein, um für die Suche effektiv zu sein. Ein geeignete übliche bisektionelle Suche ist in H.Schildt, The Complete C Reference, 478–488 (Osbourn McGraw-Hill 1987) bekannt gemacht.
  • Es ist ersichtlich, dass die Erfindung in ihren Verfahrens-Aspekten ein Verfahren zur Übertragung von Daten von einer Quelldatei, welche sich auf einem Sendecomputer befindet, zu einer Zieldatei, welche sich auf einem Empfangscomputer befindet, bereitstellt, wobei die Computer über eine Computer-Datenschnittstelle verbunden sind, wobei das Verfahren die Schritte umfasst:
    • (a) Identifizieren einer Referenzdatei auf dem Empfangscomputer, die zu den die Quelldatei umfassenden Daten ähnliche Daten aufweist;
    • (b) Aufteilen der die Referenzdatei umfassenden Daten in eine Vielzahl von Datenblöcken, die n-Bytes pro Block aufweisen und Zuordnen eines Referenz-Schlüsselwerts, der durch ein Schlüssel-Definitions-Verfahren bestimmt wird, zu jedem Datenblock;
    • (c) Identifizieren eines n-Bytes-Datenblocks von der Quelldatei und Berechnen eines aktuellen Wertes für einen Quell-Schlüssel, der dem identifizierten Datenblock zugeordnet ist, unter Verwendung des Schlüssel-Definitions-Verfahrens;
    • (d) Vergleichen des aktuellen Wertes des Quellschlüssels mit jedem der Referenz-Schlüsselwerte und, falls eine Übereinstimmung gefunden wird, (i) Übertragen einer Meldung dieser an den Empfangscomputer und (ii) Wiederholen des Schritts (c);
    • (e) falls in Schritt (d) keine Übereinstimmung gefunden wurde, Übertragen einer Untermenge des n-Byte-Datenblocks an den Empfangscomputer, Entfernen der Untermenge von dem n-Byte-Datenblock, Hinzufügen zusätzlicher Daten von der Quelldatei zu dem n-Byte-Datenblock, neues Berechnen eines aktuellen Wertes des Quell-Schlüssel unter Verwendung des Schlüssel-Definitions-Verfahrens und Wiederholen des Schrittes (d).
  • Ähnlich wird es ersichtlich sein, dass die Erfindung ein Verfahren zum Synchronisieren der Daten auf einer Empfangseinheit mit den Daten auf einer Quelleinheit bereitstellt, umfassend:
    • (a) Bestimmen mehrerer Referenz-Schlüssel, die Datengruppen entsprechen, welche in der Empfangseinheit gespeichert sind;
    • (b) Übertragen der mehreren Referenz-Schlüssel zu der Quelleinheit;
    • (c) Bestimmen eines Quell-Schlüssels, der einer Gruppe von Quelldaten in der Quelleinheit entspricht;
    • (d) Vergleichen des Quell-Schlüssels mit den mehreren Referenz-Schlüsseln;
    • (e) Übertragen der Daten von der Quelleinheit an die Empfangseinheit, wenn der Quell-Schlüssel nicht mit irgendeinem der Referenz-Schlüssel übereinstimmt;
    • (f) Übertragen eines Steuersignals von der Quelleinheit an die Empfangseinheit, wenn der Quell-Schlüssel mit einem Referenz-Schlüssel übereinstimmt, wobei das Steuersignal bewirkt, dass die Empfangseinheit Daten auf der Empfangseinheit entsprechend dem übereinstimmenden Referenzschlüssel verwendet; und
    • (g) Wiederholen der Schritte (c), (d), (e) und (f) für zusätzliche Gruppen von Quelldaten in der Quelleinheit bis die Daten auf der Empfangseinheit mit den Daten auf der Quelleinheit synchronisiert worden sind.

Claims (13)

  1. Verfahren zum Übertragen von Daten von einer Quelldatei (46), welche sich auf einem Sendecomputer (20) befindet, zu einem Empfangscomputer (22), um eine aktualisierte Referenzdatei zu erzeugen, welche mit der Quelldatei übereinstimmt, wobei der Empfangscomputer eine Referenzdatei (48) aufweist, welche Daten enthalten kann, die ähnlich zu den Daten sind, welche die Quelldatei umfassen, wobei die Computer über eine Computer-Datenschnittstelle (24) verbunden sind, wobei das Verfahren durch die Schritte gekennzeichnet ist: (a) Aufteilen der Referenzdatei in eine Sequenz von Datenblöcken (50a .... 50z), wobei jeder Datenblock eine Länge von n Bytes aufweist, und Zuordnen eines Referenz-Schlüsselwerts (52a...52z) zu jedem Datenblock, wobei der Referenz-Schlüsselwert gemäß einem Schlüssel-Definitions-Verfahren durch die Daten in diesem Block bestimmt wird; (b) Übertragen der Referenz-Schlüsselwerte von dem Empfangscomputer an den Sendecomputer; (c) Identifizieren eines aktuellen Datenblocks mit der Länge von n Bytes von der Quelldatei, Bestimmen eines Quell-Schlüsselwerts (SCHLÜSSEL 1) gemäß dem Schlüssel-Definitions-Verfahren, und Vergleichen des Quell-Schlüssels (SCHLÜSSEL 1) mit den Referenz-Schlüsselwerten, um die Datenblöcke von der Referenzdatei mit den Datenblöcken von der Quelldatei zu vergleichen (158, 160), und, in Fällen, bei denen eine Übereinstimmung zwischen einem Datenblock von jeder Datei gefunden wird, Senden (162) einer Meldung der Übereinstimmung an den Empfangscomputer, so dass der Datenblock, der durch die Übereinstimmung gemeldet wird, nicht an den Empfangs computer übertragen werden muss und die aktualisierte Referenzdatei durch die Aufnahme des übereinstimmenden Blocks aus der Referenzdatei erzeugt wird, und im Falle, dass keine Übereinstimmung vorliegt, Entfernen der Daten von dem aktuellen Block, der von dem Sendecomputer an den Empfangscomputer zu senden ist, um sie in die aktualisierte Referenzdatei aufzunehmen, und Verschieben des aktuellen Datenblocks in der Quelldatei um eine vorbestimmte Größe und erneutes Berechnen des Quell-Schlüssels zum Vergleich mit den Referenz-Schlüsselwerten.
  2. Verfahren nach Anspruch 1, bei welchem Daten von dem Quellcomputer an den Empfangscomputer durch die folgenden Schritte gesendet werden, nämlich: (i) Übertragen (164) einer Untermenge des anfänglichen Blocks an den Empfangscomputer; und (ii) Identifizieren aus der Quelldatei eines nachfolgenden Datenblocks der Länge von n Bytes, der den anfänglichen Datenblock abzüglich der übertragenen Untermenge umfasst und zusätzliche Daten von der Quelldatei (166, 168, 170, 172) beinhaltet.
  3. Verfahren nach Anspruch 2, bei welchem der Quell-Schlüsselwert (SCHLÜSSEL 1) von dem anfänglichen Block mit jedem Referenz-Schlüsselwert (52a...52z) der Reihe nach verglichen wird und, falls keine Übereinstimmung gefunden wird, eine Untermenge des anfänglichen Datenblocks an den Empfangscomputer (22) übertragen wird (164), diese Untermenge von dem anfänglichen Datenblock entfernt wird (166), zusätzliche Daten von der Quelldatei zu dem restlichen Datenblock hinzugefügt werden (170, 172), ein aktueller Wert des Quell-Schlüssels gemäß dem Schlüssel-Definitions-Verfahren neu berechnet wird (156) und der neu berechnete Quell-Schlüsselwert mit jedem Referenz-Schlüsselwert der Reihe nach verglichen wird.
  4. Verfahren nach Anspruch 3, bei welchem der Schritt des erneuten Berechnens so lange wiederholt wird, bis alle Daten in der Quelldatei verglichen worden sind (168).
  5. Verfahren nach einem vorhergehenden Anspruch, bei welchem wenigstens ein Abschnitt des Referenz-Schlüsselwerts für jeden Datenblock dadurch berechnet wird, dass der Wert von jedem Daten-Byte in den Block addiert wird, um einen Gesamtwert von allen Bytes in dem Block zu erzeugen (128).
  6. Verfahren nach Anspruch 5 und umfassend den Schritt des Multiplizierens (126, 128), vor der Addition, der Bytes in dem Block mit einem oder mehreren Multiplikatoren, wobei die Werte der Multiplikatoren von der Position eines vorliegenden Bytes in dem Block abhängig ist.
  7. Verfahren nach Anspruch 1, wobei der Quell-Schlüssel und der Referenz-Schlüssel mehrere Bits umfassen und bei welchem einige der Bits durch eine Summations-Operation und einige der Bits durch eine logische Operation bestimmt werden.
  8. Verfahren nach Anspruch 7, bei welchem die Summations-Operation das Multiplizieren der Werte C1, C2, C3,.... Cn mit konstanten Koeffizienten n, n-1,... 1 umfasst, wobei n die Anzahl der Bytes in einem Block ist und C (i) das Zeichen an der i-ten Position in dem Block ist, dargestellt durch Bytes der Blocks der Quelldaten, und bei welchem die logische Position eine exklusive ODER-Operation umfasst.
  9. Verfahren nach Anspruch 8, bei welchem das Schlüssel-Definitions-Verfahren für die Datenblöcke folgende Berechnung umfasst: C1(n) + C2(n-1) + C3(n-2) + ...+ Cn-1(2) + Cn(1)wobei Ci das Zeichen an der i-ten Position in dem Datenblock ist.
  10. Verfahren nach Anspruch 8, wobei das Schlüssel-Definitions-Verfahren die folgende logische Operation umfasst: C1 XOR C2 XOR C3 ... Cn-1 XOR Cn.
  11. Verfahren nach Anspruch 8 und umfassend den Schritt des Bestimmens eines Quell-Schlüssels für den nachfolgenden Datenblock durch Subtrahieren (226) von C1(n) von dem Quell-Schlüssel für den anfänglichen Block und Addieren (228) der Summe der n Bytes in dem nachfolgenden Datenblock, des Bestimmens eines Quell-Schlüssels für den nachfolgenden Datenblock durch Ausführen einer exklusiven ODER-Operation auf den Quell-Schlüssel für den anfänglichen Datenblock mit der übertragenen Untermenge (232) und mit den zusätzlichen Daten (234), und des Verkettens (236) der Ergebnisse für den nachfolgenden Datenblock.
  12. System zum Synchronisieren der Daten in einer Quelldatei an einer Sendeeinheit (20) mit den Daten in einer Referenzdatei an einer Empfangseinheit (22), wobei das System gekennzeichnet ist durch ein Mittel (45) zum Bestimmen eines Feldes von Referenz-Schlüsseln, welche Datenblöcken entsprechen, welche in der Empfangseinheit gespeichert sind; ein Daten-Übertragungsmittel (24) zum Übertragen des Feldes von Referenz-Schlüsseln, um die Quelldatei zu synchronisieren; ein Mittel (45) zum Bestimmen eines Quell-Schlüssels, der einem aktuellen Datenblock in der Quelldatei entspricht; ein Mittel (45) zum Vergleichen des Quell-Schlüssels mit dem Feld von Referenz-Schlüsseln; ein Mittel (24) zum Entfernen von Daten von dem aktuellen Block und zum Übertragen der entfernten Daten an die Empfangseinheit, um diese Daten in die synchronisierte Referenzdatei aufzunehmen, wenn ein Quell-Schlüssel nicht mit einem der Referenz-Schlüssel übereinstimmt, und zum Verschieben des Datenblocks in der Quelldatei um eine vorbestimmte Größe und zum erneuten Berechnen des Quell-Schlüssels zum Vergleich mit dem Feld der Referenz-Schlüssel; und ein Mittel (24) zum Übertragen eines Steuersignals von der Sendeeinheit an die Empfangseinheit, wenn der Quell-Schlüssel mit dem Referenz-Schlüssel übereinstimmt, wobei das Steuersignal bewirkt, dass die Empfangseinheit einen übereinstimmenden Datenblock in der Quelldatei an der Empfangseinheit entsprechend dem übereinstimmenden Referenz-Schlüssel verwendet, um den Datenblock in der synchronisierten Referenzdatei aufzunehmen.
  13. System nach Anspruch 12, bei dem das Mittel zum Übertragen von Daten (24) von der Sendeeinheit an die Empfangseinheit dazu ausgelegt ist, weniger Daten zu übertragen, als in dem von dem Mittel zum Bestimmen der Quell-Schlüssel verwendeten Datenblock enthalten sind, wenn ein Quell-Schlüssel nicht mit einem der Referenz-Schlüssel übereinstimmt.
DE69534292T 1994-01-14 1995-01-16 Verfahren und System zur Dateifernübertragung Expired - Lifetime DE69534292T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/182,969 US5446888A (en) 1994-01-14 1994-01-14 Remote file transfer method and apparatus
US182969 1994-01-14

Publications (2)

Publication Number Publication Date
DE69534292D1 DE69534292D1 (de) 2005-08-04
DE69534292T2 true DE69534292T2 (de) 2006-05-24

Family

ID=22670854

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69534292T Expired - Lifetime DE69534292T2 (de) 1994-01-14 1995-01-16 Verfahren und System zur Dateifernübertragung

Country Status (5)

Country Link
US (3) US5446888A (de)
EP (1) EP0665670B8 (de)
JP (2) JP3848983B2 (de)
CA (1) CA2140124C (de)
DE (1) DE69534292T2 (de)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764918A (en) * 1995-01-23 1998-06-09 Poulter; Vernon C. Communications node for transmitting data files over telephone networks
FI98024C (fi) * 1995-05-11 1997-03-25 Nokia Telecommunications Oy Menetelmä ja laitteisto tiedostopohjaisen multimedia- ja hypermedia-palvelun välittämiseksi liikkuvalle vastaanottajalle
JP3000895B2 (ja) * 1995-06-28 2000-01-17 日本電気株式会社 ダウンロード方法
US5752251A (en) * 1995-08-07 1998-05-12 Ncr Corporation Method and apparatus for recovering aborted file (or data) transmission
US5778395A (en) * 1995-10-23 1998-07-07 Stac, Inc. System for backing up files from disk volumes on multiple nodes of a computer network
US5859971A (en) * 1996-02-15 1999-01-12 International Business Machines Corp. Differencing client/server communication system for use with CGI forms
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US6317803B1 (en) 1996-03-29 2001-11-13 Intel Corporation High-throughput interconnect having pipelined and non-pipelined bus transaction modes
US5911051A (en) * 1996-03-29 1999-06-08 Intel Corporation High-throughput interconnect allowing bus transactions based on partial access requests
US6516466B1 (en) 1996-05-02 2003-02-04 Vincent C. Jackson Method and apparatus for portable digital entertainment system
US5978805A (en) * 1996-05-15 1999-11-02 Microcom Systems, Inc. Method and apparatus for synchronizing files
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US5848064A (en) * 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
US6643506B1 (en) 1996-08-07 2003-11-04 Telxon Corporation Wireless software upgrades with version control
US5819291A (en) * 1996-08-23 1998-10-06 General Electric Company Matching new customer records to existing customer records in a large business database using hash key
US5850565A (en) * 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US20060195595A1 (en) 2003-12-19 2006-08-31 Mendez Daniel J System and method for globally and securely accessing unified information in a computer network
US5983268A (en) * 1997-01-14 1999-11-09 Netmind Technologies, Inc. Spreadsheet user-interface for an internet-document change-detection tool
US6137805A (en) * 1997-02-10 2000-10-24 International Business Machines Corporation Method and apparatus to remotely configure a data processing system
US6963923B1 (en) * 1997-02-10 2005-11-08 International Business Machines Corporation Method for file transfer restarts using standard internet protocol
AU6151598A (en) * 1997-02-11 1998-08-26 Connected Corporation File comparison for data backup and file synchronization
US6021413A (en) * 1997-04-01 2000-02-01 The University Of Illinois Board Of Trustees Application-directed variable-granularity caching and consistency management
US6115751A (en) * 1997-04-10 2000-09-05 Cisco Technology, Inc. Technique for capturing information needed to implement transmission priority routing among heterogeneous nodes of a computer network
US5991302A (en) * 1997-04-10 1999-11-23 Cisco Technology, Inc. Technique for maintaining prioritization of data transferred among heterogeneous nodes of a computer network
US6791979B1 (en) 1997-04-10 2004-09-14 Cisco Technology, Inc. Mechanism for conveying data prioritization information among heterogeneous nodes of a computer network
WO1998056149A1 (en) * 1997-06-06 1998-12-10 Telefonaktiebolaget Lm Ericsson Delta file software loading in cellular telecommunications systems
US6035324A (en) * 1997-08-28 2000-03-07 International Business Machines Corporation Client-side asynchronous form management
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6442688B1 (en) * 1997-08-29 2002-08-27 Entrust Technologies Limited Method and apparatus for obtaining status of public key certificate updates
US6029170A (en) * 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6065062A (en) * 1997-12-10 2000-05-16 Cisco Systems, Inc. Backup peer pool for a routed computer network
US6233696B1 (en) * 1997-12-31 2001-05-15 Emc Corporation Data verification and repair in redundant storage systems
US6438585B2 (en) 1998-05-29 2002-08-20 Research In Motion Limited System and method for redirecting message attachments between a host system and a mobile data communication device
US7209949B2 (en) 1998-05-29 2007-04-24 Research In Motion Limited System and method for synchronizing information between a host system and a mobile data communication device
US6154743A (en) * 1998-06-16 2000-11-28 Cisco Technology, Inc. Technique for accessing heterogeneous directory services in an APPN environment
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6192412B1 (en) * 1998-07-28 2001-02-20 Lucent Technologies, Inc. Computer file transmission system and method
GB2341249A (en) 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
GB2341462B (en) 1998-09-12 2003-06-11 Ibm Method for deployment of incremental versions of applications
US6411966B1 (en) * 1998-09-21 2002-06-25 Microsoft Corporation Method and computer readable medium for DNS dynamic update to minimize client-server and incremental zone transfer traffic
US6247024B1 (en) 1998-09-25 2001-06-12 International Business Machines Corporation Method and system for performing deferred file removal in a file system
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
SE521456C2 (sv) * 1998-12-15 2003-11-04 Ericsson Telefon Ab L M Förfarande och anordning vid ett distribuerat system
US6263363B1 (en) 1999-01-28 2001-07-17 Skydesk, Inc. System and method for creating an internet-accessible working replica of a home computer on a host server controllable by a user operating a remote access client computer
AU763524B2 (en) * 1999-03-02 2003-07-24 Flexera Software Llc Data file synchronisation
US6331855B1 (en) 1999-04-28 2001-12-18 Expertcity.Com, Inc. Method and apparatus for providing remote access, control of remote systems and updating of display information
US6480955B1 (en) 1999-07-09 2002-11-12 Lsi Logic Corporation Methods and apparatus for committing configuration changes to managed devices prior to completion of the configuration change
US6584499B1 (en) 1999-07-09 2003-06-24 Lsi Logic Corporation Methods and apparatus for performing mass operations on a plurality of managed devices on a network
US6480901B1 (en) 1999-07-09 2002-11-12 Lsi Logic Corporation System for monitoring and managing devices on a network from a management station via a proxy server that provides protocol converter
US7640325B1 (en) * 1999-07-09 2009-12-29 Lsi Corporation Methods and apparatus for issuing updates to multiple management entities
US6769022B1 (en) 1999-07-09 2004-07-27 Lsi Logic Corporation Methods and apparatus for managing heterogeneous storage devices
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
US6615225B1 (en) 2000-04-27 2003-09-02 International Business Machines Corporation System and method for relating files in a distributed data storage environment
WO2001098951A1 (en) * 2000-06-22 2001-12-27 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6941353B1 (en) * 2000-06-29 2005-09-06 Auran Holdings Pty Ltd E-commerce system and method relating to program objects
CA2320665C (en) 2000-09-26 2010-08-17 Spielo Manufacturing Incorporated System and method for downloading electronic information to a video lottery terminal
JP4586281B2 (ja) * 2001-03-13 2010-11-24 コニカミノルタビジネステクノロジーズ株式会社 データ送信管理装置、データ送信管理方法、データ送信管理プログラムおよびデータ送信管理プログラムを記録したコンピュータ読み取り可能な記録媒体
AU2002303126A1 (en) * 2001-03-16 2002-10-03 Novell, Inc. Client-server model for synchronization of files
US20040205587A1 (en) * 2001-08-07 2004-10-14 Draper Stephen P.W. System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
US20030033303A1 (en) * 2001-08-07 2003-02-13 Brian Collins System and method for restricting access to secured data
US7213025B2 (en) * 2001-10-16 2007-05-01 Ncr Corporation Partitioned database system
US6845375B1 (en) 2001-10-20 2005-01-18 Ncr Corporation Multi-level partitioned database system
US7080072B1 (en) 2001-11-14 2006-07-18 Ncr Corp. Row hash match scan in a partitioned database system
WO2003100690A1 (en) * 2002-05-17 2003-12-04 Synchrologic A system and method for parsing itinerary data
US9813514B2 (en) 2002-06-12 2017-11-07 Good Technology Holdings Limited Information repository system including a wireless device and related method
US7281017B2 (en) * 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US8230026B2 (en) 2002-06-26 2012-07-24 Research In Motion Limited System and method for pushing information between a host system and a mobile data communication device
JP4302970B2 (ja) 2002-12-16 2009-07-29 富士通株式会社 差分更新方法、プログラム及び装置
US7149508B2 (en) * 2003-02-05 2006-12-12 Samsung Electronics Co., Ltd. System and method for delta-based over-the-air software upgrades for a wireless mobile station
EP1487051B1 (de) * 2003-06-12 2008-03-26 Research In Motion Limited Mehrelement-Antenne mit parasitärem Antennenelement
US7676506B2 (en) * 2003-06-20 2010-03-09 Innopath Software, Inc. Differential file compression of software image versions
US7363378B2 (en) 2003-07-01 2008-04-22 Microsoft Corporation Transport system for instant messaging
US7539727B2 (en) 2003-07-01 2009-05-26 Microsoft Corporation Instant messaging object store
US7509635B2 (en) * 2003-09-26 2009-03-24 Red Hat, Inc. Software and data file updating process
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US8527541B2 (en) * 2003-11-05 2013-09-03 Emc Corporation Method for mapping a flat namespace onto a hierarchical namespace using locality of reference cues
US7949682B2 (en) * 2003-11-05 2011-05-24 Novell, Inc. Method for providing a flat view of a hierarchical namespace without requiring unique leaf names
US7203708B2 (en) * 2003-11-06 2007-04-10 Microsoft Corporation Optimizing file replication using binary comparisons
US7133963B2 (en) * 2003-12-03 2006-11-07 International Business Machines Corporation Content addressable data storage and compression for semi-persistent computer memory
US7117204B2 (en) * 2003-12-03 2006-10-03 International Business Machines Corporation Transparent content addressable data storage and compression for a file system
US7114027B2 (en) * 2003-12-03 2006-09-26 International Business Machines Corporation Content addressable data storage and compression for computer memory
US7117203B2 (en) * 2003-12-03 2006-10-03 International Business Machines Corporation Content addressable data storage and compression for semi-persistent computer memory for a database management system
US8171084B2 (en) 2004-01-20 2012-05-01 Microsoft Corporation Custom emoticons
US20050171977A1 (en) * 2004-02-02 2005-08-04 Osborne James W. Methods, systems and products for data preservation
JP4539115B2 (ja) * 2004-02-25 2010-09-08 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8549177B2 (en) * 2004-03-02 2013-10-01 Divinetworks Ltd. Communication server, method and systems, for reducing transportation volumes over communication networks
US20060047855A1 (en) * 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20050256974A1 (en) * 2004-05-13 2005-11-17 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a remote device
JP4568532B2 (ja) * 2004-05-13 2010-10-27 日本無線株式会社 無線装置制御システム、無線装置および制御装置
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US8495023B1 (en) * 2004-09-01 2013-07-23 Symantec Operating Corporation Delta catalogs in a backup system
US8725705B2 (en) * 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7523098B2 (en) * 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US7613787B2 (en) * 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US20060195532A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Client-side presence documentation
US7529255B2 (en) 2005-04-21 2009-05-05 Microsoft Corporation Peer-to-peer multicasting using multiple transport protocols
US7447854B1 (en) 2005-12-30 2008-11-04 Vmware, Inc. Tracking and replicating changes to a virtual disk
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
JP2007201861A (ja) * 2006-01-27 2007-08-09 Eastman Kodak Co ファイル管理方法
US7421542B2 (en) * 2006-01-31 2008-09-02 Cisco Technology, Inc. Technique for data cache synchronization
US7620392B1 (en) 2006-02-27 2009-11-17 Good Technology, Inc. Method and system for distributing and updating software in wireless devices
CN100501675C (zh) * 2006-04-14 2009-06-17 北京瑞星国际软件有限公司 一种用于软件升级的方法及装置
JP5061741B2 (ja) * 2007-06-13 2012-10-31 日本電気株式会社 情報処理装置及びそれに用いる順序付きデータ管理方法並びにそのプログラム
JP2009122947A (ja) * 2007-11-14 2009-06-04 Canon Inc 画面共有システム及びデータ転送方法
US8683458B2 (en) * 2007-11-30 2014-03-25 Red Hat, Inc. Automatic full install upgrade of a network appliance
US8589592B2 (en) * 2007-12-11 2013-11-19 Red Hat, Inc. Efficient object distribution
US8418164B2 (en) * 2008-05-29 2013-04-09 Red Hat, Inc. Image install of a network appliance
WO2010070727A1 (ja) * 2008-12-16 2010-06-24 富士通株式会社 仮想テープ装置、仮想テープデータ複写プログラム及び方法
CN101848188A (zh) * 2009-03-25 2010-09-29 上海聚力传媒技术有限公司 对数据块校验信息进行更新的方法和装置
JP4592115B1 (ja) * 2009-05-29 2010-12-01 誠 後藤 ファイル格納システム、サーバ装置及びプログラム
US8633838B2 (en) * 2010-01-15 2014-01-21 Neverfail Group Limited Method and apparatus for compression and network transport of data in support of continuous availability of applications
US8713646B2 (en) 2011-12-09 2014-04-29 Erich Stuntebeck Controlling access to resources on a network
US9680763B2 (en) 2012-02-14 2017-06-13 Airwatch, Llc Controlling distribution of resources in a network
US10404615B2 (en) 2012-02-14 2019-09-03 Airwatch, Llc Controlling distribution of resources on a network
US9356574B2 (en) 2012-11-20 2016-05-31 Karl L. Denninghoff Search and navigation to specific document content
US8978110B2 (en) 2012-12-06 2015-03-10 Airwatch Llc Systems and methods for controlling email access
US8862868B2 (en) 2012-12-06 2014-10-14 Airwatch, Llc Systems and methods for controlling email access
US8832785B2 (en) 2012-12-06 2014-09-09 Airwatch, Llc Systems and methods for controlling email access
US8826432B2 (en) 2012-12-06 2014-09-02 Airwatch, Llc Systems and methods for controlling email access
US9021037B2 (en) 2012-12-06 2015-04-28 Airwatch Llc Systems and methods for controlling email access
US20140280955A1 (en) 2013-03-14 2014-09-18 Sky Socket, Llc Controlling Electronically Communicated Resources
US8997187B2 (en) 2013-03-15 2015-03-31 Airwatch Llc Delegating authorization to applications on a client device in a networked environment
US9787686B2 (en) 2013-04-12 2017-10-10 Airwatch Llc On-demand security policy activation
US9900261B2 (en) 2013-06-02 2018-02-20 Airwatch Llc Shared resource watermarking and management
US9584437B2 (en) 2013-06-02 2017-02-28 Airwatch Llc Resource watermarking and management
US8775815B2 (en) 2013-07-03 2014-07-08 Sky Socket, Llc Enterprise-specific functionality watermarking and management
US8806217B2 (en) 2013-07-03 2014-08-12 Sky Socket, Llc Functionality watermarking and management
US8756426B2 (en) 2013-07-03 2014-06-17 Sky Socket, Llc Functionality watermarking and management
US9665723B2 (en) 2013-08-15 2017-05-30 Airwatch, Llc Watermarking detection and management
US9516005B2 (en) 2013-08-20 2016-12-06 Airwatch Llc Individual-specific content management
US9405479B1 (en) 2013-08-26 2016-08-02 Western Digital Technologies, Inc. Faster file compression using sliding compression window and backward compound pointers
US9258301B2 (en) 2013-10-29 2016-02-09 Airwatch Llc Advanced authentication techniques
US9544306B2 (en) 2013-10-29 2017-01-10 Airwatch Llc Attempted security breach remediation
US10303666B2 (en) 2015-03-09 2019-05-28 International Business Machines Corporation File transfer system using file backup times
EP4239494A1 (de) 2022-03-04 2023-09-06 Karl Denninghoff Erfassen der vorübergehenden herausragenden aufmerksamkeit, um die aufmerksamkeit auf digitale dokumentteile zu lenken

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3311893A (en) * 1963-08-29 1967-03-28 Sperry Rand Corp Memory organization wherein only new data bits which are different from the old are recorded
US3612660A (en) * 1969-09-08 1971-10-12 Wendell S Miller Digital data compaction
US4232375A (en) * 1978-06-12 1980-11-04 Ncr Corporation Data compression system and apparatus
US4412306A (en) * 1981-05-14 1983-10-25 Moll Edward W System for minimizing space requirements for storage and transmission of digital signals
DE3265993D1 (en) 1981-06-30 1985-10-10 Ibm Electric circuit connecting devices
US4641274A (en) * 1982-12-03 1987-02-03 International Business Machines Corporation Method for communicating changes made to text form a text processor to a remote host
US5086434A (en) * 1985-09-30 1992-02-04 Canon Kabushiki Kaisha Data communication process and apparatus for data transmission in blocks which may include mixed data types
US4807182A (en) * 1986-03-12 1989-02-21 Advanced Software, Inc. Apparatus and method for comparing data groups
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
US5101348A (en) * 1988-06-23 1992-03-31 International Business Machines Corporation Method of reducing the amount of information included in topology database update messages in a data communications network
US4891785A (en) * 1988-07-08 1990-01-02 Donohoo Theodore J Method for transferring data files between computers in a network response to generalized application program instructions
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5210865A (en) * 1989-06-30 1993-05-11 Digital Equipment Corporation Transferring data between storage media while maintaining host processor access for I/O operations
US5086402A (en) * 1989-07-10 1992-02-04 Simware, Inc. Method for high speed data transfer
DE68926345T2 (de) * 1989-08-03 1996-11-07 Ibm Datenverarbeitungsnetzwerk
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
EP0541281B1 (de) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Inkrementale Rechnerdateisicherung unter Verwendung von Kennzeichnungen
AU3929593A (en) * 1992-03-17 1993-10-21 Nomadic Systems, Inc. Remote file access system
US5283646A (en) * 1992-04-09 1994-02-01 Picturetel Corporation Quantizer control method and apparatus
US6076084A (en) 1994-01-03 2000-06-13 Norton-Lambert Corp. File transfer method and apparatus utilizing delimiters
DE19729657A1 (de) 1997-07-11 1999-01-14 Asea Brown Boveri Scherenangetriebener Roboterarm und Portalroboter

Also Published As

Publication number Publication date
EP0665670B1 (de) 2005-06-29
JP3848983B2 (ja) 2006-11-22
CA2140124A1 (en) 1995-07-15
JPH07295867A (ja) 1995-11-10
EP0665670A3 (de) 1996-03-27
JP2006127552A (ja) 2006-05-18
EP0665670B8 (de) 2005-08-24
EP0665670A2 (de) 1995-08-02
US5721907A (en) 1998-02-24
CA2140124C (en) 2005-04-05
JP4435096B2 (ja) 2010-03-17
USRE39458E1 (en) 2007-01-02
DE69534292D1 (de) 2005-08-04
US5446888A (en) 1995-08-29

Similar Documents

Publication Publication Date Title
DE69534292T2 (de) Verfahren und System zur Dateifernübertragung
DE69029892T2 (de) Datendarstellung und Protokoll
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE69613225T2 (de) Differenzierungskommunikationssystem
DE69604391T2 (de) Zeitkohärentes cachesystem
DE69130868T2 (de) Kommunikationssystem für binärdaten
DE69421966T2 (de) Verfahren und System zum Suchen komprimierter Daten
DE3382775T2 (de) Elektronisches Dokumentenverteilnetzwerk mit gleichmässigem Datenstrom.
DE3852341T2 (de) Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung.
DE3788563T2 (de) Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen.
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE69410489T2 (de) Verfahren und gerät für die synchronisation und den ablauf von mehreren datenströmen und echtzeitaufgaben
DE3750492T2 (de) Datenbanksystem für Parallelprozessor.
DE19718654C2 (de) Kommunikationssystem für elektronische Nachrichten
DE69230255T2 (de) Verfahren und vorrichtung zur dynamischen bandbreitenzuweisung in einer digitalen übertragungssitzung
DE69626726T2 (de) Multimedia-Übertragungssystem
DE3852115T2 (de) Simulationsverfahren für Programme.
DE69805087T2 (de) Verfahren und system zur synchronisierten erfassung, verarbeitung und zuteilung von instrumentationsdaten und zur synchronisierten steuerung in einem client-server netzwerk
DE69026764T2 (de) Verfahren zur Datenübertragung mit hoher Geschwindigkeit
DE69734432T2 (de) Verfahren und Vorrichtung zur Absendung von Clientverfahrenanrufen in einem Server Rechnersystem
DE19835647A1 (de) Computersystem und Verfahren zum Lesen von HID-Dateneinheiten
DE69915725T2 (de) Datenkompression unter Verwendung von Primzahlexponenten
DE69718085T2 (de) Kompression von strukturierten Daten
DE3485824T2 (de) Verfahren zur datenkompression.
DE2000340A1 (de) Verfahren und Vorrichtung zum Suchen verdichteter gespeicherter Informationen

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: LAPLINK SOFTWARE, INC., KIRKLAND, WASH., US

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: MICROSOFT CORPORATION, REDMOND, WASH., US