-
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