DE60213419T2 - Client-server-modell zur synchronisation von dateien - Google Patents

Client-server-modell zur synchronisation von dateien Download PDF

Info

Publication number
DE60213419T2
DE60213419T2 DE60213419T DE60213419T DE60213419T2 DE 60213419 T2 DE60213419 T2 DE 60213419T2 DE 60213419 T DE60213419 T DE 60213419T DE 60213419 T DE60213419 T DE 60213419T DE 60213419 T2 DE60213419 T2 DE 60213419T2
Authority
DE
Germany
Prior art keywords
client
server
file
synchronization
directory
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
DE60213419T
Other languages
English (en)
Other versions
DE60213419D1 (de
Inventor
David K. Carmel Valley BROWN
Thomas A. Pacific Grove ROLANDER
Robert D. Monterey SILBERSTEIN
Josef Yokohama WEIN
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.)
Micro Focus Software Inc
Original Assignee
Novell 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
Application filed by Novell Inc filed Critical Novell Inc
Publication of DE60213419D1 publication Critical patent/DE60213419D1/de
Application granted granted Critical
Publication of DE60213419T2 publication Critical patent/DE60213419T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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
    • Y10S707/99953Recoverability

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft verteilten Dateizugriff, und genauer entferntes Zugreifen auf Dateien von vielen Computern und Beibehalten von Änderungen.
  • HINTERGRUND DER ERFINDUNG
  • Als Computer zuerst ihren Weg in die Gesellschaft fanden, konnten sich wenige Leute für sich selbst eine Maschine leisten. Im besten Fall hatten Einzelpersonen eine einzelne Maschine auf der Arbeit, mit der sie arbeiten konnten. Während aber Computer preiswerter wurden, befinden sich Leute in der Lage, mit mehreren Maschinen zu arbeiten. Es ist für Leute zunehmend üblich, an einer Maschine im Büro zu arbeiten, einer zweiten zu Hause, und Gebrauch von einem tragbaren Computer zu machen, wenn sie Computerzugang benötigen, während sie verreisen.
  • Das Internet hat auch eine Änderung in der Gesellschaft bewirkt. Mit der Verfügbarkeit von Verbindungen bei geringen Kosten und öffentlichen Zugangspunkten können Leute auf Information über Netze variierender Größen (lokal, national, global) nahezu überall zugreifen, wo sie es wünschen.
  • Aber mit der steigenden Zahl von Maschinen, deren Nutzung einer Person offensteht, kommt es zu zusätzlicher Komplexität. Da eine Person typischerweise auf die gleichen Dateien von den verschiedenen Computern zugreift, muss der Benutzer si cher sein, dass die Dateien aktuell sind, auf die er zugreift.
  • Ursprünglich haben Leute Dateien auf Floppy-Disks von einer Maschine zu der nächsten getragen. Die Vergrößerung der Dateigröße macht aber Floppy-Disks manchmal unpraktisch. Und falls der Benutzer vergisst, die Dateien mit sich zu nehmen, während er sich umher bewegt, oder vergisst, die neuesten Versionen der Dateien von dem Computer zu nehmen, den er zuletzt verwendet hat, kann der Benutzer mit mehreren Versionen der Dateien konfrontiert werden, von denen jede gewünschte Abschnitte enthält.
    • Satyanarayanan et al "Coda: A highly Available File System for a Distributed Workstation Environment" offenbart eine Synchronisationsanwendung, Verfahren und Vorrichtung, wo viele Clients und verteilte Server Dateien und Verzeichnisse synchronisieren.
    • Tridell et al: "The rsync algorithm" beschreibt ein Dateisynchronisationsverfahren, das nur diese Teile einer Datei identifiziert, die sich auf unterschiedlichen Hosts befinden, die unterschiedlich sind. Für diesen Zweck wird die Datei in Blöcke gesplittet, und für jeden Block wird eine Prüfsumme und ein Nachrichtenauszugsfingerabdruck kalkuliert. Der Nachrichtenauszug und die Prüfsumme werden verwendet um zu bestimmen, welche Blöcke zu übertragen sind.
    • Zadok: "Stackable File Systems as a Security Tool" beschreibt eine stapelbare vKnoten-Schnittstelle, die einem existierenden Dateisystem Verschlüsselung hinzufügt, ohne das unterliegende System modifizieren zu müssen. Auf eine Datei bezogene Systemaufrufe können abgefangen werden, bevor sie zu dem unterliegenden System gesendet werden. Dies stellt Verschlüsse lung von Dateinamen, Dateiattributen, Dateiinhalt etc. sicher.
    • Braam et al: "Removing Bottlenecks in Distributed Filesystems: Coda 8 Intermezzo as examples" beschreibt Coda und fügt einige mehr technische Merkmale hinzu, z.B. Filtertreiber, um Cachefehlschläge (d.h. veraltete Dateien) abzufangen, und auch zum Aufzeichnen von Modifikationen von Dateien.
    • Bedoll et al: "The importance of Meta-Data in Mass-Storage Systems" erörtert die unterschiedlichen Typen von Metadaten, die mit Dateien in Verbindung stehen können, um Dateimanagement zu unterstützen, z.B. Name, Version etc. Es erörtert auch, wie und wo diese dateibezogene Information in einem Dateisystem zu speichern ist.
    • Satyanarayanan: "A Survey of Distributed File Systems" gibt einen Überblick über verschiedene verteilte Dateisysteme. Es zeigt die unterschiedlichen Konzepte, Ansätze, Probleme und Lösungen bezogen auf Caching, Replikation, Namensgebung, Sicherheit und Systemmanagement.
  • Entsprechend bleibt eine Notwendigkeit für einen Weg bestehen, verteilte Dateien über viele Clients zu unterhalten, wobei Aktualität in jedem Client beibehalten wird, während Änderungen durchgeführt werden, um diese und andere Probleme anzusprechen, die mit dem Stand der Technik in Verbindung stehen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung ist ein Verfahren und eine Vorrichtung zum Synchronisieren von Daten in Übereinstimmung mit den folgenden Ansprüchen.
  • Die vorangehenden und andere Merkmale, Ziele und Vorteile der Erfindung werden aus der folgenden detaillierten Beschreibung leichter offensichtlich, die mit Verweis auf die begleitenden Zeichnungen voranschreitet.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt einen Server mit mehreren Clients, die auf Dateien zugreifen, die in einem Serversynchronisationsdateisystem auf dem Server gespeichert sind, gemäß einer Ausführungsform der Erfindung.
  • 2 zeigt ein Beispiel der Datenstrukturen, die in dem Serversynchronisationsdateisystem von 1 verwendet werden, um ein Konto (account) eines Benutzers zu unterhalten, gemäß einer Ausführungsform der Erfindung.
  • 3 zeigt ein Beispiel der Datenstrukturen, die in der Clientsynchronisationsanwendung von 1 verwendet werden, um ein Konto eines Benutzers zu unterhalten, gemäß einer Ausführungsform der Erfindung.
  • 4A-4C zeigen den Transfer von Information zwischen dem Client und Server von 1 gemäß einer Ausführungsform der Erfindung.
  • 5 zeigt den Client von 1, der die Serversynchronisationsdaten mit den Clientsynchronisationsdaten vergleicht um zu bestimmen, welche Datei(en) geändert wurde(n), gemäß einer Ausführungsform der Erfindung.
  • 6 zeigt eine Hash-Funktion, die durch den Client von 1 verwendet wird, um den Umfang von Information zu reduzieren, die zwischen dem Client- und Serversynchronisations dateisystem übertragen wird, gemäß einer Ausführungsform der Erfindung.
  • 7 zeigt ein Beispiel des Clients von 1, die einen spezifischen Block von dem Serversynchronisationsdateisystem zieht, gemäß einer Ausführungsform der Erfindung.
  • 8A-8B zeigen ein Flussdiagramm der Prozedur zum Synchronisieren der Clients und des Servers von 1 gemäß einer Ausführungsform der Erfindung.
  • 9A-9E zeigen ein Flussdiagramm der Prozedur, die verwendet wird, um Änderungen von dem Server zu einem Client von 1 zu ziehen, gemäß einer Ausführungsform der Erfindung.
  • 10A-10C zeigen ein Flussdiagramm der Prozedur, die verwendet wird, um Dateien von dem Server zu einem Client von 1 herunterzuladen, gemäß einer Ausführungsform der Erfindung.
  • 11A-11F zeigen ein Flussdiagramm der Prozedur, die verwendet wird, um Änderungen von einem Client zu dem Server von 1 zu verschieben, gemäß einer Ausführungsform der Erfindung.
  • 12 zeigt ein Beispiel eines Browsers, der ein Applet (kleines Programm) laufen lässt, das auf einem Client von 1 angezeigt wird, was zum Herunterladen (download) und Heraufladen (upload) von Dateien verwendet wird, gemäß einer Ausführungsform der Erfindung.
  • 13A-13B zeigen ein Flussdiagramm, um den Clients von 1 Zugriff auf die Dateien in dem Serversynchronisationsdateisystem von 1 zu gestatten oder zu verweigern, gemäß einer Ausführungsform der Erfindung.
  • 14 zeigt die Clients und den Server von 1, wobei der Server einen Schlüsselhinterlegungsserver verwendet, gemäß einer Ausführungsform der Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Überblick über Client-/Serversynchronisation
  • Eine Ausführungsform der Erfindung ist eine Client-/Serveranwendung, die Benutzern erlaubt, Daten auf vielen Maschinen zu synchronisieren. Die Serverkomponente ist ein Serversynchronisationsdateisystem (SFS) mit einer funktionalen Schnittstelle und Metadatenorganisation, die effiziente und zuverlässige Synchronisation durch die Clients ermöglicht. (Ein Glossar von Akronymen kann am Ende dieser Literaturstelle gefunden werden.) Die Clientkomponente ist eine Clientsynchronisationsanwendung (SA), die das Server-SFS verwendet, um ihre lokalen Clientdaten mit dem Server zu synchronisieren. Clientmaschinen synchronisieren miteinander durch Synchronisieren zu einem gemeinsamen Serverkonto.
  • Die Client-SA kommuniziert mit dem Server-SFS über TCP/IP. Vorzugsweise kommuniziert die Client-SA mit dem Server-SFS unter Verwendung eines proprietären Protokolls, das innerhalb des Hypertext-Transportprotokolls (HTTP) getunnelt wird, aber ein Fachmann wird erkennen, dass andere Protokolle verwendet werden können. Kommunikation zwischen der Client-SA und dem Server-SFS wird durch die Client-SA initiiert, und durch das Server-SFS wird geantwortet. Eine Ausführungsform der Erfindung kann die Sicherheit der Daten durch Verwenden verschlüsselter Konten unterhalten. Benutzerdaten werden auf dem Client durch die Client-SA verschlüsselt und auf dem Server verschlüsselt gespeichert. Der Benutzer kann wählen, welches auch immer Verschlüsselungsprotokoll gewünscht ist. Und da die Daten auf dem Client vor einer Übertragung verschlüsselt werden, ist die Verwendung der Secure Sockets Layer (SSL), um die Daten während einer Übertragung über ein potenziell verwundbares Netz zu schützen, nicht erforderlich.
  • Die Client-/Serverarchitektur ist gestaltet, die Last auf dem Serverprozessor zu minimieren, um Serverskalierbarkeit zu maximieren. Zu diesem Zweck werden so viele prozessor-intensive Operationen wie möglich, wie etwa Nachrichtenauszugsberechnung und Vergleich, Datenverschlüsselung und Entschlüsselung und Synchronisation selbst, durch die Client-SA durchgeführt. Auch ist der Abfragemechanismus, der durch die Client-SA verwendet wird um zu bestimmen, ob der Client mit dem Server synchronisiert ist, gestaltet, minimale Verarbeitung auf dem Server zu erfordern, wenn der Client und der Server in Synchronisation sind. Dies ist beträchtlich, da als eine Regel nur ein kleiner Prozentsatz von Clients Synchronisationsaktivität in einem beliebigen Zeitpunkt erfordert.
  • Die Client-/Serverarchitektur ist auch gestaltet, den Umfang von Daten zu minimieren, die während des Synchronisationsprozesses über die Leitung übertragen werden. Vorzugsweise werden nur die Teile von Dateien, die geändert wurden, heraufgeladen oder heruntergeladen, wenn Dateien synchronisiert werden. Die Architektur enthält auch Algorithmen, um den Umfang von Metadaten zu minimieren, die zwischen dem Server und dem Client während Synchronisation ausgetauscht werden. In dem gemeinsamen speziellen Fall, wo der Client und der Server in Synchronismus sind, ist der Umfang von Daten, die ausgetauscht werden, gerade einige Bytes. Minimieren des Umfangs von übertragenen Daten wird in der nachstehenden Sektion mit dem Titel "Teilweises Herunterladen und Heraufladen" weiter erörtert.
  • Aus der Benutzerperspektive ist der Synchronisationsprozess automatisch, läuft im Hintergrund und erfordert minimale Überwachung oder Eingriff. In einer Ausführungsform der Erfindung initiiert die Client-SA Synchronisation in einem festen Zeitintervall. Ein Fachmann wird aber erkennen, dass die Client-SA einen beliebigen Planungsalgorithmus verwenden kann, um Synchronisation zu initiieren. Außerdem kann der Benutzer auch Synchronisation in einem beliebigen Zeitpunkt manuell initiieren. Die Client-SA überwacht Aktivität des lokalen Dateisystems innerhalb des Verzeichnisses (manchmal ein Ordner genannt) in dem Client, sodass sie Änderungen effizient lokalisieren kann, die zu dem Server-SFS während Synchronisation zu senden sind. Die Client-SA überwacht auch Aktivität des Clientdateisystems um zu verhindern, dass Synchronisation mit laufenden Anwendungen auf der Clientmaschinen interferiert.
  • 1 zeigt einen Server mit mehreren Clients, die auf Dateien zugreifen, die in einem Server-SFS auf dem Server gespeichert sind, gemäß einer Ausführungsform der Erfindung. In 1 enthält Server 105 Server-SFS 110. Server 105 enthält alle typischen Elemente eines Servers, wie etwa einen zentralen Prozessor, Speicher, Bus, Plattenraum etc. Typischerweise ist das Server-SFS 110 auf einem Festplattenlaufwerk innerhalb des Servers 105 installiert, ein Fachmann wird aber erkennen, dass andere Formen von Medien durch den Server 105 verwendet werden können: z.B. entfernbare Medien oder optische Medien. In dem Server-SFS 110 sind Ordner 115-1, 115-2 und 115-3 gespeichert. Obwohl 1 nur drei derartige Ordner zeigt, wird ein Fachmann erkennen, dass es mehr oder weniger Ordner sein können. Jeder der Ordner ist einem Benutzer zugewiesen. Sobald sich der Benutzer angemeldet hat, kann der Benutzer auf die Dateien und Verzeichnisse (kumulativ Verzeichniseinträge genannt) innerhalb des Ordners zugreifen. Z.B. wird Ordner 115-1 mit drei Dateien 117-1, 117-2 und 117-3 gezeigt. Erneut wird ein Fachmann erkennen, dass es mehr oder weniger Dateien in jedem Ordner geben kann, und dass es eine Verzeichnisstruktur geben kann, die mit jedem Ordner in Verbindung steht.
  • Server 105 ist mit einem Netz verbunden, wie etwa Netz 120. Das Netz 120 kann ein Lokalbereichsnetz (LAN), ein Weitbereichsnetz (WAN), ein globales Netz, wie etwa das Internet, ein drahtloses Netz oder ein beliebiger anderer Typ eines Netzes sein. Firewall 125 kann verwendet werden, um Server 105 von Netz 120 zu trennen, wobei Server 105 gegenüber nicht autorisierten Zugriffen geschützt wird. Wie oben erwähnt, wird in einer Ausführungsform der Erfindung Kommunikation zwischen den Clients und Server 105 innerhalb des Hypertext-Transportprotokolls (HTTP) getunnelt. Dies erlaubt, dass Synchronisation sogar durch einen Firewall, wie etwa Firewall 125, geschieht, die normalerweise HTTP-Daten ermöglicht, sich relativ frei zu bewegen.
  • Der Begriff Client verweist auf verschiedene Arten von Maschinen, die mit einem Netz verbunden sein können. Client 130 repräsentiert einen gewöhnlichen Desktop-Computer, wie er am Arbeitsplatz oder in der Wohnung eines Benutzers vorhanden sein kann. Der tragbare Computer 135 repräsentiert einen Notebook oder Laptop-Computer, wie ihn ein Benutzer in ein Hotel auf einer Geschäftsreise mit sich nehmen kann. In dem Maß, in dem die Clientsoftware auf anderen Typen von Einrichtungen installiert werden kann, können diese anderen Einrichtungen Clients sein. Z.B. kann ein Benutzer einen persönlichen digitalen Assistenten (PDA) verwenden, um sich mit Server 105 zu synchronisieren, falls der PDA die Client-SA installieren kann.
  • Wie nachstehend mit Bezug auf 12 erörtert, ist ein anderer Typ eines Clients ein Browser-Client, der ein Applet lau fen lässt. In einer bevorzugten Ausführungsform läuft das Applet in Java und stellt direkten Zugriff auf Dateien eines Benutzers in seinem Serverkonto bereit, sieht aber nicht Synchronisation vor. (Java ist ein eingetragenes Warenzeichen von Sun Microsystems, Inc. in den Vereinigten Staaten und anderen Ländern.)
  • Serversynchronisationsdateisystem
  • Das Server-SFS ist anderen Dateisystemen dadurch ähnlich, dass es Dateien und Verzeichnisse mit vertrauten Metadaten unterstützt, wie etwa Name, Aktualisierungs- und Erstellungszeit und Dateilänge. Es gibt jedoch beträchtliche Unterschiede. Der wichtigste Unterschied besteht darin, dass das Server-SFS nicht ein "Allzweck"-Dateisystem ist, sondern ein Dateisystem mit einem speziellen Zweck, das für Synchronisation gestaltet ist.
  • Zugriff auf das Server-SFS ist auf Operationen auf Dateiebene über das Protokoll begrenzt, wo neue Dateien heraufgeladen werden können, existierende Dateien heruntergeladen, ersetzt, umbenannt, verschoben oder gelöscht werden können, aber eine existierende Datei nicht direkt modifiziert werden kann. Das Protokoll stellt auch Verzeichnisfunktionen bereit, um Verzeichnisse zu erstellen, zu löschen, umzubenennen und zu verschieben.
  • Das Server-SFS unterstützt verschlüsselte Konten, in denen nicht nur Dateidaten verschlüsselt sind, sondern auch Verzeichnis- und Dateinamen innerhalb der Servermetadaten verschlüsselt sind. Die Server-SFS-Metadaten enthalten auch mehrere spezielle Felder, die in Synchronisation verwendet werden.
  • Das Server-SFS unterstützt gleichlaufende Synchronisation einer großen Zahl von Clients, die nur durch das Leistungsverhalten des Servers und Bandbreitenbetrachtungen begrenzt ist. Gleichlaufende Synchronisation unterschiedlicher Benutzerkonten wird ohne zusätzliche Beschränkungen unterstützt. In einem beliebigen gegebenen Konto erzwingt jedoch das Server-SFS ein Einzeländerungsmodell, in dem nur ein Client in einem Zeitpunkt den Zustand der Serverdaten des Benutzers ändern kann. Wenn viele Clients eines einzelnen Benutzerkontos Daten zu dem Server gleichlaufend verschieben, verschachtelt das Server-SFS die Änderungen. Für Dateiheraufladungen wird eine Datei zuerst zu einer temporären Datei auf dem Server heraufgeladen. Nachdem die Dateidaten auf dem Server sind, fügt das Server-SFS die Datei und ihre Metadaten in die Serverkontodatenbank des Benutzers in einer atomischen Operation ein. Somit können viele Clients zu dem gleichen Konto Daten gleichlaufend heraufladen, die Einfügungsoperationen sind aber verschachtelt.
  • Somit geschehen Zustandsänderungen an einem Serverkonto eines Benutzers in Datei- oder Verzeichnis-Änderungsinkrementen. Dies ist eine grundsätzliche Eigenschaft des Server-SFS. Das Server-SFS nummeriert diese Zustände und weist ihnen eine Sequenznummer zu, die der Sync-(abgekürzt für Synchronisation) Index genannt wird. Synchronisieren einer Clientmaschine mit Serverdaten, die mit ihrem Serverkonto nicht auf dem Laufenden sind, kann als der Prozess zum Verschieben des Zustands des Verzeichnisses des Clients von dem alten Server-SFS-Zustand, der durch einen älteren (geringeren) Server-Sync-Index-(SSI) Wert identifiziert wird, zu einem neuen Server-SFS-Zustand, der durch einen jüngeren (höheren) SSI-Wert identifiziert wird, gesehen werden.
  • Der Synchronisationsprozess wird durch eine Client-SA initiiert, wenn sie einen Sync-Abfrageruf zu dem Server durch führt, wobei sie den Client-Sync-Index (CSI) weitergibt, der ihren aktuellen bekannten Zustand des Kontos identifiziert. Falls der SSI-Wert zu dem CSI-Wert passt, der durch den abfragenden Client weitergegeben wird, ist der Client mit dem aktuellen Zustand seines Serverkontos auf dem laufenden. In diesem Fall gibt das Server-SFS den SSI (mit dem gleichen Wert wie der CSI) zu dem Client zurück. Anderenfalls gibt das Server-SFS den neuen höheren SSI zusammen mit der Servermetadateninformation zurück, die der Client benötigt, um sein Konto von seinem aktuellen Zustand zu dem aktuellen Zustand des Servers übergehen zu lassen.
  • Das Server-SFS unterhält eine Hierarchie von drei Ebenen von Sync-Indizes (SIs) in seinen Metadaten. In der höchsten Ebene gibt es ein Konto-SSI-Feld, das den aktuellen Zustand des Kontos identifiziert. Dies ist der erste Wert, der durch das Server-SFS in einem Client-Abfrageruf geprüft wird. Falls dieser Wert zu dem CSI-Wert passt, der durch den abfragenden Client weitergegeben wird, ist das Clientverzeichnis auf dem laufenden.
  • Die Verzeichnis-Sync-Index-(DSI) Felder befinden sich auf der mittleren Ebene der Hierarchie. Das Server-SFS unterhält eine Verzeichnistabelle für jedes Benutzerkonto mit einem Verzeichniselement für jedes Benutzerverzeichnis. Jedes Verzeichniselement enthält einen DSI-Wert, der mit der letzten Änderung an einer Datei oder einem Verzeichnis innerhalb des Verzeichnisses in Verbindung steht. Das Server-SFS verwendet diesen Wert, um rasch Verzeichnisse mit Änderungen zu finden, die zu einem synchronisierenden Client herunter verschoben werden müssen. Verzeichniselemente mit DSI-Werten, die größer als der Wert sind, der durch die abfragenden Client-SA weitergegeben wird, identifizieren die Verzeichnisse mit Änderungen.
  • Auf der untersten Ebene ist das SI-Feld, das sich in jedem Datei- und Verzeichnis-Metadatenelement befindet. Es zeichnet den Datei-Sync-Index (FSI) der letzten Verschiebung oder Umbenennung für das Element (entweder eine Datei oder ein Verzeichnis) oder den FSI, der mit der Erstellung des Elementes in Verbindung steht, auf. Das Server-SFS verwendet diesen Wert, um einzelne Metadatenelemente zu lokalisieren, die zu den abfragenden Clients während des Synchronisationsprozesses gesendet werden müssen. Diese enthalten beliebige Metadatenelemente mit einem FSI-Wert, der größer als der CSI-Wert ist, der durch einen Sync-Abfrageruf des Clients weitergegeben wird.
  • Die Sync-Felder in den Servermetadaten sind:
    Server-ID (SID): Das Server-SFS weist einen SID zu, wenn es ein Verzeichnis oder ein Dateimetadatenelement erstellt, das innerhalb eines Benutzerkontos eindeutig ist. SIDs führen Synchronisation effizienter und zuverlässiger durch, indem ein ID-basierter Prozess an Stelle eines Namenbasierten Prozesses durchgeführt wird, und indem den Client-SAs ermöglicht wird, Dateien und Verzeichnisse zu verfolgen, wenn sie verschoben oder umbenannt werden.
    Datei-Sync-Index (FSI): Dieser Wert zeichnet die Sequenz der Änderung innerhalb eines Serverkontos des Benutzers auf.
    Client-Änderungszeit: Dieses Feld zeichnet die Zeit des Ereignisses des nativen Dateisystems des Clients auf, die zu der Änderung an dem Serverzustand geführt hat, die durch das FSI-Feld identifiziert wird. Falls z.B. ein Benutzer eine Datei in seinem Verzeichnis auf dem Client umbenennt, zeichnet dieses Feld die Zeit dieses Ereignisses der Umbenennung auf. Dieser Zeitwert wird mit der Serverzeit norma lisiert, um den Unterschied in der Zeit zwischen der Clientmaschine und dem Server zu berücksichtigen. Die Client-SA gibt diesen Wert weiter, wenn sie die Umbenennungsänderung zu dem Server durchführt. Der Server verwendet dieses Feld, um Synchronisationskonflikte zu Gunsten der jüngsten Änderung zu vermitteln.
    Verzeichnis-Sync-Index (DSI) (nur für Verzeichniselemente): Dieses Feld zeichnet den DSI der jüngsten Änderung innerhalb des Verzeichnisses auf.
    Datei-ID der vorherigen Version (PFID) (nur für Dateielemente): Dieses Feld wird zu der Client-SA als ein Hinweis weitergegeben, um ihr zu helfen, die vorherige Version einer Datei zu lokalisieren, falls sie die Datei herunterladen muss.
  • Verzeichnisse innerhalb des Server-SFS werden durch ihren SID benannt und enthalten Metadatenelemente für jedes Datei- und Verzeichniselement in dem Verzeichnis. Der SID des Wurzelverzeichnisses ist immer 1.
  • Dateien in dem Server-SFS werden auch nach ihrem SID benannt. Server-SFS-Dateien beginnen mit einem Präfix, der ihren ID, Länge, Aktualisierungs- und Erstellungszeiten enthält. Dem Präfix folgt das Nachrichtenauszugsfeld (MDA), welches 16 Bytes für jede 4096 Bytes von Daten in der Datei enthält. Es folgen die Daten der Datei und sind verschlüsselt, falls das Konto des Benutzers verschlüsselt ist. Die Client-SA konvertiert native Dateien innerhalb des Verzeichnisses auf der Clientmaschine in dieses Format während des Dateiheraufladungsprozesses. Ähnlich werden Dateien zu ihrem nativen Format zurück konvertiert, wenn die Client-SA sie von dem Server herunterlädt.
  • 2 zeigt ein Beispiel der Datenstrukturen in dem Server-SFS von 1, um ein Konto eines Benutzers zu unterhalten, gemäß einer Ausführungsform der Erfindung. In 2 werden die Verzeichnisstruktur und Datenstrukturen für Ordner 202 gezeigt. Ordner 202 enthält Ordner 205 und Dateien 210 und 215. Ordner 205 wiederum enthält Dateien 220 und 225.
  • SSI 230 enthält den SSI für das gesamte Konto. Wie oben erwähnt, ist SSI 230 die höchste Ebene der Hierarchie von SIs. Verzeichnistabelle 235, die mittlere Ebene der Hierarchie von SIs, zeigt die Verzeichnistabelle für das Konto des Benutzers. Wie oben erwähnt, verfolgt die Verzeichnistabelle 235 den DSI-Wert, der mit der letzten Änderung an einer beliebigen Datei oder Unterverzeichnis innerhalb des Verzeichnisses in Verbindung steht. Somit hat zum Beispiel der Wurzelordner (der, wie oben erwähnt, immer einen SID von 1 hat) einen DSI von 37. Ordner 205, mit einem SID von 0x16, hat einen DSI von 35.
  • Auf der untersten Ebene von SIs sind die SIs, die mit jeder Datei und jedem Ordner in dem Konto in Verbindung stehen. Somit zeigen Metadaten 240 für Datei 220 die Datei als mit einem (verschlüsselten) Namen (obwohl in alternativen Ausführungsformen der Name nicht verschlüsselt ist), einem SID von 0x24, einem FSI von 35 (daher der DSI für Ordner 205 in Verzeichnistabelle 235) und einem PFID von 0x24. Metadaten 240 speichern auch die Länge der Datei, die Erstellungs- und Aktualisierungszeiten der Datei (nicht gezeigt, da sie typischerweise auch als Teil des nativen Betriebssystems gespeichert werden) und ihr MDA (nachstehend mit Verweis auf 6-7 erörtert), wonach die Daten der Datei kommen. Ähnlich zeigen Metadaten 245 für Ordner 205 den Ordner als mit einem (verschlüsselten) Namen, einem SID von 0x16, einem FSI von 10 und der Änderungszeit. (Der Unterschied zwischen dem FSI in Metadaten 245 und dem DSI für das Verzeichnis mit SID 0x16 in der Verzeichnistabelle 235 ist der Unterschied zwischen einer Änderung an Ordner 205 und einer Änderung innerhalb von Ordner 205.) Im Vergleich dazu haben Metadaten 250 von Datei 210 einen (verschlüsselten) Namen, einen SID von 0x36, einen FSI von 37 (daher der DSI für den Wurzelordner in Verzeichnistabelle 235), einen PFID von 0x12, die Länge der Datei, Erstellungs- und Aktualisierungszeiten (in 2 nicht gezeigt), MDA und Daten.
  • Clientdateisystem
  • Die Client-SA erstellt ein Client-Synchronisationsdateisystem (CSFS) in jeder Clientmaschine, um den Synchronisationsprozess mit dem Server-SFS zu koordinieren. Dieses Dateisystem enthält Metadaten, aber keine Dateidaten. Dateidaten befinden sich innerhalb des Verzeichnisses in dem Client als Dateien, die zu dem Betriebssystem der Clientmaschine nativ sind. Wie die Servermetadaten enthalten die Clientmetadaten Datei- und Verzeichniselemente mit Feldern, wie etwa Name, Aktualisierungs- und Erstellungszeit und Dateilänge. Clientnamen sind jedoch nicht verschlüsselt.
  • Die Client-SA überwacht Dateisystemaktivität innerhalb des Verzeichnisses des Benutzers auf dem Client. Wenn Dateisystemaktivität auftritt, zeichnet die Client-SA das Ereignis in den Clientmetadaten auf. In einer Ausführungsform der Erfindung, die unter dem Betriebssystem Windows XP/2000/NT läuft, überwacht die Client-SA Dateisystemaktivität unter Verwendung eines Filtertreibers. In einer anderen Ausführungsform der Erfindung, die unter dem Betriebssystem Windows 9x läuft, überwacht die Client-SA Dateisystemaktivität unter Verwendung eines VxD. Überall in dem Rest diese Literaturstelle wird der Abschnitt der Client-SA, der für das Überwachen von Dateisystemaktivität verantwortlich ist, als ein Filtertreiber bezeichnet. Während Synchronisation, wenn die Client-SA Ände rungen von dem Server herunterzieht und Änderungen an dem Verzeichnis des Benutzers durchführt, aktualisiert sie die Clientmetadaten, um jene Änderungen widerzuspiegeln. Wenn die Client-SA Änderungen zu dem Server während des zweiten Teils des Synchronisationsprozesses durchführt, zeichnet sie neue Werte von SID und FSI, die durch das Server-SFS zurückgegeben werden, in die Clientmetadatendatei und Verzeichniselemente auf.
  • Die Sync-Felder in den Clientmetadaten sind:
    Client-ID (CID): Der CID wird einer Datei oder einem Verzeichnis zugewiesen, wenn eine neue Datei oder ein neues Verzeichnisereignis durch die Client-SA von dem Filtertreiber empfangen wird (d.h. es wurde irgend eine Aktivität in dem Verzeichnis auf dem Client initiiert). Die Client-SA verwendet den CID, um Metadatenelemente zu lokalisieren, wenn sie Änderungen zu dem Server durchführt.
    Server-ID (SID): Der SID ist der SID, der zugewiesen wird, wenn eine Datei heraufgeladen wird oder ein Verzeichnis auf dem Server erstellt wird. Der SID wird zu dem Client durch den Server zurückgegeben. Die Client-SA kann auch Clientmetadatenelemente durch SID lokalisieren.
    Datei-Sync-Index (FSI): Dieser FSI ist das Server-SFS-FSI-Feld. Der Server gibt diesen Wert zurück, wenn der Client eine Änderung zu dem Server durchführt.
    Clientänderungszeit: Dieses Feld zeichnet die Zeit auf, wenn eine Client-SA ein Dateisystemereignis von ihrem Filtertreiber empfängt. Falls z.B. ein Benutzer eine Datei in seinem Verzeichnis auf dem Client umbenennt, zeichnet dieses Feld die Zeit auf, als diese Umbenennung aufgetreten ist.
    Flags: Dieses Feld enthält Flags, die Metadatenelemente mit Änderungen identifizieren, die zu dem Server durchgeführt werden müssen. Dieses Feld enthält auch zusätzliche Flags, die verwendet werden, um den Synchronisationsprozess zu managen.
  • Die Client-SA synchronisiert sich mit dem Server durch Synchronisieren der Clientmetadaten mit den Servermetadaten. Dies ist ein ID-basierter Prozess, da SIDs in sowohl den Client- als auch Servermetadaten getragen werden. Die Clientmetadaten haben sowohl einen Client als auch einen SID, da einer neuen Datei oder einem Verzeichnis ein SID nicht zugewiesen wird, bis die Datei heraufgeladen oder das Verzeichnis auf dem Server erstellt ist.
  • 3 zeigt ein Beispiel der Datenstrukturen, die in dem CSFS des Clients von 1 verwendet werden, um ein Konto des Benutzers zu unterhalten, gemäß einer Ausführungsform der Erfindung. In 3 werden die Verzeichnisstruktur und Datenstrukturen für einen Benutzer, der auf Ordner 202 von Server 105 (wie in 2 gezeigt) über Client 130 zugreift, gezeigt. Ordner 302 enthält Ordner 205 und Dateien 310 und 315. Ordner 305 wiederum enthält Dateien 320 und 325.
  • Metadaten 330 zeigen die Metadaten für Datei 320, wie innerhalb von CSFS 335 gespeichert, Teil von Client-SA 337. (Obwohl Metadaten für die anderen Dateien und Ordner innerhalb von Ordner 302 nicht gezeigt werden, wird ein Fachmann erkennen, dass derartige Metadaten existieren.) In Metadaten 330 wird Datei 320 als mit einem Namen (der typischerweise nicht verschlüsselt ist, obwohl der Name in einer alternativen Ausführungsform der Erfindung verschlüsselt sein kann), einem CID von 0x62, einem SID von 0x2A, einem FSI von 35, der Änderungszeit der Datei und den Flags, die in dem Synchronisati onsprozess verwendet werden (wie etwa als identifizierende Metadatenelemente, die zu dem Server verschoben werden müssen), gezeigt. Es wird vermerkt, dass Metadaten 330 nicht gezeigt werden, die Daten von Datei 320 zu speichern, die in dem nativen Betriebssystem von Computer 130 innerhalb der Ordnerstruktur gespeichert ist, wie erwartet.
  • 3 zeigt auch CSI 340, Clientsynchronisationsdaten (CSD) 345 und Filtertreiber 350. CSI 340 speichert den aktuellen Zustand des Clients, im Sinne von SIs, wie durch den Server generiert. CSD 345 werden verwendet, um den Zustand des Servers im letzten Zeitpunkt zu verfolgen, in dem sich der Client mit dem Server synchronisiert hat, und speichert die SIDs von jedem Verzeichnis in dem Konto und die SIDs von jeder Datei und Verzeichnis innerhalb jedes Verzeichnisses in dem Konto. CSD 345 wird nachstehend mit Bezug auf 4A-4C, weiter erörtert. Wie oben erwähnt, wird schließlich Filtertreiber 350 verwendet, um die Aktivität von Dateien innerhalb des Ordners in dem Client zu überwachen. Speziell überwacht Filtertreiber 350 andere Anwendungen, die auf die Dateien in Ordner 302 zugreifen, um so zu bestimmen, welche Dateien in dem Client geändert wurden. Wenn sich der Client später mit dem Server synchronisiert, kann der Client die Information verwenden, die durch den Filtertreiber bereitgestellt wird, um zu identifizieren, welche Dateien zu dem Server zu verschieben sind. Filtertreiber 350 hat eine sekundäre Rolle zum Verhindern von Kollisionen zwischen Dateisynchronisation und laufenden Anwendungen. Filtertreiber 350 wird in der nachstehende Sektion mit dem Titel "Zugreifen auf Dateien" weiter erörtert.
  • Es wird vermerkt, dass Client-SA 337 gezeigt wird, ein Verschlüsselungs-/Entschlüsselungsmodul 355 zu enthalten. In einer Ausführungsform der Erfindung kommunizieren der Server 105 und der Client 130 über ein nicht-vertrauenswürdiges Netz. Das heißt die Kommunikationen zwischen Server 105 und Client 130 sind Gegenstand für Überwachung. Ferner ist Server 105 selbst nicht vertrauenswürdig. Um die Daten in dem Serverkonto zu schützen, werden die Dateien in einem verschlüsselten Format gespeichert. Ferner hat Server 105 keinen Zugriff auf den Chiffrierschlüssel, und kann deshalb die Information nicht entschlüsseln. Um dies zu bewerkstelligen, verschlüsselt, bevor Daten von Client 130 zu Server 105 übertragen werden, das Verschlüsselungs-/Entschlüsselungsmodul 355 die Information. Und wenn Client 130 Daten von Server 105 empfängt, entschlüsselt Verschlüsselungs-/Entschlüsselungsmodul 355 die Information nach dem Empfang. Auf diese Art und Weise hat Client 130 nicht-verschlüsselten Zugriff auf die Daten in den Dateien. Client 130 kann einen beliebigen gewünschten Schlüssel für Verschlüsselung verwenden, ebenso wie ein beliebiges gewünschtes Verschlüsselungsprodukt.
  • Obwohl in einer Ausführungsform der Erfindung weder Server 105 noch den Leitungen der Kommunikation zwischen Server 105 und Client 130 vertraut wird, wird ein Fachmann Situationen erkennen, in denen Server 105 und/oder die Leitungen der Kommunikation zwischen Server 105 und Client 130 vertrauenswürdig sind. Unter derartigen Umständen kann Verschlüsselungs-/Entschlüsselungsmodul 355 beseitigt werden.
  • Synchronisationsprozess
  • Der Client fragt den Server auf Änderungen durch andere Clients ab, indem er seinen aktuellen CSI zu dem Server in einem Sync-Abfrageruf weitergibt. Falls der CSI zu dem SSI-Wert des Serverkontos passt, dann ist der Client mit dem Server auf dem laufenden. Anderenfalls fordert die Client-SA Serversynchronisationsdaten (SSD) an. Die SSD enthalten die folgenden Daten:
    Aktueller SSI des Servers,
    SIDs der Verzeichnisse mit Änderungen,
    SIDs von dem Kindverzeichnis und Kinddateielementen für jedes geänderte Verzeichnis,
    Servermetadatenelemente für beliebige Elemente mit FSIs,
    die größer als der CSI sind, die durch den Sync-Abfrageruf des Clients weitergegeben werden.
  • Mit dem SSD aktualisiert die Client-SA das Verzeichnis und Metadaten des Clients, um zu dem Serverzustand zu passen. Um diesen Aktualisierungsprozess zu managen, unterhält die Client-SA die CSD, die sie verwendet, um die Zustandsänderungen des Servers zu verfolgen. CSD-Daten enthalten:
    SIDs aller Serververzeichnisse, die für den vorherigen CSI existiert haben,
    Für jeden Verzeichnis-SID die Menge von Verzeichnis- und Dateien-SIDs, die in dem Verzeichnis enthalten sind, die für den vorherigen CSI existiert haben.
  • Die Client-SA vergleicht den SSD, der von dem Server-SFS zurück gegeben wird, mit ihren CSD um zu bestimmen, wie der Client aktualisiert werden muss. Die Client-SA muss nur die Verzeichnisse untersuchen, die als mit Änderungen in den SSD identifiziert wurden. Es wird vermerkt, dass die Client-SA nicht die gesamten CSD untersuchen muss. Dieser SSD-CSD-Vergleichsprozess kann die folgenden Situationen aufdecken:
    SID ist in den SSD, aber nicht in den CSD. Der SID identifiziert eine neue Datei oder Verzeichnis, die/das auf dem Server existiert und auf dem Client repliziert werden muss. In dem Fall einer Datei muss sie heruntergeladen werden, Verzeichnisse müssen nur erstellt werden. In diesem Fall enthalten die SSD das Metadatenelement für die Datei oder Verzeichnis.
    SID ist in den CSD, aber nicht in den SSD. Der SID identifiziert eine Datei oder ein Verzeichnis, die/das auf dem Server gelöscht wurde, aber noch auf dem Client vorhanden ist. Die Client-SA muss die Datei oder das Verzeichnis löschen.
    SID ist in beiden Mengen, aber in unterschiedlichen Verzeichnissen vorhanden. Der SID identifiziert eine Datei oder ein Verzeichnis, die/das auf dem Server von einem Verzeichnis zu einem anderen verschoben wurde. Die Client-SA muss die Verschiebung replizieren. In diesem Fall enthalten die SSD auch das Metadatenelement für die Datei oder das Verzeichnis, das den Namen der Datei oder des Verzeichnisses enthält. Der Name muss in dem Fall geprüft werden, in dem die Datei auch auf dem Server umbenannt wurde.
    SID ist in beiden Mengen in dem gleichen Verzeichnis vorhanden. Der SID identifiziert eine Datei, die auf dem Server nicht verschoben oder gelöscht wurde. Die Client-SA muss dennoch die SSD auf ein Metadatenelement mit dem SID in dem Fall prüfen, wo die Datei oder das Verzeichnis auf dem Server umbenannt wurde.
  • Mit jeder Änderung, die die Client-SA an dem nativen Dateisystem des Clients durchführt, führt sie auch entsprechende Aktualisierungen an den Clientmetadaten durch. Wenn dieser Prozess abgeschlossen ist, hat der Client seine CSD aktualisiert, um die Änderungen widerzuspiegeln, die durch das Server-SFS in den SSD gesendet wurden.
  • In diesem Punkt ist die Client-SA mit dem Server in Synchronismus, wie durch die SSD definiert, die sie von dem Server empfängt. Die Client-SA prüft nun ihre eigenen Clientmetadaten auf beliebige Änderungen, die sie zu dem Server durchfüh ren muss. Diese Änderungen enthalten eine neue Datei (Heraufladen), ein neues Verzeichnis, Verschiebung, Umbenennung und Löschung von Datei oder Verzeichnis.
  • Bei Operationen zum Heraufladen einer Datei und Erstellung eines Verzeichnisses gibt der Server den SID zurück, der der neuen Datei oder dem Verzeichnis zugewiesen ist, sodass die Client-SA den SID in dem Datei- oder Verzeichnis-Metadatenelement des Clients speichern kann.
  • Bei Operationen zum Verschieben, Umbenennen und Löschen identifiziert die Client-SA die Serverdatei oder das Verzeichnis durch den SID, der in den Clientmetadaten übertragen wird.
  • Bei allen Änderungsoperationen mit Ausnahme vom Löschen gibt die Client-SA die Clientänderungszeit (abgestimmt zur Serverzeit) zu dem Server weiter.
  • In jeder Änderungsoperation gibt das Server-SFS den SSI der Änderung an den Serverdaten des Benutzers zu dem Client zurück. Falls der SSI, der durch eine Serveränderungsoperation zurückgegeben wird, gleich dem CSI der Client-SA plus eins ist, zeigt er an, dass der Client der einzige Änderer ist und er kann seine CSD aktualisieren, sodass er das nächste Mal, wenn er einen Sync-Abfrageruf durchführt, nicht seine eigenen Änderungen in den SSD zurückbekommt. Aktualisierung der CSD enthält Aktualisieren des CSI ebenso wie Durchführung der notwendigen Aktualisierung an den SID-Mengen des CSD-Verzeichnisses, um die Aktualisierung widerzuspiegeln.
  • Falls der SSI, der durch den Server zurückgegeben wird, größer als der Client-SA-CSI plus eins ist, zeigt er an, dass ein anderer Client eine Änderung an den Serverdaten durchgeführt hat. In diesem Fall kann der Client seine CSD nicht aktualisieren oder würde die Änderungen versäumen, die durch den (die) anderen Client(s) durchgeführt wurden in dem nächsten Sync-Abfrageruf. Wenn dies geschieht, bekommt die Client-SA ihre eigenen Änderungen zu ihr in dem nächsten Sync-Ruf zurückgegeben, sie werden aber herausgefiltert und haben keinen negativen Einfluss außer dem geringen Overhead, der mit Weitergabe redundanter Daten in den SSD von dem Server-SFS zu dem Client in Verbindung steht.
  • 4A-4C zeigen den Transfer von Information zwischen dem Client und dem Server von 1, gemäß einer Ausführungsform der Erfindung. In 4A sendet Client 130 den CSI zu Server 105, wie in Kasten 405 gezeigt. (Client 130 enthält einen Sender/Empfänger 402, um mit Server 105 zu kommunizieren.) Server 105 vergleicht den empfangenen CSI mit dem SSI. Falls die beiden den gleichen Wert aufweisen, gibt dann Server 105 den SSI zu dem Client zurück, wie in Kasten 410 gezeigt. Da der SSI den gleichen Wert wie der CSI hat, weiß Client 130, dass Client 130 mit Server 105 synchronisiert ist. Falls es beliebige Änderungen gibt, die zu Server 105 durchzuführen sind, kann Client 130 dann zu 4C weiter springen. Anderenfalls hat Server 105 Änderungen, die Client 130 fehlen. Server 105 sendet dann die SSD zu Client 130 (als Reaktion auf eine Anforderung nach den SSD durch den Client), die den Client über die entsprechenden Änderungen informieren, wie in Kasten 415 gezeigt. Speziell enthalten die SSD den SSI, die SIDs beliebiger Verzeichnisse, die Änderungen seit dem letzten Mal enthalten, in dem Client 130 mit Server 105 synchronisiert wurde, die SIDs von allen Elementen (Dateien und Verzeichnissen) in den geänderten Verzeichnissen und die Metadaten aller Elemente (Dateien und Verzeichnisse), die seit dem letzten Mal geändert wurden, in dem Client 130 mit Server 105 synchronisiert wurde.
  • Wie oben erwähnt, kann Client 130 durch Vergleichen der SSD mit den CSD bestimmen, welche Änderungen an dem Konto in Ser ver 105 durchgeführt wurden. Bezug nehmend nun auf 4B werden die vier möglichen Ergebnisse des Vergleichs der CSD und SSD gezeigt. In Kasten 420 wird ein SID in den SSD, aber nicht den CSD gefunden. Client 130 fordert dann die geeignete Datei von Server 105 an oder erstellt das geeignete Verzeichnis in dem Ordner auf dem Client. In Kasten 425 wird ein SID in den CSD, aber nicht den SSD gefunden. Client 130 löscht dann die geeignete Datei oder das Verzeichnis. In Kasten 430 wird ein SID in unterschiedlichen Verzeichnissen in den CSD und SSD gefunden. Client 130 verschiebt dann (und benennt um, falls notwendig) die geeignete Datei von einem Verzeichnis zu einem anderen. Schließlich wird in Kasten 435 ein SID in dem gleichen Verzeichnis in sowohl den CSD als auch SSD gefunden. Client 130 prüft dann um sicherzustellen, dass die Datei auf dem Server nicht umbenannt wurde.
  • Es wird vermerkt, dass die in 4B gezeigten Operationen eine in einem Zeitpunkt in einzelnen Dateien oder Verzeichnissen durchgeführt werden. D.h. in 4B bestimmt der Client Aktualisierungen, die von dem Server abzurufen sind basierend auf dem Vergleich der SSD mit den CSD, und fordert Änderungen von dem Server eine Datei oder ein Verzeichnis in einem Zeitpunkt an. Sobald der Client eine Durchführung der Änderungen in einer Datei oder Verzeichnis beendet hat, prüft der Client um zu sehen, ob es beliebige weitere Änderungen gibt, die durchzuführen sind basierend auf dem Vergleich der SSD mit den CSD. Falls es weitere Änderungen gibt, kann der Client beliebige von Kästen 420-435 in der nächsten Datei oder Verzeichnis durchführen.
  • Sobald Client 130 alle entsprechenden Änderungen von Server 105 heruntergeladen hat, kann Client 130 alle entsprechenden Änderungen, die in Client 130 durchgeführt sind, zu Server 105 senden. Bezug nehmend auf 4C lädt Client 130 in Kasten 440 eine Datei zu Server 105 herauf, oder instruiert Ser ver 105, ein Verzeichnis zu erstellen. Server 105 antwortet durch Rücksenden des SID für die/das neu heraufgeladene Date/erstellte Verzeichnis, sodass Client 130 den SID in den CSD speichern kann. In Kasten 445 sendet Client 130 die geeigneten Instruktionen zu Server 105, um Dateien und Verzeichnisse zu verschieben, umzubenennen oder zu löschen. Schließlich sendet Server 105 in Kasten 450 den neuen SSI zu Client 130, der die Änderungen widerspiegelt, die durch Client 130 heraufgeladen wurden. Client 130 kann dann den neuen SSI mit dem aktuellen CSI vergleichen. Wie oben erwähnt, wird der neue SSI um eins größer als der aktuelle CSI sein, falls keine anderen Clients andere Änderungen mit Server 105 synchronisiert haben. Falls der neue SSI um eins größer als der aktuelle CSI ist, dann aktualisiert Client 130 seinen CSI, und der Prozess ist abgeschlossen. Anderenfalls weiß Client 130, dass es neue Änderungen gibt, die von Server 105 herunterzuladen sind, und der Prozess kann zu Kasten 415 in 4A zurückkehren.
  • Es wird vermerkt, dass die in 4C gezeigten Operationen iterativ sind. D.h., wie bei 4B, der Client lädt eine einzelne Datei zu dem Server herauf, sendet Instruktionen zu dem Server, ein einzelnes Verzeichnis zu erstellen, oder sendet Instruktionen zu dem Server, eine einzelne Datei oder Verzeichnis zu verschieben, umzubenennen oder zu löschen. Als Reaktion auf die Instruktionen des Clients sendet der Server den neuen SSI zu dem Client. Auf diese Art und Weise kann der Client bestimmen, ob beliebige andere Clients Änderungen parallel mit Client 130 durchführen. Falls es geschieht, dass ein anderer Client Änderungen parallel mit Client 130 durchführt, dann wird der SSI, der von Server 105 empfangen wird, größer als erwartet sein. In diesem Fall kann Client 130 den letzten "erwarteten" SSI-Wert als den CSI verwenden, wenn der Client die neuen Änderungen von dem Server anfordert. Es wird aber vermerkt, dass Client 130 den Prozess zum Heraufladen nicht unterbricht, um die neuen Änderungen herunterzuladen. Stattdessen schließt Client 130 seinen Prozess zum Heraufladen vor einer Rückkehr zu Kasten 415 in 4A ab, um die Änderungen herunterzuladen, die in dem Server durch den anderen Client durchgeführt wurden.
  • Wenn der Client eine Datei zu dem Server herauflädt, beginnt der Client durch Herstellen einer Kopie der Datei. Die Client-SA verwendet den Filtertreiber, um die Datei zu lesen. Der Filtertreiber stellt sicher, dass die Kopieroperation nicht mit einer Anwendung interferiert, die versucht, auf die Datei während des Kopierens zuzugreifen. Kopieren der Datei ist relativ schnell, und sobald die Kopie hergestellt ist, kann die Client-SA in der Kopie der Datei arbeiten, ohne sich um eine andere Anwendung in dem Client zu kümmern, die versucht, auf die Datei zuzugreifen. Sobald die Datei vollständig zu dem Server heraufgeladen wurde, kann der Client dann die zeitweilige Kopie der Datei löschen.
  • 5 zeigt den Client von 1, der die SSD mit den CSD vergleicht, um zu bestimmen, welche Datei sich geändert hat, in Übereinstimmung mit einer Ausführungsform der Erfindung. In 5 hat der Client SSD 505 von Client 105 empfangen. Die SSD 505 enthalten einen neuen SSI (38), die SIDs der Verzeichnisse, die geänderte Elemente haben (SID 0x16), die SIDs aller Elemente in den geänderten Verzeichnissen (SID 0x37, was ein neuer SID zu Client 130 ist), und die Metadaten für das geänderte Element. Die Metadaten werden in Kasten 510 gezeigt. Es wird besonders vermerkt, dass Metadaten 510 den PFID von 0x2A enthalten. Client 130 lokalisiert das Metadatenelement für die Datei mit SID 0x2A in seinen Clientmetadaten. Aus dem Clientmetadatenelement kann der Client den Pfad für die Datei aufbauen. Dieser Pfad identifiziert die vorherige Version der Datei, falls sie existiert. (Eine andere Taktik, die der Client verwenden kann um zu bestimmen, ob die Datei eine vorherige Version hat, besteht darin nachzusehen, ob das Verzeichnis des Clients entsprechend dem Verzeichnis, in dem sich die Datei auf dem Server befindet, eine Datei mit dem gleichen Namen wie dem in den Metadaten hat, die durch den Server bereitgestellt werden.) Client 130 kann dann das MDA der Datei mit dem (neuen) SID 0x37 anfordern um zu bestimmen, welche Blöcke der Datei geändert wurden.
  • Teilweises Herunterladen und Heraufladen
  • Ein einzelner Server kann Ordner für eine große Zahl von Benutzern unterstützen, und jeder Benutzer kann mehrere Clients haben, die auf einen einzelnen Ordner zugreifen. Kommunizieren mit allen diesen Clients kann Zeit brauchen, und während ein Server mit einem Client kommuniziert, hat der Server weniger Verarbeitungsfähigkeit, um einen zweiten Client zu unterstützen. Nach einer gewissen Zahl von gleichzeitigen Clientanforderungen kann der Server keinerlei weitere Clients bedienen. Es ist deshalb wünschenswert, die Menge von Daten zum minimieren, die ein Server zu/von einem Client sendet oder empfängt, sodass Anforderungen anderer Clients auf eine zeitgerechte Art und Weise behandelt werden können.
  • Wenn Dateien aktualisiert werden, wird häufig nur ein Abschnitt einer Datei geändert. Wenn z.B. ein Textdokument editiert wird, werden einige Absätze entfernt, und andere Absätze werden eingefügt. Es wird nicht jedes Byte in der Datei geändert: gewöhnlich wird nur ein kleiner Prozentsatz der Datei tatsächlich geändert. Außerdem tendieren Änderungen dazu, lokalisiert zu sein. Es ist üblich, dass alle Änderungen an einer Datei innerhalb einer relativ kurzen Spanne auftreten. Falls der Server die gesamte Datei empfangen oder übertragen würde, selbst wenn sich nur einige wenige Bytes geändert haben, würde der Server Zeit zum Übertragen oder Empfangen von Information verschwenden, die bereits auf der Zielmaschine vorhanden ist.
  • Falls ein Benutzer eine langsame Netzverbindung hat und eine kleine Änderung an einem großen Dokument durchgeführt hat, kann es ähnlich zeitraubend sein darauf zu warten, dass das gesamte Dokument heraufgeladen oder heruntergeladen wird. Eine Ausführungsform der Erfindung verwendet MDAs, um teilweises Herunterladen und Heraufladen zu implementieren, um die Menge von Daten zum minimieren, die über die Leitung transferiert werden, wenn eine Datei aktualisiert wird. MDAs sind Felder von 16-Byte-Nachrichtenauszügen, die aus jedem 4K-Block einer Datei berechnet werden. (Ein Fachmann wird erkennen, dass andere Größen von Nachrichtenauszügen und Blöcken möglich sind, und dass Synchronisation in Teilen der Datei durchgeführt werden kann, die größer oder kleiner als ein einzelner Block sind.) Nachrichtenauszüge sind Einweg-Hashes, die eine äußerst geringe Wahrscheinlichkeit von Kollision aufweisen, und sind als solche quasi-eindeutige Identifikatoren für die Blöcke, aus denen sie berechnet wurden. In einer Ausführungsform der Erfindung ist die Hash-Funktion ein MD5-Hash, obwohl ein Fachmann erkennen wird, dass andere Hash-Funktionen verwendet werden können. Die Client-SA berechnet und vergleicht MDAs. Durch Vergleichen eines MDA, der durch den Client berechnet wird, mit einem MDA, der von dem Server abgerufen wird, kann der Client einzelne Blöcke mit Änderungen identifizieren. Nach Heraufladen zu dem Server werden MDAs mit den Dateidaten in der Server-SFS-Datenbank gespeichert. Falls Daten in nur einem Block geändert werden, muss somit nur dieser eine Block übertragen werden. Falls die gesamte Datei sehr groß ist (und es ist üblich, Dateien zu sehen, die Megabytes in der Größe sind), ist Übertragung von nur einem Block sehr effizient relativ zu einer Übertragung der gesamten Datei.
  • 6 zeigt eine Beispiel-Hash-Funktion, die durch den Client von 1 verwendet wird, um die Menge von Information zu reduzieren, die zwischen dem Client und dem Server übertragen wird, gemäß einer Ausführungsform der Erfindung. In 6 wird Hash-Funktion 605 verwendet, um die Nachrichtenauszüge des MDA zu kalkulieren. Die Hash-Funktion 605 nimmt einem Block der Datei, wie etwa Block 610 von Datei 615, und berechnet den Nachrichtenauszug, wie etwa Nachrichtenauszug 620 in MDA 625. MDA 620 kann dann verwendet werden um zu bestimmen, ob die Datei nur teilweise heraufgeladen werden kann. Falls mindestens eine Schwellenzahl von Nachrichtenauszügen in den MDAs auf dem Client und Server passen, dann müssen nur die Blöcke entsprechend Nachrichtenauszügen, die sich zwischen dem Client und dem Server unterscheiden, übertragen werden. Falls andererseits weniger als eine Schwellenzahl von Nachrichtenauszügen in den MDAs passen, wird die gesamte Datei übertragen.
  • Heraufladen
  • Bevor die Client-SA eine Datei herauflädt, berechnet sie einen MDA von der Datei. Sie fordert dann von dem Server den MDA für die Version der Datei auf dem Server durch Senden zu dem Server des SID der Datei, des Namen der Datei und des Verzeichnisses, zu dem die Datei heraufzuladen ist, an. Der Server prüft dann um zu sehen, ob er eine Datei mit diesem SID hat, oder ob es eine Datei mit dem gleichen Namen wie dem, der durch den Client spezifiziert wird, in dem Verzeichnis gibt, zu dem der Client die Datei herauflädt. Falls der Server eine Version der Datei findet, gibt er den MDA der Datei zu dem Client zurück. Die Client-SA vergleicht die zwei MDAs, und falls eine ausreichend hohe Zahl von Nachrichtenauszügen passen, führt sie ein spezielles Heraufladen durch, wo nur sich unterscheidende Nachrichtenauszüge und ihre entsprechenden 4K-Datenblöcke heraufgeladen werden. Der Server baut die neue Version der Datei durch Starten mit einer Kopie der vorherigen Version und ihr Modifizieren mit den heraufgeladenen Daten auf. Sobald die Datei vollständig heraufgeladen wurde, speichert der Server dann die Datei in dem spezifizierten Verzeichnis und aktualisiert die Dateimetadaten.
  • Herunterladen
  • Bevor die Client-SA eine Datei herunterlädt, versucht sie, eine vorherigen Version der Datei zu finden. Die Client-SA kann den PFID verwenden, der durch den Server mit den neuen Synchronisationsmetadaten zu diesem Zweck weitergegeben wird. Falls eine vorherige Version existiert, verwendet die Client-SA den Filtertreiber, um die Datei zu kopieren. Dies erlaubt anderen Anwendungen, auf die ursprüngliche Datei zuzugreifen, ohne Störung von der Client-SA. Der Client berechnet auch einen MDA aus der Datei. Die Client-SA fordert dann an, den MDA von der Datei herunterzuladen, und vergleicht die zwei MDAs. Falls die zwei Felder ausreichend ähnlich sind, führt die Client-SA ein spezielles Herunterladen durch, wobei sie die spezifischen 4K-Blöcke anfordert, die sich unterscheidende Nachrichtenauszugswerte haben. Sie erstellt die Download-Datei durch Modifizieren der Kopie der Datei mit den angeforderten heruntergeladenen 4K-Blöcken. Falls andererseits weniger als eine Schwellenzahl von Nachrichtenauszügen in den MDAs passen, wird dann die gesamte Datei von dem Server heruntergeladen. Sobald die Download-Datei vollständig aufgebaut ist, fügt der Client die Download-Datei in ihren endgültigen Standort ein, wobei eine ältere Version der Datei ersetzt wird, falls sie existiert.
  • 7 zeigt den Client von 1, der einen spezifischen Block von dem Server zieht, gemäß einer Ausführungsform der Erfindung. Obwohl 7 im Sinne von Synchronisation des Clients mit dem Server durch Herunterladen eines Blocks von dem Server gezeigt wird, wird ein Fachmann erkennen, dass 7 leicht modifiziert werden kann, um den Client zu zeigen, der einen Block zu dem Server herauflädt. In 7 vergleicht Client-SA 337 die Nachrichtenauszüge, die von dem Server empfangen werden (MDA 705), mit den Nachrichtenauszügen, die in dem Client berechnet werden (MDA 710). Insbesondere identifiziert der Vergleich, dass sich ein Block in der Datei auf dem Client, mit dem Nachrichtenauszug 715, von einem Block auf dem Server, mit dem Nachrichtenauszug 720, unterscheidet. Durch Vergleichen von MDAs 705 und 710 kann Client-SA 337 den Block identifizieren, der von dem Server herunterzuziehen ist, was durch Pfeil 725 gezeigt wird. Es wird vermerkt, dass da andere Blöcke, wie etwa Blöcke 730 und 735, den gleichen Nachrichtenauszug aufweisen, diese anderen Blöcke nicht von dem Server abgerufen werden.
  • Zugreifen auf Dateien
  • Die Client-SA verwendet eine Treiberlesefunktion, die durch ihren Filtertreiber exportiert wird, wenn die Client-SA Dateien in dem Verzeichnis auf dem Client liest. Die Client-SA liest Dateien in zwei Situationen: während Heraufladen von Dateien, und während teilweisen Herunterladen, wenn sie einen MDA für eine aktuelle Datei berechnet.
  • Die Client-SA verwendet die exportierte Treiberlesefunktion, sodass sie Dateien innerhalb des Verzeichnisses eines Benutzers lesen kann, ohne Störung mit laufenden Anwendungen. Wenn die Client-SA einen Treiberleseaufruf durchführt, überwacht der Treiber Dateisystemaktivität um zu erfassen, ob beliebige andere Prozesse versuchen, auf die Datei während des Aufrufes zuzugreifen. Falls ein Zugriff erfasst wird, hebt der Filtertreiber die Operation zeitweilig auf, bricht den Client-SA-Leseaufruf ab, und gibt dann die aufgehobene Operation frei, sodass er normal fortfahren kann.
  • Flussdiagramme
  • 8A-11F zeigen Flussdiagramme der Prozeduren, die verwendet werden, um den Client und den Server zu synchronisieren. 8A-8B zeigen ein Flussdiagramm der Prozedur zum Synchronisieren der Clients und des Servers von 1 gemäß einer Ausführungsform der Erfindung. In 8A sendet in Schritt 805 der Client den CSI zu dem Server. In Schritt 810 empfängt der Client den SSI von dem Server. In Schritt 815 vergleicht der Client den CSI und SSI. Schritt 820 verzweigt basierend darauf, ob der Client mit dem Server in Sync ist oder nicht. Falls der Client mit dem Server nicht in Sync ist, dann empfängt der Client in Schritt 825 (8B) die SSD von dem Server. In Schritt 830 vergleicht der Client die CSD mit den SSD, um beliebige Änderungen in dem Server zu identifizieren, die dem Client fehlen. In Schritt 840 synchronisiert sich der Client mit dem Server, um beliebige Änderungen auf den Server herunterzuladen. In Schritt 845 (8C) prüft der Client um zu sehen, ob er beliebige Änderungen hat, die zu dem Server gesendet werden müssen. Falls ja, dann sendet der Client in Schritt 850 die Änderungen zu dem Server.
  • 9A-9E zeigen ein Flussdiagramm der Prozedur, die verwendet wird, um Änderungen von dem Server zu einem Client von 1 zu ziehen, gemäß einer Ausführungsform der Erfindung. In 9A berechnet der Client in Schritt 902 die SSD- und CSD-Menge von SIDs, die die Vereinigung der Menge von SIDs in den Verzeichnissen der SSD mit der Menge der SIDs in den gleichen Verzeichnissen der CSD ist. In Schritt 905 wählt der Client einen SID in der SSD- und CSD-Menge. In Schritt 110 prüft der Client um zu sehen, ob der SID in den SSD, aber nicht in den CSD ist. Falls der SID in den SSD, aber nicht den CSD ist, dann gibt es eine Datei oder ein Verzeichnis auf dem Server, nicht auf dem Client. In Schritt 115 lädt der Client die Datei von dem Server herunter oder erstellt ein Verzeichnis.
  • In Schritt 920 (9B) prüft der Client um zu sehen, ob der SID in den CSD, aber nicht den SSD ist. Falls ja, löscht der Client dann in Schritt 925 die Datei/das Verzeichnis auf dem Client. In Schritt 130 entfernt der Client das Metadatenelement für die Datei/das Verzeichnis aus den Clientmetadaten. Schließlich entfernt der Client in Schritt 935 den SID aus den CSD.
  • In Schritt 940 (9C) prüft der Client um zu sehen, ob der SID in unterschiedlichen Verzeichnissen in den CSD und SSD ist. Falls der SID in unterschiedlichen Verzeichnissen in den CSD und SSD ist, dann verschiebt der Client in Schritt 145 die Datei/das Verzeichnis auf dem Client zu dem Verzeichnis, das durch die SSD spezifiziert ist. In Schritt 950 aktualisiert der Client die Metadaten für das Element in den Clientmetadaten. Schließlich verschiebt der Client in Schritt 955 den SID in den CSD, um die Änderungen widerzuspiegeln, die in dem Client durchgeführt werden.
  • In Schritt 960 (9D) prüft der Client um zu sehen, ob die SSD ein Metadatenelement für den SID enthalten. Es wird vermerkt, dass diese Prüfung durchgeführt wird, ob der SID bestimmt wurde oder nicht, zu einem anderen Verzeichnis in Schritt 940 (in 9C) verschoben worden zu sein. Falls die SSD ein Metadatenelement für den SID enthalten, dann prüft der Client in Schritt 965 um zu sehen, ob das SSD-Metadatenelement einen unterschiedlichen Namen von dem Namen für den SID in dem Client hat. In Schritt 970 prüft der Client um zu sehen, ob das Clientmetadatenelement eine jüngere Änderung als das SSD-Metadatenelement hat. Falls das SSD-Metadatenelement eine Umbenennung enthält, die jünger als eine beliebige Dateiumbenennung auf dem Client ist, dann wird in Schritt 975 (9E) die Datei/das Verzeichnis auf dem Client umbenannt, und in Schritt 980 werden die Clientmetadaten aktualisiert, um zu dem SSD-Metadatenelementnamen zu passen. Falls die SSD ein Metadatenelement für den SID nicht enthalten, oder falls der Name der gleiche ist, oder falls der Client die Datei kürzlicher umbenannt hat als es der Server getan hat, dann werden Schritte 975 und 980 nicht durchgeführt.
  • Ungeachtet der Ergebnisse der Prüfungen in Schritten 910, 920, 940, 960, 965 und 970 prüft der Client in Schritt 985 um zu sehen, ob es beliebige weitere SIDs in den SSD und CSD gibt, die geprüft werden müssen. Falls es beliebige verbleibende SIDs gibt, die zu prüfen sind, dann bekommt der Client in Schritt 990 den nächsten SID und kehrt zu Schritt 910 zurück (auf 9A). Anderenfalls setzt der Client in Schritt 995 den CSI auf den Wert des SSI, und der Client hat alle Änderungen von dem Server abgerufen.
  • 10A-10C zeigt ein Flussdiagramm der Prozedur, die verwendet wird, um Dateien von dem Server zu einem Client von 1 herunterzuladen, gemäß einer Ausführungsform der Erfindung. In Schritt 1005 lokalisiert der Client das SSD-Metadatenelement für den SID. In Schritt 1010 bestimmt der Client, ob das Element eine Datei ist. Falls das Element nicht eine Datei ist, dann erstellt der Client in Schritt 1012 das Verzeichnis. Falls der Client eine Datei ist, dann verwendet der Client anderenfalls in Schritt 1015 den PFID, den Eltern-Verzeichnis-SID und den Metadatenelementnamen, um die Datei zu lokalisieren, falls er kann. In Schritt 1020 prüft der Client um zu sehen, ob er in der Lage war, eine vorherige Version der Datei zu lokalisieren.
  • Falls der Client in der Lage war, eine vorherige Version der Datei zu lokalisieren, dann kopiert der Client in Schritt 1025 (10B) die vorherige Version der Datei zu einer zeitweiligen Datei, unter Verwendung der Filtertreiber-Lesefunktion. In Schritt 1030 berechnet der Client den MDA für die zeitweilige Datei. In Schritt 1035 ruft der Client den MDA für die Datei von dem Server ab. In Schritt 1040 vergleicht der Client die empfangenen und berechneten MDAs. In Schritt 1045 prüft der Client um zu sehen, wie viele Nachrichtenauszüge in den verglichenen MDAs gepasst haben. Falls eine unzureichende Zahl von Nachrichtenauszügen zwischen den verglichenen MDAs gepasst haben, oder falls der Client eine vorherige Version der Datei in Schritt 1020 (in 10A) nicht lokalisieren konnte, dann lädt der Client in Schritt 1050 die gesamte Datei herunter.
  • Falls aber eine Schwellenzahl von Nachrichtenauszügen zwischen den verglichenen MDAs gepasst haben, dann fordert der Client in Schritt 1055 (10C) die geänderten Blöcke (im Gegensatz zu der gesamten Datei) von dem Server an und empfängt sie. In Schritt 1060 baut der Client die heruntergeladene Datei aus der zeitweiligen Datei und den empfangenen geänderten Blöcken auf. In Schritt 1065 verschiebt der Client die heruntergeladene Datei zu dem Verzeichnis, in dem sie gespeichert werden soll, egal ob der Client die gesamte Datei oder nur die geänderten Blöcke heruntergeladen hat.
  • In Schritt 1075 erstellt der Client ein neues Metadatenelement für den SID aus dem SSD-Metadatenelement, egal ob das heruntergeladene Element eine Datei war oder ein neu erstelltes Verzeichnis. In Schritt 1080 fügt der Client den SID den CSD hinzu.
  • 11A-11F zeigen ein Flussdiagramm der Prozedur, die verwendet wird, um Änderungen zu dem Server von einem Client von 1 zu verschieben, gemäß einer Ausführungsform der Erfindung. In Schritt 1105 bekommt der Client die erste Änderung, die zu dem Server zu verschieben ist. In Schritt 1107 prüft der Client um zu sehen, ob die Änderung eine Datei ist, die zu dem Server heraufzuladen ist. Falls die Änderung eine Datei ist, die heraufzuladen ist, dann erstellt der Client in Schritt 1110 eine zeitweilige Kopie der Datei unter Verwendung der Filtertreiber-Lesefunktion. In Schritt 1112 berechnet der Client den MDA für die zeitweilige Kopie der Datei. In Schritt 1115 sendet der Client den SID, den Eltern-Verzeichnis-SID und den Dateinamen zu dem Server.
  • In Schritt 1117 (11B) bestimmt der Server, ob eine vorherige Version der Datei auf dem Server ist. Falls nicht, dann werden in Schritt 1120 die gesamte Datei, der MDA und das Clientmetadatenelement zu dem Server heraufzeladen. Falls der Server in der Lage war, eine vorherige Version der Datei zu lokalisieren, dann fordert der Client in Schritt 1122 den MDA der vorherigen Version der Datei an und empfängt ihn. In Schritt 1125 vergleicht der Client den empfangenen MDA mit dem MDA, der für die zeitweilige Kopie der Datei berechnet ist. In Schritt 1127 bestimmt der Client, ob eine Schwellenzahl von Nachrichtenauszügen zwischen den berechneten und empfangenen MDAs passt. Falls eine unzureichende Zahl von Nachrichtenauszügen zwischen den empfangenen und berechneten MDAs passt, dann kehrt der Client zu Schritt 1120 zurück und lädt die gesamte Datei herauf.
  • Falls eine Schwellenzahl von Nachrichtenauszügen zwischen den empfangenen und berechneten MDAs passt, dann lädt der Client in Schritt 1130 (11C) die geänderten Blöcke und Nachrichtenauszugswerte zu dem Server herauf. In Schritt 1132 lädt der Client das Clientmetadatenelement zu dem Server herauf. In Schritt 1135 baut der Server die heraufgeladene Datei aus der vorherigen Version und den empfangenen Blöcken auf.
  • Ob der Client ein teilweises oder vollständiges Heraufladen der Datei durchgeführt hat oder nicht, fügt der Server in Schritt 1137 die heraufgeladene Datei, den MDA und das Metadatenelement in die Server-SFS-Datenbank ein. In Schritt 1140 aktualisiert der Server den SSI, und in Schritt 1142 weist der Server einen SID und einen Sync-Index (den Wert des SSI) der Datei zu.
  • Falls die Änderung, die zu dem Server in Schritt 1107 (in 11A) zu verschieben ist, nicht eine heraufzuladende Datei war, dann prüft der Client in Schritt 1145 (11D) um zu sehen, ob die Änderung darin besteht, ein Verzeichnis in dem Server zu erstellen. Falls ja, dann sendet der Client in Schritt 1147 die Verzeichniserstellungsanforderung und das Clientmetadatenelement zu dem Server. In Schritt 1150 erstellt der Server das Verzeichnis. In Schritt 1152 aktualisiert der Server den SSI, und in Schritt 1155 weist der Server einen SID und einen Sync-Index (den Wert des SSI) dem Verzeichnis zu.
  • In Schritt 1157 (11E) empfängt der Client den SSI und den SID, egal ob der Client eine Datei zu dem Server heraufgeladen hat oder ein Verzeichnis auf dem Server erstellt hat. In Schritt 1160 fügt der Client den SID in das Clientmetadatenelement ein.
  • Falls die Änderung, die zu dem Server in Schritten 1107 und 1145 zu verschieben war, weder eine Datei, die heraufzuladen ist, noch ein Verzeichnis, das zu erstellen ist, war, dann war die Änderung eine Verschiebungs-, Umbenennungs- oder Löschoperation. In Schritt 1162 sendet der Client eine Verschiebungs-, Umbenennungs- oder Löschinstruktion zu dem Server. Der Server führt die Operation durch. In Schritt 1165 aktualisiert der Server den SSI, und in Schritt 1167 empfängt der Client den SSI.
  • In Schritt 1170 (11F) prüft der Client ungeachtet der Änderung, die der Client zu dem Server verschoben hat, um zu sehen, ob der empfangene SSI der erwartete Wert ist. Falls der empfangene SSI gleich dem CSI plus eins ist, dann hat kein anderer Client Dateien oder Verzeichnisse in dem Konto aktualisiert. In Schritt 1172 aktualisiert der Client den CSI, um den neuen SSI widerzuspiegeln, und in Schritt 1175 aktualisiert der Client die CSD, um die übertragene Änderung widerzuspiegeln. Falls der empfangene SSI größer als der CSI plus eins war, dann muss ein anderer Client Änderungen an dem Konto durchgeführt haben. In diesem Fall überspringt der Client Schritte 1172 und 1175, sodass der Client in dem nächsten Synchronisationszyklus in den SSD die Änderungen empfangen wird, die relativ zu dem aktuellen CSI durchgeführt wurden.
  • In Schritt 1177 prüft der Client um zu sehen, ob es beliebige weitere Änderungen gibt, die zu dem Server zu verschieben sind. Falls es welche gibt, dann bekommt der Client in Schritt 1180 die nächste Änderung, und die Verarbeitung kehrt zu Schritt 1107 (in 11A) zurück, um die nächste Änderung heraufzuladen. Falls es keine weiteren Änderungen gibt, die zu dem Server zu verschieben sind, dann beendet der Client anderenfalls Änderungen zum Heraufladen.
  • Browserzugriff
  • Ein Applet stellt einen Browser-basierten Zugriff auf Daten eines Benutzers in dem Server bereit. In einer Ausführungsform der Erfindung führt das Applet Synchronisation nicht durch; es erlaubt dem Benutzer einfach, auf seine Daten von dem Browser zuzugreifen, ohne dass die Client-SA erforderlich ist. Ein Fachmann wird aber erkennen, dass das Applet implementiert sein kann, Synchronisation mit dem Client durchzuführen. Das Applet ist vorzugsweise in Java implementiert, aber ein Fachmann wird erkennen, dass andere Werkzeuge außer Java verwendet werden können.
  • Wenn das Applet gestartet wird, führt es einen Sync-Abfrageruf durch, der einen CSI von Null zu dem Server weitergibt. Das Server-SFS gibt alle Metadaten für das Konto des Benutzers zurück. Das Applet verarbeitet diese Daten, wobei die Namensfelder entschlüsselt werden, falls das Konto verschlüsselt ist, und präsentiert den Serververzeichnisbaum dem Benutzer. Unter Verwendung dieser Information kann der Benutzer Dateien herunterladen oder Änderungen zu dem Server durchführen, sehr ähnlich zu der zweiten (Verschiebungs-) Stufe von Clientsynchronisation. Das Applet funktioniert, Datei-Upload und Download, Erstellung eines Verzeichnisses und Verschiebung, Umbenennung oder Löschung von Dateien oder Verzeichnissen in dem Serverkonto zu enthalten. Das Applet verschlüsselt auch Dateidaten während Datei-Uploads und entschlüsselt Dateidaten während Datei-Downloads, falls das Konto verschlüsselt ist.
  • 12 zeigt einen Browser, der das Applet laufen lässt, was in einem Client von 1 angezeigt wird, der zum Herunterladen und Heraufladen von Dateien, und für Verzeichniswartung verwendet wird, gemäß einer Ausführungsform der Erfindung. In 12 enthält Browser 1205 ein Fenster 1210, in dem eine Verzeichnisstruktur 1215 angezeigt wird. Die Verzeichnisstruktur 1215 enthält drei Dateien, die in zwei Verzeichnisse organisiert sind, ein Fachmann wird aber erkennen, dass andere Verzeichnisstrukturen gleichermaßen möglich sind. Durch Auswählen einer Datei oder eines Verzeichnisses (ein Verzeichnis wird als ein spezialisierter Typ einer Datei betrachtet) kann der Benutzer Änderungen durchführen. Z.B. hat der Benutzer in 12 die Datei 1217 ausgewählt. Die Popup-Dialogbox 1220 versieht den Benutzer mit Optionen. Speziell kann der Benutzer die Datei von dem Server zu dem Client her unterladen (Option 1225-1), die Datei zu dem Server von dem Client heraufladen (Option 1225-2), die Datei auf dem Server umbenennen (Option 1225-3), die Datei auf dem Server löschen (Option 1225-4) oder die Datei zu einem anderen Verzeichnis auf dem Server verschieben (Option 1225-5).
  • Es gibt typischerweise zwei Situationen, wo die Browser/Applet-Kombination typischerweise verwendet wird. Die erste Situation ist, wo der Client ein dünner (thin) Client ist, der fähig ist, einen Browser und ein Applet laufen zu lassen, aber nicht die vollständige Client-SA. Die zweite Situation ist typischerweise, wo der Browser/das Applet verwendet wird, wo der Client nicht vertrauenswürdig ist. Z.B. kann ein Benutzer einer anderen Seite eine Datei zeigen müssen, und wünscht dies unter Verwendung des Computers der anderen Seite zu tun (wie es geschehen kann, falls der Benutzer einen tragbaren Computer nicht mit sich trägt). Falls der Benutzer der anderen Seite nicht vertraut, würde der Benutzer nicht wünschen, die Clientsoftware auf dem Computer der anderen Seite zu installieren. Dies zu tun würde der anderen Seite Zugang zu den Dateien des Benutzers geben.
  • Durch Verwenden des Browsers und Applets von 12 wird ein Fachmann erkennen, wie ein Clientzugriff unter Verwendung eines nicht vertrauenswürdigen Computers erreicht werden kann. Die meisten Computer enthalten heute einen Browser mit Java-Fähigkeit. Durch einfaches Zugreifen auf das Applet für diesen Ordner auf dem Server kann ein Benutzer auf seine Dateien zugreifen, ohne eine vollständige Installation des Clients auf einem nicht vertrauenswürdigen Computer zu bewirken.
  • Eine Ausführungsform der Erfindung enthält eine Bibliothek, die direkten Zugriff auf Serverkonten bereitstellt, äquivalent zu dem Zugriff, der durch das oben erörterte Applet gegeben wird. Diese Bibliothek kann durch Anwendungen einer mittleren Schicht verwendet werden, um auf Kontodaten zuzugreifen und sie über HTML (Hypertext-Auszeichnungssprache) dünnen Clients unter Verwendung einer SSL-Verbindung zuzustellen.
  • Es sollten drei zusätzliche Punkte erwähnt werden, die zuvor nicht erörtert wurden. Der erste besteht darin, dass bevor ein Server einem Benutzer erlaubt, auf einen Ordner für Zwecke von Synchronisation zuzugreifen, der Server den Benutzer authentifizieren kann um sicherzustellen, dass der Benutzer autorisiert ist, auf den Ordner zuzugreifen. 13A-13B zeigen ein Flussdiagramm einer Prozedur, um den Clients von 1 zu gestatten oder zu verweigern, auf die Dateien auf dem Server von 1 zuzugreifen, gemäß einer Ausführungsform der Erfindung. In 13A meldet sich der Benutzer in Schritt 1305 in dem System an, durch Bereitstellen seines ID und des Passwortes. Diese Information wird in Schritt 1310 verschlüsselt, um die Daten vor nicht-autorisiertem Zugriff zu schützen. In Schritt 1315 werden die verschlüsselten Benutzer-ID und Passwort zu dem Server gesendet. In Schritt 1320 werden die verschlüsselten Benutzer-ID und Passwort zu einem Authentifizierungsdienst einer dritten Seite weitergeleitet. Es wird vermerkt, dass falls der Server seine eigene Authentifizierung vornimmt, Schritt 1320 übersprungen werden kann. In Schritt 1325 werden die verschlüsselten Benutzer-ID und Passwort mit den bekannten Benutzer-ID/Passwort-Kombinationen verglichen um zu sehen, ob der verschlüsselte Benutzer-ID und das Passwort erkannt werden. In Schritt 1330 (13B) wird eine Entscheidung durchgeführt. Falls der Benutzer autorisiert ist, dann wird dem Benutzer in Schritt 1335 gestattet, auf den Ordner zuzugreifen. Anderenfalls wird dem Benutzer in Schritt 1314 verweigert, auf den Ordner zuzugreifen.
  • Obwohl die in 13A-13B gezeigte Prozedur einen Benutzer authentifiziert, bevor Zugriff auf den Ordner auf dem Server gestattet wird, wird ein Fachmann erkennen, dass Authentifizieren eines Benutzers nicht benötigt wird, während ein Benutzer Änderungen lokal in einem Client durchführt. Die Filtertreiber können Änderungen verfolgen, die lokal durchgeführt werden, selbst bei Trennung von dem Server. Der Benutzer kann sich an dem Server anmelden und authentifizieren werden, in welchem Punkt Änderungen zu dem Server migriert werden können. Somit sind die Schritte von 13A-13B keine Voraussetzung für eine Verwendung des Ordners in dem Client.
  • Der zweite Punkt besteht darin, dass in einigen Umgebungen Daten auf dem Server verschlüsselt sein können, aber dem Benutzer des Ordners nicht vertraut wird, seinen Chiffrierschlüssel offenzulegen, falls notwendig. Es wird z.B. eine Geschäftsumgebung betrachtet, wo Benutzer Angestellte der Firma sind. Aus Sicherheitsgründen wünscht die Firma, dass die Daten in dem Synchronisationsordner verschlüsselt werden. Was geschieht aber, falls der Angestellte ausscheidet, ohne seinen Chiffrierschlüssel offenzulegen? Dann sind die Daten für Firma verloren. Die Lösung besteht darin, einen Schlüsselhinterlegungsdienst zu verwenden.
  • 14 zeigt die Clients und den Server von 1, wobei der Server einen Schlüsselhinterlegungsserver verwendet, gemäß einer Ausführungsform der Erfindung. In 14 ist der Server 105 mit dem Schlüsselhinterlegungsserver 1405 verbunden, der die Schlüsselhinterlegungsdatenbank 1410 enthält. Die Schlüsselhinterlegungsdatenbank 1410 speichert Chiffrierschlüssel, die durch die Clients verwendet werden, um die Daten zu verschlüsseln, die in Ordnern 115-1, 115-2 und 115-3 gespeichert sind. Falls die Clients die Schlüssel verlieren (z.B. vergessen die Benutzer die Schlüssel, oder wählen, die Schlüssel den geeigneten Seiten auf Anforderung hin nicht of fenzulegen), können die Chiffrierschlüssel von der Schlüsselhinterlegungsdatenbank 1410 auf Vorzeigen der geeigneten Autorität hin wiedererlangt werden.
  • Der dritte Punkt besteht darin, dass Netzadministration nicht kompliziert ist. Obwohl ein Netzadministrator nicht in der Lage sein kann zu bestimmen, zu welchem Benutzer eine bestimmte Datei gehört, hat der Netzadministrator Werkzeuge, die Datenbankwartung einfach machen. Z.B. kann der Netzadministrator einen Ordner eines Benutzers von einem Server zu einem anderen verschieben, indem der Benutzername spezifiziert wird. Es kann der geeignete Identifikator für den Benutzer bestimmt werden, und die Datenbank (die vorzugsweise durch den Netzadministrator nicht direkt lesbar ist) kann gelesen werden um zu bestimmen, welche Dateien zu diesem Benutzer gehören. Die identifizierten Dateien können dann zu einem anderen Server verschoben werden, ohne dass beliebiges von dem Inhalt, Dateinamen oder Verzeichnisstruktur für den Netzadministrator sichtbar ist. Und mit Ausnahme der Änderungen in dem Server, an dem sich der Benutzer anmelden muss, kann die Verschiebung für den Benutzer vollständig transparent sein.
  • Der Netzadministrator kann auch Richtlinien setzen. Eine Richtlinie ist eine Regel, die eine Operation des Ordners durch den Benutzer steuert. Z.B. kann ein Netzadministrator eine Richtlinie einstellen, die die Ordnergröße für Benutzer auf fünf Megabyte begrenzt. Richtlinien können global (d.h. unter Anwendung auf alle Benutzerkonten), in Gruppen (auf eine koordinierte Menge von Benutzerkonten) oder individuell (auf ein spezifisches Benutzerkonto) eingestellt werden. Einzelne Benutzerrichtlinien überschreiben Gruppenrichtlinien, die wiederum globale Richtlinien überschreiben. Vorzugsweise stehen überschreibende Richtlinien nicht mit allgemeineren Richtlinien im Widerspruch. Z.B. kann ein Netzadministrator eine globale Richtlinie einstellen, dass Daten durch die Clients verschlüsselt werden, und kann dann eine einzelne Richtlinie für gewisse Benutzer einstellen, die Schlüsselhinterlegung der Chiffrierschlüssel fordert. Aber dem Netzadministrator sollte nicht gestattet sein, eine globale Richtlinie einzustellen, die Verschlüsselung fordert, und dann eine Richtlinie einstellen, die gewissen Benutzern gestattet, Dateien im Klartext zu speichern. In einer alternativen Ausführungsform der Erfindung können jedoch spezifischere Richtlinien mit weiter vorgebenden Richtlinien im Widerspruch stehen.
  • Nach Veranschaulichung und Beschreibung der Prinzipien unserer Erfindung in einer Ausführungsform von ihr sollte einem Fachmann offensichtlich sein, dass die Erfindung in Anordnung und Detail ohne Abweichung von derartigen Prinzipien modifiziert werden kann. Wir beanspruchen alle Modifikationen, die innerhalb des Bereiches der begleitenden Ansprüchen vorkommen.
  • Glossar
    • CID:
      Client-ID
      CSD:
      Client-Sync-Daten
      CSI:
      Client-Sync-Index
      DSI:
      Verzeichnis-Sync-Index
      FSI:
      Datei-Sync-Index
      HTML:
      Hypertext-Auszeichnungssprache
      HTTP:
      Hypertext-Transportprotokoll
      MDA:
      Nachrichtenauszugsfeld
      PDA:
      Persönlicher digitaler Assistant
      PFID:
      Datei-ID der vorherigen Version
      SA:
      Synchronisationsanwendung
      SFS:
      Synchronisationsdateisystem
      SI:
      Sync-Index
      SID:
      Server-ID
      SSD:
      Server-Sync-Daten
      SSI:
      Server-Sync-Index
      SSL:
      Secure Sockets Layer
      TCP/IP:
      Übertragungssteuerprotokoll/Internetprotokoll

Claims (8)

  1. Eine Client-Synchronisationsanwendung, die auf einem Client (130) läuft, zum Synchronisieren eines Benutzerkontos auf einem Server (105), umfassend: Mittel zum Vergleichen eines Client-Synchronisationsindex (340), der den clientseitigen gegenwärtigen bekannten Zustand des Kontos identifiziert, mit einem Server-Synchronisationsindex, der den serverseitigen bekannten Zustand des Kontos identifiziert, und wobei die Indizes inkrementelle Sequenzzahlen sind, die Änderungen in dem Benutzerkonto identifizieren; und Mittel zum Bestimmen, ob ein Client (130) in Synchronisation mit dem Server (105) ist, basierend auf dem verglichenen Client-Synchronisationsindex und Server-Synchronisationsindex, Mittel zum Empfangen von Server-Synchronisationsdaten, die den Zustand des Kontos auf dem Server verfolgen, von dem Server; Mittel zum Vergleichen von Client-Synchronisationsdaten (345), die den Zustand des Kontos auf dem Server verfolgen zu dem letzten Mal, in dem sich der Client mit dem Server synchronisiert hat, und der Server-Synchronisationsdaten um zu bestimmen, welche Aktualisierungen an dem Client und/oder Server durchzuführen sind, um den Client und Server zu synchronisieren; ferner umfassend einen Verzeichniseintrag, der auf dem Client gespeichert ist, wobei: der Verzeichniseintrag eine Datei ist; und die Client-Synchronisationsanwendung ferner Mittel umfasst zum teilweisen Heraufladen oder Herunterladen der Datei, um die Datei zu aktualisieren, wobei: die Client-Synchronisationsanwendung ferner umfasst: ein Meldungsübersichtsdatenfeld für die Datei, das Meldungsübersichtsdatenfeld umfassend eine Meldungsübersicht für jeden Block der Datei; Mittel zum Empfangen eines zweiten Meldungsübersichtsdatenfeldes von dem Server; und das Mittel zum teilweisen Heraufladen oder Herunterladen enthält Mittel zum Vergleichen des Meldungsübersichtsdatenfeldes und des zweiten Meldungsübersichtsdatenfeldes, um einzelne Blöcke mit Änderungen zum Heraufladen oder Herunterladen zu identifizieren, und Mittel zum Aktualisieren des Client-Synchronisationsindex und Client-Synchronisationsdaten, wenn die Aktualisierung abgeschlossen ist.
  2. Eine Client-Server-Vorrichtung zum Unterstützen von Dateisynchronisation zwischen einem Client (130) und einem Server (105), umfassend: ein Synchronisationsdateisystem, das auf dem Server installiert ist, enthaltend: den Verzeichniseintrag; ein Metadatenelement für den Verzeichniseintrag; und den Server-Synchronisationsindex; eine Client-Synchronisationsanwendung, die auf einem Client installiert ist, nach Anspruch 1; und ein Netz (120), das den Client mit dem Server verbindet.
  3. Ein Verfahren für einen Client (130), um ein erstes Verzeichnis auf dem Client mit einem zweiten Verzeichnis in einem Synchronisationsdateisystem (110) eines Servers (105) zu synchronisieren, umfassend: Übertragen (805) eines Client-Synchronisationsindex zu dem Synchronisationsdateisystem, wobei der Client-Synchronisationsindex den Zustand des ersten Verzeichnisses identifiziert; Empfangen (810) eines Server-Synchronisationsindex von dem Synchronisationsdateisystem, wobei der Client-Synchronisationsindex den Zustand des zweiten Verzeichnisses identifiziert; und Vergleichen (815) des Client-Synchronisationsindex und des Server-Synchronisationsindex um zu bestimmen, ob der Server und der Client synchronisiert sind, wobei ein Verzeichniseintrag eine Datei ist, die auf dem Client gespeichert ist, basierend auf dem Vergleich Empfangen (825) von Server-Synchronisationsdaten, die den Zustand des Kontos auf dem Server verfolgen, von dem Synchronisationsdateisystem; Vergleichen (830) von Client-Synchronisationsdaten, die den Zustand des Kontos auf dem Server verfolgen zu dem letzten Mal, dass der Client mit dem Server synchronisiert ist, und der Server-Synchronisationsdaten um zu bestimmen, welche Aktualisierungen an dem Client und/oder Server durchzuführen sind, um den Client und Server zu synchronisieren; und das Verfahren umfasst den weiteren Schritt zum teilweisen Heraufladen oder Herunterladen der Datei, um die Datei zu aktualisieren, wobei ein Meldungsübersichtsdatenfeld für die Datei auf dem Client mit einem Meldungsübersichtsdatenfeld verglichen wird, das von dem Server empfangen wird, um einzelne Blöcke mit Änderungen zum Heraufladen oder Herunterladen zu identifizieren, und Aktualisieren des Client-Synchronisationsindex und der Client-Synchronisationsdaten, wenn die Aktualisierung abgeschlossen ist.
  4. Ein Verfahren nach Anspruch 3, ferner umfassend: Server-Synchronisationsdaten, Client-Synchronisationsdaten und Aktualisieren eines Metadatenelementes für den Verzeichniseintrag auf dem Client.
  5. Ein Verfahren nach Anspruch 3, ferner umfassend: Anfordern einer Datei von dem Synchronisationsdateisystem durch einen Server-ID, der ein eindeutiger ID innerhalb des Benutzerkontos ist entsprechend der Datei; Empfangen der Datei von dem Synchronisationsdateisystem; und Speichern der Datei auf dem Client.
  6. Ein Verfahren nach Anspruch 5, wobei: Anfordern einer Datei Anfordern eines Blockes der Datei von dem Synchronisationsdateisystem enthält, und Empfangen der Datei Empfangen des Blockes der Datei von dem Synchronisationsdateisystem enthält.
  7. Ein Synchronisationsdateisystem (110), das auf einem Server installiert ist, angepasst, mit dem Client zusammenzuarbeiten, auf dem die Client-Synchronisationsanwendung nach Anspruch 1 läuft, umfassend: ein Verzeichnis (115-1, 115-2, 115-3) in einem Benutzerkonto in dem Synchronisationsdateisystem; einen Server-ID, der dem Verzeichnis zugewiesen ist; und einen Server-Synchronisationsindex für das Benutzerkonto, wobei der Server-Synchronisationsindex einen Zustand des ersten Verzeichnisses identifiziert, Mittel zum Senden des Server-Synchronisationsindex zu dem Client, um der Client-Synchronisationsanwendung zu ermöglichen zu bestimmen, ob der Server und der Client in Synchronisation sind, das Synchronisationsdateisystem ferner umfassend einen Verzeichniseintrag, wobei der Verzeichniseintrag eine Datei (117-1, 117-2, 117-3) in dem Verzeichnis ist; einen zweiten Server-ID, der der Datei zugewiesen ist; und einen zweiten Synchronisationsindex, der der Datei zugewiesen ist, Mittel zum Senden des Server-Synchronisationsdatums zu dem Client, um dem Client zu ermöglichen zu bestimmen, welche Aktualisierungen an dem Client und/oder Server durchzuführen sind, um den Client und Server zu synchronisieren; ein Meldungsübersichtsdatenfeld für die Datei, das Meldungsübersichtsdatenfeld umfassend eine Meldungsübersicht für jeden Block der Datei; Mittel zum Senden des Meldungsübersichtsdatenfeldes zu dem Client, um dem Client zu ermöglichen, einzelne Blöcke innerhalb der Datei mit Änderungen zum Heraufladen oder Herunterladen zu identifizieren, und das Synchronisationsdateisystem ist angepasst, die Datei teilweise heraufzuladen oder herunterzuladen.
  8. Ein Verfahren für ein Synchronisationsdateisystem (110) eines Servers (105), um ein erstes Verzeichnis (115-1, 115-2, 115-3) in dem Synchronisationsdateisystem mit einem zweiten Verzeichnis auf einem Client (130) zu synchronisieren, umfassend: Empfangen einer Instruktion von dem Client, um einen Verzeichniseintrag zu aktualisieren, wie durch das Verfahren nach einem beliebigen von Ansprüchen 3-6 bestimmt; Durchführen der Instruktion; Aktualisieren eines Server-Synchronisationsindex (410), wobei der Server-Synchronisationsindex den Zustand des ersten Verzeichnisses identifiziert; und Übertragen des aktualisierten Server-Synchronisationsindex zu dem Client, und wobei Durchführen der Instruktion enthält: Empfangen einer Anforderung für ein Meldungsübersichtsdatenfeld für die Datei; und Übertragen des Meldungsübersichtsdatenfeldes, das Meldungsübersichtsdatenfeld umfassend eine Meldungsübersicht für jeden Block der Datei, zu dem Client; Empfangen einer Datei von dem Client; Hinzufügen der Datei in eine Server-Synchronisationsdateisystem-Datenbank; Zuweisen eines Server-ID zu der Datei; und Übertragen des Server-ID für die Datei zu dem Client, wobei Empfangen einer Datei enthält: Kopieren der Datei zu einer temporären Datei; Empfangen eines Blockes der Datei; Einbeziehen des Blockes in die temporäre Kopie der Datei; und Hinzufügen der temporären Kopie der Datei in eine Server-Synchronisationsdateisystem-Datenbank, um die Synchronisation abzuschließen.
DE60213419T 2001-03-16 2002-03-15 Client-server-modell zur synchronisation von dateien Expired - Lifetime DE60213419T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US27636901P 2001-03-16 2001-03-16
US276369P 2001-03-16
PCT/US2002/007781 WO2002075539A2 (en) 2001-03-16 2002-03-15 Client-server model for synchronization of files

Publications (2)

Publication Number Publication Date
DE60213419D1 DE60213419D1 (de) 2006-09-07
DE60213419T2 true DE60213419T2 (de) 2007-10-31

Family

ID=23056382

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60213419T Expired - Lifetime DE60213419T2 (de) 2001-03-16 2002-03-15 Client-server-modell zur synchronisation von dateien

Country Status (5)

Country Link
US (3) US7734826B2 (de)
EP (1) EP1410202B1 (de)
AU (1) AU2002303126A1 (de)
DE (1) DE60213419T2 (de)
WO (1) WO2002075539A2 (de)

Families Citing this family (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60213419T2 (de) 2001-03-16 2007-10-31 Novell, Inc., Provo Client-server-modell zur synchronisation von dateien
US20040024910A1 (en) * 2001-06-01 2004-02-05 Marl Coyle B. Adaptive synchronization of service data
US20030005306A1 (en) * 2001-06-29 2003-01-02 Hunt Preston J. Message digest based data synchronization
US7257649B2 (en) * 2001-09-28 2007-08-14 Siebel Systems, Inc. Method and system for transferring information during server synchronization with a computing device
US7415539B2 (en) * 2001-09-28 2008-08-19 Siebel Systems, Inc. Method and apparatus for detecting insufficient memory for data extraction processes
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US20030093435A1 (en) * 2001-11-05 2003-05-15 Bandekar Vijay R. Method and system for application level data object synchronization between two or more processes
US7127477B2 (en) 2001-11-06 2006-10-24 Everyware Solutions Inc. Method and system for access to automatically synchronized remote files
US7373362B2 (en) * 2001-11-19 2008-05-13 Extended Systems, Inc. Coordinated synchronization
US7197537B2 (en) * 2002-03-29 2007-03-27 Bellsouth Intellectual Property Corp Remote access and retrieval of electronic files
JP3980421B2 (ja) * 2002-06-27 2007-09-26 富士通株式会社 プレゼンス管理方法及び装置
US7222139B2 (en) * 2002-07-30 2007-05-22 International Business Machines Corporation Method, system and program for synchronizing data
US20040068523A1 (en) * 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US7716312B2 (en) 2002-11-13 2010-05-11 Avid Technology, Inc. Method and system for transferring large data files over parallel connections
FR2848314A1 (fr) * 2002-12-04 2004-06-11 Medi Systeme Procede de synchronisation au sein d'un systeme de type client serveur destine a la gestion d'un systeme qualite, de management, d'evaluation ou de coordination
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
US7506007B2 (en) * 2003-03-03 2009-03-17 Microsoft Corporation Interval vector based knowledge synchronization for resource versioning
US7107296B2 (en) * 2003-06-25 2006-09-12 Microsoft Corporation Media library synchronizer
US7660833B2 (en) * 2003-07-10 2010-02-09 Microsoft Corporation Granular control over the authority of replicated information via fencing and unfencing
KR100491541B1 (ko) * 2003-08-01 2005-05-25 니트젠테크놀러지스 주식회사 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법
US7395341B2 (en) * 2003-08-15 2008-07-01 Fiberlink Communications Corporation System, method, apparatus and computer program product for facilitating digital communications
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7529811B2 (en) 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7555497B2 (en) 2003-08-21 2009-06-30 Microsoft Corporation Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US7483915B2 (en) 2003-08-21 2009-01-27 Microsoft Corporation Systems and method for representing relationships between units of information manageable by a hardware/software interface system
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US7739316B2 (en) 2003-08-21 2010-06-15 Microsoft Corporation Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7428546B2 (en) 2003-08-21 2008-09-23 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
US7483923B2 (en) * 2003-08-21 2009-01-27 Microsoft Corporation Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
CN100565505C (zh) * 2003-08-21 2009-12-02 微软公司 通过中介文件系统或设备同步计算机系统的系统和方法
WO2005024626A1 (en) * 2003-08-21 2005-03-17 Microsoft Corporation Systems for the implementation of a synchronization schemas
US7349913B2 (en) 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US20050060370A1 (en) * 2003-09-17 2005-03-17 Sony Corporation Version based content distribution and synchronization system and method
US7925790B2 (en) * 2003-09-17 2011-04-12 Sony Corporation Middleware filter agent between server and PDA
US20050060578A1 (en) * 2003-09-17 2005-03-17 Sony Corporation Method of and system for authentication downloading
US7735000B2 (en) * 2003-09-25 2010-06-08 Sony Corporation Information and content exchange document type definitions to support content distribution
AU2003282146A1 (en) 2003-11-18 2005-06-08 Nokia Corporation Method, subject terminal device, target terminal device, data content server, system and computer programs for maintaining and updating data contents
GB2409545A (en) * 2003-12-24 2005-06-29 Nokia Corp File synchronisation
KR100526885B1 (ko) * 2004-01-02 2005-11-09 삼성전자주식회사 반도체 소자에서의 캐패시터 형성방법
US6976029B2 (en) 2004-02-10 2005-12-13 Microsoft Corporation System and method for providing user defined types in a database system
US7437371B2 (en) 2004-02-10 2008-10-14 Microsoft Corporation Systems and methods for the implementation of unordered and ordered collections in a data store
US20050193147A1 (en) * 2004-02-27 2005-09-01 Vantech Software Company Data synchronization system and method
US9104689B2 (en) * 2004-03-17 2015-08-11 International Business Machines Corporation Method for synchronizing documents for disconnected operation
US8359349B2 (en) * 2004-03-18 2013-01-22 Nokia Corporation System and associated terminal, method and computer program product for uploading content
US7519596B2 (en) 2004-03-30 2009-04-14 Microsoft Corporation Globally trusted credentials leveraged for server access control
US7342555B2 (en) * 2004-04-30 2008-03-11 Microsoft Corporation Detecting low fidelity sync data
US20050262166A1 (en) * 2004-05-05 2005-11-24 Microsoft Corporation Method and system for synchronizing data between electronic devices
US7409569B2 (en) * 2004-06-08 2008-08-05 Dartdevices Corporation System and method for application driven power management among intermittently coupled interoperable electronic devices
TWI273449B (en) * 2004-06-18 2007-02-11 Yi-Jie Wu Computer data classification management system and method
US7584477B2 (en) * 2004-07-14 2009-09-01 Xerox Corporation Cross repository copier
US10140596B2 (en) * 2004-07-16 2018-11-27 Bryan S. M. Chua Third party authentication of an electronic transaction
US7725589B2 (en) * 2004-08-16 2010-05-25 Fiberlink Communications Corporation System, method, apparatus, and computer program product for facilitating digital communications
US7457826B2 (en) 2004-12-20 2008-11-25 Microsoft Corporation Systems and methods for synchronization of items without snapshots
US8682844B2 (en) * 2005-01-28 2014-03-25 Sap Ag Method and apparatus for collision resolution in an asynchronous database system
WO2006090612A1 (ja) * 2005-02-25 2006-08-31 Sharp Kabushiki Kaisha データ管理システム、データ管理方法、サーバ装置、受信装置、制御プログラムおよびそれを記録したコンピュータ読み取り可能な記録媒体
US7680835B2 (en) * 2005-02-28 2010-03-16 Microsoft Corporation Online storage with metadata-based retrieval
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US7685184B2 (en) * 2005-02-28 2010-03-23 Sap Ag View maintenance on multiple tables located in different software components with the same primary keys
US8126990B2 (en) * 2005-04-21 2012-02-28 Fiducci Thomas E Data backup and transfer system, method and computer program product
US7849165B2 (en) 2005-04-21 2010-12-07 Fiducci Thomas E Data backup, storage, transfer, and retrieval system, method and computer program product
US7634514B2 (en) * 2005-05-09 2009-12-15 Microsoft Corporation Synchronizing file system directories
US8443040B2 (en) * 2005-05-26 2013-05-14 Citrix Systems Inc. Method and system for synchronizing presentation of a dynamic data set to a plurality of nodes
US7680830B1 (en) * 2005-05-31 2010-03-16 Symantec Operating Corporation System and method for policy-based data lifecycle management
US7849199B2 (en) 2005-07-14 2010-12-07 Yahoo ! Inc. Content router
US7809156B2 (en) * 2005-08-12 2010-10-05 Ricoh Company, Ltd. Techniques for generating and using a fingerprint for an article
US8015270B2 (en) * 2005-09-06 2011-09-06 Reldata, Inc. Redundant appliance configuration repository in standard hierarchical format
US7783993B2 (en) * 2005-09-23 2010-08-24 Palm, Inc. Content-based navigation and launching on mobile devices
US20070073761A1 (en) * 2005-09-29 2007-03-29 International Business Machines Corporation Continual generation of index advice
US8250151B2 (en) * 2005-10-12 2012-08-21 Bloomberg Finance L.P. System and method for providing secure data transmission
US8024290B2 (en) 2005-11-14 2011-09-20 Yahoo! Inc. Data synchronization and device handling
US8065680B2 (en) 2005-11-15 2011-11-22 Yahoo! Inc. Data gateway for jobs management based on a persistent job table and a server table
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
US20120095964A1 (en) * 2005-12-06 2012-04-19 Media4Work Aps System and a method for handling co-operation files
DK176499B1 (da) * 2005-12-06 2008-05-26 Media4Work Aps Et system og en metode til håndtering af samarbejdsfiler
US7529780B1 (en) * 2005-12-30 2009-05-05 Google Inc. Conflict management during data object synchronization between client and server
US7606811B1 (en) * 2006-01-03 2009-10-20 Emc Corporation Methods and apparatus for synchronizing information
US9367832B2 (en) 2006-01-04 2016-06-14 Yahoo! Inc. Synchronizing image data among applications and devices
CN100561474C (zh) * 2006-01-17 2009-11-18 鸿富锦精密工业(深圳)有限公司 远程多点文件索引同步系统及方法
US20070179956A1 (en) * 2006-01-18 2007-08-02 Whitmyer Wesley W Jr Record protection system for networked databases
US7693832B2 (en) * 2006-02-28 2010-04-06 Microsoft Corporation Rich set of synchronization rules across multiple accounts with multiple folder and consent types
US8478873B2 (en) * 2006-03-08 2013-07-02 Harmonic Inc. Techniques for use of a system-unique identifier in an architecture having a file system utilizing distributed metadata servers
US20070220417A1 (en) * 2006-03-17 2007-09-20 Sonolink Communications Systems, Llc System and method for editing online documents
US8689102B2 (en) 2006-03-31 2014-04-01 Ricoh Company, Ltd. User interface for creating and using media keys
US9525547B2 (en) 2006-03-31 2016-12-20 Ricoh Company, Ltd. Transmission of media keys
US8554690B2 (en) 2006-03-31 2013-10-08 Ricoh Company, Ltd. Techniques for using media keys
US9549025B2 (en) * 2006-05-09 2017-01-17 International Business Machines Corporation Protocol optimization for client and server synchronization
US8838574B2 (en) * 2006-06-09 2014-09-16 International Business Machines Corporation Autonomic index creation, modification and deletion
US8838573B2 (en) * 2006-06-09 2014-09-16 International Business Machines Corporation Autonomic index creation
US20070288489A1 (en) * 2006-06-09 2007-12-13 Mark John Anderson Apparatus and Method for Autonomic Index Creation, Modification and Deletion
US20070294246A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Associating metadata on a per-user basis
US9141627B2 (en) * 2006-09-26 2015-09-22 Sony Corporation Providing a user access to data files distributed in a plurality of different types of user devices
JP4222404B2 (ja) * 2006-10-18 2009-02-12 船井電機株式会社 クライアント・サーバシステム
US7797412B2 (en) * 2006-10-25 2010-09-14 Oracle America Inc. Method and system for managing server configuration data
US20080133775A1 (en) * 2006-11-30 2008-06-05 Intellisync Corporation Method, Apparatus and Computer Program Product for Providing Intelligent Synchronization
US20080141335A1 (en) * 2006-12-08 2008-06-12 Novell, Inc. Provisioning software with policy-appropriate capabilities
US8527660B2 (en) * 2006-12-22 2013-09-03 Palm, Inc. Data synchronization by communication of modifications
US20080162728A1 (en) * 2007-01-03 2008-07-03 Microsoft Corporation Synchronization protocol for loosely coupled devices
US8219977B1 (en) * 2007-01-26 2012-07-10 Xilinx, Inc. Using a software repository to increase the speed of software testing
US7899917B2 (en) * 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
US20080263103A1 (en) 2007-03-02 2008-10-23 Mcgregor Lucas Digital asset management system (DAMS)
US8756673B2 (en) 2007-03-30 2014-06-17 Ricoh Company, Ltd. Techniques for sharing data
US20080275974A1 (en) * 2007-05-02 2008-11-06 Home Box Office, Inc. System, method, and display for managing media content for use at multiple locations
US20090043867A1 (en) * 2007-08-06 2009-02-12 Apple Inc. Synching data
US9594784B2 (en) * 2007-10-19 2017-03-14 Oracle International Corporation Push-model based index deletion
US9594794B2 (en) * 2007-10-19 2017-03-14 Oracle International Corporation Restoring records using a change transaction log
US9418154B2 (en) * 2007-10-19 2016-08-16 Oracle International Corporation Push-model based index updating
US8682859B2 (en) 2007-10-19 2014-03-25 Oracle International Corporation Transferring records between tables using a change transaction log
WO2009062182A1 (en) 2007-11-09 2009-05-14 Topia Technology Architecture for management of digital files across distributed network
CN101453418B (zh) * 2007-12-05 2011-01-12 高德软件有限公司 客户端与服务器同步的更新方法
EP2071798B1 (de) * 2007-12-10 2019-08-21 Be Invest International S.A. Verfahren und Server für elektronische Safes mit Informationsbündelung
US8352906B2 (en) 2007-12-28 2013-01-08 Cadence Design Systems, Inc. Method, system, and computer program product for implementing external domain independent modeling framework in a system design
US7895156B2 (en) * 2007-12-28 2011-02-22 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a model exchange framework generating a synchronization record in response to a model exchange request using fusion technology
JP4502015B2 (ja) * 2008-01-24 2010-07-14 富士ゼロックス株式会社 情報処理装置及びプログラム
US8086565B2 (en) * 2008-02-18 2011-12-27 Microsoft Corporation File system watcher in the presence of different file systems
AU2011253726B2 (en) * 2008-03-04 2012-07-26 Apple Inc. Synchronization server process
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US7747784B2 (en) * 2008-03-04 2010-06-29 Apple Inc. Data synchronization protocol
US20090234872A1 (en) * 2008-03-11 2009-09-17 Microsoft Corporation Synchronization of disconnected/offline data processing/entry
US9135284B1 (en) 2008-03-13 2015-09-15 Blue Coat Systems, Inc. Composite execution of rename operations in wide area file systems
US8751561B2 (en) * 2008-04-08 2014-06-10 Roderick B. Wideman Methods and systems for improved throughput performance in a distributed data de-duplication environment
JP5455321B2 (ja) * 2008-05-02 2014-03-26 キヤノン株式会社 文書処理装置及び文書処理方法
US8621108B2 (en) * 2008-05-08 2013-12-31 Dialogic Corporation System and method for monitoring user interface connectivity state
US8095566B2 (en) 2008-05-12 2012-01-10 Research In Motion Limited Managing media files from multiple sources
US20090282078A1 (en) * 2008-05-12 2009-11-12 Motion Limited Unified media file architecture
US10552384B2 (en) 2008-05-12 2020-02-04 Blackberry Limited Synchronizing media files available from multiple sources
US8122037B2 (en) 2008-05-12 2012-02-21 Research In Motion Limited Auto-selection of media files
US8086651B2 (en) 2008-05-12 2011-12-27 Research In Motion Limited Managing media files using metadata injection
US8706690B2 (en) 2008-05-12 2014-04-22 Blackberry Limited Systems and methods for space management in file systems
US8112537B2 (en) * 2008-09-29 2012-02-07 Apple Inc. Trickle sync protocol
US9934240B2 (en) 2008-09-30 2018-04-03 Google Llc On demand access to client cached files
US8620861B1 (en) 2008-09-30 2013-12-31 Google Inc. Preserving file metadata during atomic save operations
US8655840B2 (en) * 2008-12-03 2014-02-18 Nokia Corporation Method, apparatus and computer program product for sub-file level synchronization
US8347050B2 (en) * 2009-01-27 2013-01-01 Microsoft Corporation Append-based shared persistent storage
US8327278B2 (en) * 2009-02-17 2012-12-04 Microsoft Corporation Synchronizing metadata describes user content updates and an indication of user gestures being performed within the document, and across client systems using different communication channels
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US8799572B2 (en) 2009-04-20 2014-08-05 Microsoft Corporation Sliding-window multi-class striping
JP4939568B2 (ja) * 2009-04-28 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース間でデータを同期するための方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム
US8954390B1 (en) * 2009-04-29 2015-02-10 Netapp, Inc. Method and system for replication in storage systems
US9665413B2 (en) 2009-05-01 2017-05-30 Microsoft Technology Licensing, Llc Shared job scheduling in electronic notebook
US8422641B2 (en) * 2009-06-15 2013-04-16 Calabrio, Inc. Distributed record server architecture for recording call sessions over a VoIP network
US8825597B1 (en) * 2009-08-13 2014-09-02 Dropbox, Inc. Network folder synchronization
JP5061166B2 (ja) * 2009-09-04 2012-10-31 Kii株式会社 データ同期システムおよびデータ同期方法
US10496608B2 (en) * 2009-10-28 2019-12-03 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
US8805925B2 (en) 2009-11-20 2014-08-12 Nbrella, Inc. Method and apparatus for maintaining high data integrity and for providing a secure audit for fraud prevention and detection
US10146802B2 (en) * 2009-11-23 2018-12-04 Blackberry Limited Generating device specific thumbnails
US20110153564A1 (en) * 2009-12-23 2011-06-23 Telcordia Technologies, Inc. Error-sensitive electronic directory synchronization system and methods
US8396192B2 (en) * 2010-03-03 2013-03-12 Calabrio, Inc. Desktop recording architecture for recording call sessions over a telephony network
US20110235520A1 (en) * 2010-03-26 2011-09-29 Calabrio, Inc. Live monitoring of call sessions over an ip telephony network
US9002946B2 (en) * 2010-08-25 2015-04-07 Autodesk, Inc. Dual modeling environment in which commands are executed concurrently and independently on both a light weight version of a proxy module on a client and a precise version of the proxy module on a server
US10318589B2 (en) * 2010-09-20 2019-06-11 International Business Machines Corporation Detection and display of volatile data
GB2499548B (en) 2011-01-28 2018-07-11 Hewlett Packard Development Co Utilizing content via personal clouds
CA2778733A1 (en) * 2011-05-31 2012-11-30 Research In Motion Limited Method and system for data synchronization including file system abstraction
US8332357B1 (en) * 2011-06-10 2012-12-11 Microsoft Corporation Identification of moved or renamed files in file synchronization
US9501490B2 (en) 2011-06-20 2016-11-22 Microsoft Technology Licensing, Llc Automatic synchronization of most recently used document lists
US9215283B2 (en) * 2011-09-30 2015-12-15 Alcatel Lucent System and method for mobility and multi-homing content retrieval applications
US8676757B2 (en) * 2011-10-18 2014-03-18 Microsoft Corporation Application of a differential dataset to a data store using sequential change sets
CN103124276B (zh) * 2011-11-18 2016-03-30 中国移动通信集团公司 一种扩展通信终端存储空间的方法及通信终端
US9819753B2 (en) 2011-12-02 2017-11-14 Location Labs, Inc. System and method for logging and reporting mobile device activity information
CN102404338B (zh) * 2011-12-13 2014-08-20 华为技术有限公司 一种文件同步方法和装置
US9367560B1 (en) * 2011-12-14 2016-06-14 Unboundid, Corp. Method, system and apparatus for synchronizing changes in a directory service
GB2497793A (en) * 2011-12-21 2013-06-26 Ninian Solutions Ltd Pre-emptive caching of potentially relevant content from a collaborative workspace at a client device
US9160697B2 (en) * 2012-01-01 2015-10-13 Qualcomm Incorporated Data delivery optimization
US8954571B2 (en) * 2012-01-13 2015-02-10 Wavemarket, Inc. System and method for implementing histogram controlled mobile devices
DE102012202382A1 (de) 2012-02-16 2013-08-22 Cortado Ag Verfahren und Anordnung zur Verwaltung von Daten sowie ein entsprechendes Computerprogramm und ein entsprechendes computerlesbares Speichermedium
CN103297385A (zh) * 2012-02-24 2013-09-11 腾讯科技(深圳)有限公司 一种数据漫游的实现方法
US9489531B2 (en) 2012-05-13 2016-11-08 Location Labs, Inc. System and method for controlling access to electronic devices
CA2783223C (en) * 2012-07-19 2014-07-15 Microsoft Corporation Global recently used files list
US10567498B2 (en) 2012-07-27 2020-02-18 Samsung Electronics Co., Ltd. Terminal and server performing data synchronization
KR20140031451A (ko) * 2012-08-30 2014-03-13 삼성전자주식회사 클라우드 시스템의 컨텐츠 동기화장치 및 방법
US20140074783A1 (en) * 2012-09-09 2014-03-13 Apple Inc. Synchronizing metadata across devices
TWI477978B (zh) * 2012-12-07 2015-03-21 Inst Information Industry 資料同步系統以及資料同步方法
US9678978B2 (en) 2012-12-31 2017-06-13 Carbonite, Inc. Systems and methods for automatic synchronization of recently modified data
US20150331916A1 (en) * 2013-02-06 2015-11-19 Hitachi, Ltd. Computer, data access management method and recording medium
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
US10560324B2 (en) 2013-03-15 2020-02-11 Location Labs, Inc. System and method for enabling user device control
US9429643B2 (en) 2013-04-09 2016-08-30 Thales-Raytheon Systems Company Llc Coherent aggregation from multiple diverse sources on a single display
WO2015035396A1 (en) * 2013-09-09 2015-03-12 Layer, Inc. Federated authentication of client computers in networked data communications services callable by applications
US9661054B2 (en) * 2013-12-04 2017-05-23 PowWow, Inc. Systems and methods to configure applications
WO2015089805A1 (en) * 2013-12-19 2015-06-25 Thomson Licensing Method and system for managing stream in home media network having a home gateway and a plurality of devices
US9509747B2 (en) 2014-01-23 2016-11-29 Dropbox, Inc. Content item synchronization by block
US9898520B2 (en) 2014-03-25 2018-02-20 Open Text Sa Ulc Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents
RU2643429C2 (ru) * 2014-03-31 2018-02-01 Общество С Ограниченной Ответственностью "Яндекс" Способ управления синхронизацией файлов (варианты), электронное устройство (варианты) и машиночитаемый носитель
US10148805B2 (en) 2014-05-30 2018-12-04 Location Labs, Inc. System and method for mobile device control delegation
US9661126B2 (en) 2014-07-11 2017-05-23 Location Labs, Inc. Driving distraction reduction system and method
US20170249328A1 (en) * 2014-09-02 2017-08-31 Telefonaktiebolaget Lm Ericsson (Publ) A Method, Cloud Synchronization Function Means and File System for Handling Files and Directories in a Cloud Storage Service
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US10001913B2 (en) * 2015-04-01 2018-06-19 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9946603B1 (en) 2015-04-14 2018-04-17 EMC IP Holding Company LLC Mountable container for incremental file backups
US9996429B1 (en) * 2015-04-14 2018-06-12 EMC IP Holding Company LLC Mountable container backups for files
US10078555B1 (en) 2015-04-14 2018-09-18 EMC IP Holding Company LLC Synthetic full backups for incremental file backups
EP3323053B1 (de) * 2015-07-16 2021-10-20 Quantum Metric, Inc. Dokumenterfassung mit client-basierter delta-codierung mit server
CN105282228B (zh) * 2015-09-11 2019-01-25 福建天晴数码有限公司 极速下载文件的方法及系统
US10425477B2 (en) 2015-09-15 2019-09-24 Microsoft Technology Licensing, Llc Synchronizing file data between computer systems
US10061660B1 (en) 2015-10-27 2018-08-28 EMC IP Holding Company LLC Cross-platform instant granular recovery for virtual machine backups
US9479567B1 (en) 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
CN106331182B (zh) * 2016-11-11 2019-05-07 山东大学 一种基于桌面虚拟化的文件同步方法
US11003632B2 (en) 2016-11-28 2021-05-11 Open Text Sa Ulc System and method for content synchronization
US11301431B2 (en) 2017-06-02 2022-04-12 Open Text Sa Ulc System and method for selective synchronization
GB2565153A (en) * 2017-08-04 2019-02-06 Gurulogic Microsystems Oy Data communication with devices having no direct access or only restricted access to communication networks
US10764169B2 (en) 2017-10-09 2020-09-01 Keysight Technologies, Inc. Methods, systems, and computer readable media for testing virtual network components deployed in virtual private clouds (VPCs)
US11038770B2 (en) * 2018-02-01 2021-06-15 Keysight Technologies, Inc. Methods, systems, and computer readable media for managing deployment and maintenance of network tools
US10812349B2 (en) 2018-02-17 2020-10-20 Keysight Technologies, Inc. Methods, systems and computer readable media for triggering on-demand dynamic activation of cloud-based network visibility tools
US11356448B1 (en) 2018-04-13 2022-06-07 Pulse Secure, Llc Device and method for tracking unique device and user network access across multiple security appliances
US10742595B2 (en) 2018-04-20 2020-08-11 Pulse Secure, Llc Fully qualified domain name-based traffic control for virtual private network access control
US11477028B2 (en) 2019-04-15 2022-10-18 Pulse Secure, Llc Preventing account lockout through request throttling
US11323480B2 (en) * 2019-05-07 2022-05-03 Cisco Technology, Inc. Policy enforcement and introspection on an authentication system
US10951509B1 (en) 2019-06-07 2021-03-16 Keysight Technologies, Inc. Methods, systems, and computer readable media for providing intent-driven microapps for execution on communications network testing devices
US11394706B2 (en) * 2019-09-03 2022-07-19 Seagate Technology Llc Password-less login
US11489745B2 (en) 2019-10-15 2022-11-01 Keysight Technologies, Inc. Methods, systems and computer readable media for providing a declarative network monitoring environment
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US11360943B2 (en) 2020-04-13 2022-06-14 Citrix Systems, Inc. Unified file storage system
TWI773468B (zh) * 2021-07-30 2022-08-01 威聯通科技股份有限公司 連網裝置及雲端資料處理方法
US11809725B2 (en) 2021-10-13 2023-11-07 International Business Machines Corporation Document storage with blocks split between multiple repositories
US11954074B2 (en) 2022-04-28 2024-04-09 Micro Focus Llc Method and apparatus for efficient file/folder synchronization

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
JP2575543B2 (ja) * 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
JP3213766B2 (ja) * 1992-03-16 2001-10-02 株式会社日立製作所 レプリケートファイル更新システム
GB2273183A (en) * 1992-12-04 1994-06-08 Ibm Replicated distributed databases.
US5474114A (en) * 1993-05-28 1995-12-12 Earth Resources Corporation Apparatus and method for controlled penetration of compressed fluid cylinders
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
EP0839352B1 (de) * 1995-07-20 2002-10-16 Novell, Inc. Transaktionslogverwaltung in einem netz abtrennbarer rechner
US5826253A (en) * 1995-07-26 1998-10-20 Borland International, Inc. Database system with methodology for notifying clients of any additions, deletions, or modifications occurring at the database server which affect validity of a range of data records cached in local memory buffers of clients
US6029175A (en) * 1995-10-26 2000-02-22 Teknowledge Corporation Automatic retrieval of changed files by a network software agent
US6339787B1 (en) * 1995-11-30 2002-01-15 Stampede Technologies, Inc. Apparatus and method for increasing speed in a network file/object oriented server/client system
US5978805A (en) * 1996-05-15 1999-11-02 Microcom Systems, Inc. Method and apparatus for synchronizing files
US6412017B1 (en) * 1996-07-01 2002-06-25 Microsoft Corporation Urgent replication facility
US5884325A (en) 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US6202085B1 (en) 1996-12-06 2001-03-13 Microsoft Corportion System and method for incremental change synchronization between multiple copies of data
US5999947A (en) 1997-05-27 1999-12-07 Arkona, Llc Distributing database differences corresponding to database change events made to a database table located on a server computer
US6052724A (en) * 1997-09-02 2000-04-18 Novell Inc Method and system for managing a directory service
US6158008A (en) * 1997-10-23 2000-12-05 At&T Wireless Svcs. Inc. Method and apparatus for updating address lists for a packet filter processor
JPH11249874A (ja) * 1998-02-27 1999-09-17 Toshiba Corp コンピュータシステム、同システムにおける同期処理方法および記録媒体
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
US6308201B1 (en) * 1999-04-08 2001-10-23 Palm, Inc. System and method for sharing data among a plurality of personal digital assistants
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6681252B1 (en) * 1999-09-27 2004-01-20 3Com Corporation System and method for interconnecting portable information devices through a network based telecommunication system
US6505214B1 (en) * 1999-09-28 2003-01-07 Microsoft Corporation Selective information synchronization based on implicit user designation
US6516337B1 (en) * 1999-10-14 2003-02-04 Arcessa, Inc. Sending to a central indexing site meta data or signatures from objects on a computer network
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US6581074B1 (en) * 2000-10-06 2003-06-17 Microsoft Corporation Directory synchronization
DE60213419T2 (de) 2001-03-16 2007-10-31 Novell, Inc., Provo Client-server-modell zur synchronisation von dateien

Also Published As

Publication number Publication date
US7657517B2 (en) 2010-02-02
WO2002075539A3 (en) 2004-02-19
US20020194205A1 (en) 2002-12-19
US20020174180A1 (en) 2002-11-21
US7035847B2 (en) 2006-04-25
EP1410202A2 (de) 2004-04-21
DE60213419D1 (de) 2006-09-07
US20060112150A1 (en) 2006-05-25
US7734826B2 (en) 2010-06-08
AU2002303126A1 (en) 2002-10-03
WO2002075539A2 (en) 2002-09-26
EP1410202B1 (de) 2006-07-26

Similar Documents

Publication Publication Date Title
DE60213419T2 (de) Client-server-modell zur synchronisation von dateien
US20220147488A1 (en) System And Method For Synchronizing File Systems With Large Namespaces
DE69938077T2 (de) Verfahren, Vorrichtung und Programmspeichereinrichtung für einen Klienten und ein adaptiver Synchronisierungs- und Transformierungsserver
US7437661B2 (en) Latches-links as virtual attachments in documents
DE69635469T2 (de) Synchronisierung zwischen verschiedenen Computeranbieterumgebungen
US6662198B2 (en) Method and system for asynchronous transmission, backup, distribution of data and file sharing
DE602005001315T2 (de) Automatische Integration von Inhalt aus mehreren Datenspeichern mittels eines Mobilkommunikationsgeräts
DE10084964B3 (de) Verfahren zum sicheren Speichern, Übertragen und Wiedergewinnen inhaltsadresssierbarer Informationen
US7343412B1 (en) Method for maintaining and managing dynamic web pages stored in a system cache and referenced objects cached in other data stores
US9055063B2 (en) Managing shared content with a content management system
JP4671332B2 (ja) ユーザ識別情報を変換するファイルサーバ
US7610304B2 (en) Techniques for performing file operations involving a link at a database management system
US8407241B2 (en) Content mesh searching
US20120023091A1 (en) System and Method for Enabling Website Owner to Manage Crawl Rate in a Website Indexing System
US20030182285A1 (en) Method and implementation of session-based file locking for network applications
DE10126752A1 (de) Virusprüfung und -meldung für Suchergebnisse von Computerdatenbanken
US20110179178A1 (en) System and Method for Managing Multiple Domain Names for a Website in a Website Indexing System
US20170371895A1 (en) Shard-level synchronization of cloud-based data store and local file systems
DE112017002497T5 (de) Systeme und verfahren zur aggregation von cloud-speicher
Faiz et al. Data synchronization in distributed client-server applications
US8533226B1 (en) System and method for verifying and revoking ownership rights with respect to a website in a website indexing system
US20220382716A1 (en) Cloud-native global file system with file accelerator
KR20070038665A (ko) 분산 파일 시스템 및 그 운용 방법
CA2437281C (en) Client-server model for synchronization of files
WO2015017886A1 (en) Method and system for managing and sharing working files in a document management system:

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8381 Inventor (new situation)

Inventor name: BROWN, DAVID, K., CARMEL VALLEY, CA 93924, US

Inventor name: ROLANDER, THOMAS, A., PACIFIC GROVE, CA 93950, US

Inventor name: SILBERSTEIN, ROBERT, D., MONTEREY, CA 93940, US

Inventor name: WEIN, JOSEF, YOKOHAMA, 227-0035, JP

8364 No opposition during term of opposition