-
Verwandte Anmeldungen
-
Die vorliegende Anmeldung beansprucht die Priorität der nicht-vorläufigen
US-Anmeldung mit der Nr. 15/155,998 mit dem Titel „Sytems and Methods for Aggregation of Cloud Storage“, die am 16. Mai 2016 eingereicht wurde; und der nicht-vorläufigen
US-Anmeldung mit der Nr. 15/156,014 mit dem Titel „Sytems and Methods for Secure File Management via an Aggregation of Cloud Storage Services“, die am 16. Mai 2016 eingereicht wurde; und der nicht-vorläufigen
US-Anmeldung mit der Nr. 15/156, 025 mit dem Titel „Sytems and Methods for Obfuscation of Data via an Aggregation of Cloud Storage Services“, die am 16. Mai 2016 eingereicht wurde, wobei der Inhalt jeder dieser Anmeldungen hiermit durch Bezugnahme miteingeschlossen ist.
-
Gebiet
-
Die vorliegende Anmeldung betrifft Systeme und Verfahren zur Aggregation von Speicher aus mehreren Cloud-Speicheranbietern.
-
Hintergrund
-
Anbieter bzw. Provider von Cloud-Speicher stellen Netzwerkspeicher für Benutzer häufig kostenlos oder mit geringen monatlichen Kosten zur Verfügung. Ein derartiger Speicher ist typischerweise in der Größe beschränkt (beispielsweise 5 oder 10 GB). Daher besitzen viele Benutzer mehrere Konten bei Anbietern bzw. Provider, in der Dateien aus einem einzelnen Gerät auf mehreren Diensten gesichert oder synchronisiert werden. Jeder dieser Anbieter erfordert typischerweise eine separate Client-Anwendung, die auf dem Gerät des Benutzers ausgeführt wird, und typischerweise einen einzelnen Ordner (und einsprechende Unterordner) bezüglich Synchronisierung mit dem Cloud-Speicher überwacht. Folglich müssen Benutzer die Synchronisierung zwischen unterschiedlichen Anbietern manuell verwalten und müssen sich erinnern, welche Dateien gespeichert sind. Insbesondere müssen Benutzer den Dateispeicher unter den Anbieter für den Fall manuell verwalten, dass die Speicherkapazität überschritten worden ist, oder es muss freier Speicherplatz für große Dateien reserviert werden.
-
Überblick
-
Die vorliegende Offenbarung beschreibt Systeme und Verfahren zur Aggregation und Verwaltung von Cloud-Speicher zwischen mehreren Anbietern. In einem ersten Aspekt betrifft die Erfindung eine Dateiverteilung und Verwaltung über mehrere Cloud-Dienste mittels eines Speicherverwalters. Der Speicherverwalter kann Cloud-Speicherdrittanbieterkonten zu einem einzigen Cloud-Speicherbereich zusammenfassen und kann Dateien zwischen DrittanbieterKonten bei Bedarf in der Auslastung angleichen. In einer Implementierung kann der Speicherverwalter als ein Zwischenglied fungieren und es können Dateien von dem Client-Gerät zu dem Speicherverwalter übertragen werden, der die Dateien auswählt und zu einem Speicherdrittanbieter weiterleiten kann. Das Abrufen von Dateien kann in ähnlicher Weise ausgeführt werden, wobei die Client-Einrichtung eine Datei aus dem dazwischengeschalteten Speicherverwalter anfordert, der die Datei aus dem entsprechenden Drittspeicheranbieter abruft und die Datei an die Client-Einrichtung weiterleitet.
-
In einer weiteren Implementierung ist der Speicherverwalter gegebenenfalls nicht eine Zwischenstelle für Dateiübertragungen und stellt stattdessen lediglich Befehle für die Client-Anwendungen zur Verfügung, um Dateien aus entsprechenden Dateianbietern zu speichern oder daraus abzurufen. In derartigen Implementierungen können Datei-Meta-Daten in dem Speicherverwalter zusammen mit Identifizierungen bzw. Kennzeichnungen gespeichert sein, welcher Drittanbieter für die Synchronisierung jeder Datei verwendet wird.
-
In einem weiteren Aspekt kann eine Aggregation von Drittanbieter-Cloud-Speicher zu einem einzigen virtuellen Speicher über Datei-Fragmentierung verwaltet werden, um eine erhöhte Zuverlässigkeit und Sicherheit zu gewährleisten. In einer Implementierung können Fragmente oder Blöcke auf mehrere Cloud-Speicheranbieter derart verteilt werden, dass kein Anbieter eine vollständige Kopie einer Datei enthält. Selbst wenn ein einzelner Dienst beschädigt ist, kann daher eine schädigende Partei nicht auf die Daten zugreifen.
-
In einer weiteren Implementierung können Fragmente dupliziert und auf mehrere Anbieter verteilt werden, so dass ein Verlust an Kommunikation in Bezug auf einen Anbieter nicht zur Unfähigkeit zum Zugriff auf die Daten führt. Diese Implementierung kann mit Fehlerkorrekturtechniken kombiniert werden, um eine Wiederherstellung zu ermöglichen, selbst bei Verlust von mehreren Anbietern. Eine Dateisynchronisierung kann ebenfalls in diesen Anwendungen schneller sein, indem Lese- und Schreiboperationen auf mehrere Anbieter bzw. Provider verteilt werden.
-
In einem weiteren Aspekt kann eine Aggregation eines Drittanbieter-Cloud-Speichers in mehrere virtuelle Speichereinrichtungen mittels der Dateifragmentierung in einem nicht-standardmäßigen Verfahren (beispielsweise Verwenden eines Kammfilters zur Unterteilung der Daten durch einen Testdatenstrom) verbessert werden, so dass Dateiköpfe und Meta-Daten über separate Fragmente hinweg aufgeteilt werden. Beispielsweise können Dateien, die normalerweise als Datenblöcke mit einer Breite und einer Höhe gespeichert und Zeile für Zeile, von links nach rechts, ausgelesen werden, fragmentiert werden, indem die Daten Spalte für Spalte von links nach rechts ausgelesen werden. Der Kopf der Datei, der typischerweise die ersten wenigen Datenzeilen enthält, kann auf mehrere Fragmente aufgeteilt werden, wodurch die ursprünglichen Datei-Meta-Daten verschleiert werden.
-
Einige Cloud-Speicherdienstdrittanbieter stellen verbesserte Eigenschaften für gewisse Arten von Dateien, etwa Geo-Positionierung, Bildauswertung und Markierung, Gesichtserkennung, Bildverarbeitung und dergleichen bereit. Diese Eigenschaften können automatisch an Dateien des entsprechenden Typs ausgeführt werden, wenn sie mit dem Cloud-Speicherdienst synchronisiert werden.
-
Daher werden in einem weiteren Aspekt der vorliegenden Offenbarung zur wirksamen Nutzung der Verarbeitung, die von einem Cloud-Anbieter mit Aggregation von Cloud-Speicherdiensten bereitgestellt wird, Dateien als Pipeline dem Verarbeitungsanbieter zugeführt und dann mit einem alternativen Speicherdienst neu synchronisiert, wobei die Verarbeitung oder die Meta-Daten beibehalten werden. In einer Implementierung können Dateien für die Verarbeitung bereitgestellt, abgerufen und dann separat zur Speicherung bereitgestellt werden. In einer weiteren Implementierung können Dateien gleichzeitig für die Verarbeitung und die Speicherung bei unterschiedlichen Cloud-Speicheranbietern bereitgestellt werden. Nach der Verarbeitung können die Meta-Daten der Datei abgerufen werden, und die Datei kann aus dem Speicher des verarbeitenden Anbieters gelöscht werden. Die Meta-Daten können zu der gespeicherten Datei synchronisiert werden, oder sie können in einem Meta-Datenspeicher gehalten und während der Synchronisierung oder während Dateiabrufvorgängen von der Client-Einrichtung abgerufen werden.
-
In ähnlicher Weise stellen einige Cloud-Speicheranbieter zusätzliche Vorteile für die Speicherung gewisser Dateien über ihren Dienst bereit. Beispielsweise erlauben es gewisse Anbieter dem Benutzer, gewisse Arten von Dateien kostenfrei zu speichern, ohne dass die Dateien auf einen Speicherkontingent oder eine Speichergrenze angerechnet werden, etwa in Form von Photographien. Andere Anbieter ermöglichen es Benutzern, Musikdateien zu speichern und können automatisch Aufnahme mit geringer Qualität durch Versionen mit höherer Qualität ersetzen (wodurch die Qualität für den Benutzer verbessert wird, während eine Duplizierung und Speicherreduzierung durch den Server ausgeführt wird):
-
In einem weiteren Aspekt der vorliegenden Offenbarung werden diese Vorgehensweisen von einem Speicherverwalter genutzt, um entsprechende Arten von Dateien zu speziellen Speicheranbietern zu senden, um den Vorteil einer freien Speicherung oder einer weiteren Verarbeitung zu nutzen. Die Dateien können von Auslastungsausgleichsalgorithmen ausgeschlossen werden, so dass Speicherkontingente als Folge von Regeln eines Anbieters nicht unausgeglichen sind.
-
Figurenliste
-
- 1A ist eine Darstellung der Verwendung mehrerer Cloud-Speicherdienste durch eine Client-Recheneinrichtung in einer Implementierung;
- 1B ist eine Darstellung einer Aggregation der mehreren Cloud-Speicherdienste durch die Client-Recheneinrichtung der 1A in einer weiteren Implementierung;
- 2A ist eine Blockansicht einer Rechenumgebung zur Aggregation mehrerer Cloud-Speicherdienste über einen zwischengeschalteten Aggregationsanbieter gemäß einer Implementierung;
- 2B ist eine Blockansicht einer weiteren Rechenumgebung zur Aggregation mehrerer Cloud-Speicherdienste gemäß einer weiteren Implementierung;
- 3A ist eine Blockansicht einer Implementierung einer Client-Recheneinrichtung zur Aggregation mehrerer Cloud-Speicherdienste;
- 3B ist eine Blockansicht einer Implementierung einer Recheneinrichtung eines Aggregationsanbieters;
- 3C ist eine Blockansicht einer Implementierung einer Recheneinrichtung eines Cloud-Speicheranbieters;
- 4A-4F sind Graphen, die unterschiedliche Implementierungen von Cloud-Speicheraggregations- und Verwaltungsregeln zeigen;
- 5A-5F sind Flussdiagramme unterschiedlicher Implementierungen von Verfahren zur Cloud-Speicheraggregation und Verwaltung;
- 6A ist ein Diagramm einer Implementierung einer Fragmentierung einer Datei;
- 6B ist eine Darstellung einer Implementierung zur Verteilung von Dateifragmenten auf mehrere Cloud-Speicherdienste;
- 7A ist ein Flussdiagramm einer Implementierung eines Verfahrens zur Verteilung von Dateifragmenten auf mehrere Cloud-Speicherdienste;
- 7B ist ein Flussdiagramm einer Implementierung eines Verfahrens zum Zugreifen auf fragmentierte Dateien, die auf mehrere Cloud-Speicherdienste verteilt sind;
- 8A und 8B sind Darstellungen einer Implementierung einer Verschleierung einer Datei über Rotations- oder Kammfilterung eines Bitstroms;
- 9 ist ein Flussdiagramm einer Implementierung eines Verfahrens zur Verschleierung einer Datei;
- 10 ist eine Darstellung eines Signalablaufs einer Pipeline-Verarbeitung von Dateien über aggregierte Cloud-Speicherdienste;
- 11A und 11B sind Flussdiagramme von Implementierungen eines Verfahrens der Pipeline-Verarbeitung von Dateien über aggregierte Cloud-Speicherdienste; und
- 12 ist eine Blockansicht einer anschaulichen Recheneinrichtung, die zur Umsetzung der hierin beschriebenen Verfahren und Systeme geeignet ist.
-
In den Zeichnungen bezeichnen gleiche Bezugszeichen im Allgemeine identische, funktionell ähnliche und/oder strukturell ähnliche Elemente.
-
Detaillierte Beschreibung
-
Die folgende Beschreibung in Verbindung mit den zuvor angegebenen Zeichnungen geben eine Vielzahl von Ausführungsformen für beispielhafte Zwecke wieder, die in keiner Weise als Beschränkung des Schutzbereichs der beschriebenen Verfahren und Systeme zu betrachten sind. Der Fachmann kann die beschriebenen Verfahren und Systeme auf diverse Arten modifizieren, ohne von dem breitesten Bereich der beschriebenen Verfahren und Systeme abzuweichen. Daher sollten der Bereich der hierin beschriebenen Verfahren und Systeme als nicht durch eine der anschaulichen Ausführungsformen beschränkt erachtet werden und sollte in Übereinstimmung mit den begleitenden Ansprüchen und ihren Äquivalenten definiert werden.
-
Cloud-Speicheranbieter stellen Netzwerkspeicher für Benutzer, typischerweise in der Größe beschränkt, bereit. Unterschiedliche Anbieter wenden ferner unterschiedliche Regeln auf Dateien an (beispielsweise erlauben sie unbegrenzte Speicherung gewisser Arten von Dateien, etwa von Fotos oder Musik; oder sie lassen eine Speicherung von komprimierten oder ausführbaren Dateien nicht zu), und sie können auch unterschiedliche Funktionen, etwa gemeinsames Nutzen mit weiteren Benutzern des gleichen Dienstes, bereitstellen. Zur Speicherung zusätzlicher Daten oder zur vorteilhaften Ausnutzung dieser diversen Eigenschaften und Regeln können Benutzer mehrere Konten bei Anbietern haben, wodurch Dateien aus einem einzelnen Gerät auf mehreren Diensten gesichert oder dazu synchronisiert werden. Jeder dieser Anbieter erfordert typischerweise eine separate Client-Anwendung, die auf dem Gerät des Benutzers ausgeführt wird, und er überwacht einen einzigen Ordner (und Unterordner) bezüglich Synchronisierung mit dem Cloud-Speicher. Beispielsweise ist mit Verweis auf 1A die Verwendung mehrerer Cloud-Speicherdienste durch eine Client-Recheneinrichtung in einer Implementierung dargestellt. Wie gezeigt, kann eine Client-Einrichtung einen Verzeichnisbaum 100 aufweisen mit Dateien und umschließenden Ordnern. Beispielsweise kann ein Gerät einen Wurzelordner 102 haben, der mehrere Unterordner 104A-104C (die allgemein als Unterordner 104 oder überwachte Unterordner 104 bezeichnet werden) speichern kann, wovon jeder mehreren entsprechenden Cloud-Speicheranbietern 110A-110C zugeordnet ist (die im Allgemeinen als Cloud-Speicheranbieter oder Dienst bzw. Dienste 110 bezeichnet sind). Wie gezeigt, kann jeder überwachte Unterordner 104 eine oder mehrere Dateien 106A-106G (die allgemein als Datei bzw. Dateien 106 bezeichnet sind) enthalten, die ihrerseits in einem oder mehreren Unterordnern 104D-104E liegen können. Obwohl der Wurzelordner 102 in vielen Implementierungen als Wurzelordner 102 bezeichnet ist, kann er einen Benutzerordner, einen Dokumentenordner oder einen weiteren derartigen Ordner aufweisen, der selbst wiederum in weiteren Ordnern innerhalb des Verzeichnisbaumes liegen kann. Obwohl die überwachten Unterordner 104 ferner in dem Wurzelordner 102 dargestellt sind, können diese in vielen Anwendungen in unterschiedlichen Positionen innerhalb des Baumes liegt, wozu auch separate Unterordner und/oder unterschiedliche Tiefen des Baumes gehören.
-
Es kann eine Anwendung oder ein Client-Agent für jeden Cloud-Speicheranbieter 110 durch die Client-Einrichtung ausgeführt werden, wobei jeweils die Dateien in dem zugewiesenen überwachten Unterordner 104A-104C überwacht und die Synchronisierung von Dateien dem entsprechenden Cloud-Speicheranbieter 110 gesteuert wird. Wie gezeigt, können in einigen Implementierungen die gleichen Dateien in mehreren überwachten Unterordnern, (beispielsweise Datei 106A, Datei 106F) gespeichert und zu entsprechenden Anbietern übertragen werden. Beispielsweise kann ein Benutzer absichtlich die gleiche Datei in unterschiedlichen überwachten Unterordnern im Hinblick auf die Zuverlässigkeit anordnen, sollte ein Cloud-Speicheranbieter ausfallen, oder um vorteilhaft unterschiedliche Eigenschaften auszunutzen, die von unterschiedlichen Anbietern angeboten werden; der Anwender kann zufällig die Datei in unterschiedlichen überwachten Unterordnern anordnen (beispielsweise wenn er eine zuvor gespeicherte Kopie in einem Unterordner vergessen hat); oder ein Gerät des Benutzers kann ausgebildet sein, automatisch eine Datei in unterschiedlichen überwachten Unterordnern anzuordnen (beispielsweise Bilder, die von einem intelligenten Telefon aufgenommen werden, können automatisch zu mehreren Cloud-Speicheranbietern übertragen werden, woraus sich mehrere Kopien auf weiteren synchronisierten Geräten ergeben).
-
Als Folge dieser Komplexität müssen Benutzer gegebenenfalls eine Synchronisierung zwischen unterschiedlichen Anbietern manuell verwalten und müssen sich erinnern, wo Dateien gespeichert sind. Benutzer müssen gegebenenfalls ferner Dateien und Ordner zwischen überwachten Unterordnern manuell verschieben, wenn die Speicherkapazität eines Anbieters überschritten ist, oder wenn man sich dieser Kapazität annähert, oder wenn freier Speicherplatz für große Dateien zu reservieren ist. Wenn beispielsweise der Benutzer zwei Cloud-Speicherkonten hat, wovon eines 1GB freien Speicherplatz hat, und das andere 2GB an freien Speicherplatz hat, dann ist der Benutzer in der Lage, 3GB an Dateien innerhalb seines gesamten Cloud-Speicherplatzes zu speichern, muss aber gegebenenfalls Dateien von einem Speicheranbieter zu einem weiteren verschieben, um den freien Speicherplatz zu einem einzigen zusammenhängenden Block zusammenzufügen.
-
Daher beschreibt die vorliegende Offenbarung Systeme und Verfahren zur Aggregation und Verwaltung von Cloud-Speicher von mehreren Anbietern. In einem ersten Aspekt richtet sich die Erfindung an eine Dateiverteilung und Verwaltung über mehrere Cloud-Dienste hinweg durch einen Speicherverwalter. Der Speicherverwalter kann Cloud-Speicherdrittanbieterkonten zu einem einzigen Cloud-Speicherplatz zusammenführen bzw. aggregieren und kann einen Auslastungsausgleich für Dateien unter den Drittanbieterkonten bei Bedarf ausführen.
-
1B ist eine Darstellung einer Implementierung einer Aggregation der mehreren Cloud-Speicherdienste durch die Client-Recheneinrichtung der 1A. In einigen Implementierungen kann ein Synchronisierungs- oder Aggregations-Client-Gerät in der Client-Recheneinrichtung einen aggregierten Ordner 112 unterhalten, der eine Kopie oder Schattenkopie des Inhalts überwachter Unterordner 104A-104C speichern kann. Beispielsweise kann in einer Implementierung der aggregierte Ordner 112 Namen, Kürzel oder symbolische Verbindungen von Ordnern oder Dateien in den überwachten Unterordnern 104A-104C aufweisen. Die überwachten Unterordner 104A-104C können für den Benutzer verborgen sein, können aber so bewahrt werden, dass Überwachungs- und Synchronisierungsanwendungen von Cloud-Speicheranbietern 110A-100C ohne Modifizierung normal arbeiten. Daher sieht der Benutzer gegebenenfalls nur einen einzigen Ordner, der alle seine aggregierten Cloud-Speicherdateien und Ordner enthält.
-
In einigen Implementierungen kann der Aggregations- oder Synchronisierungsclient doppelte Dateien, die in mehreren überwachten Unterordnern gespeichert sind, entfernen. In weiteren Implementierungen kann der Aggregations- oder Synchronisierungsclient eine einzige symbolische Verbindung oder Kürzel in dem aggregierten Ordner 112 zeigen, kann jedoch einen Verweis auf mehrere entsprechende Dateien oder Ordnern in unterschiedlichen überwachten Unterordnern 104A-104C beispielsweise zur erhöhten Zuverlässigkeit bewahren, sollte ein Speicheranbieter ausfallen. In einer ähnlichen Implementierung werden Dateien und Ordner in dem aggregierten Ordner 112 sowie Kürzel oder symbolische Verbindungen, die in den überwachten Unterordnern 104A-104C vorhanden sind, gespeichert. Dies kann eine einfachere Duplizierung von Dateien in mehreren überwachten Unterordnern bieten, da jede symbolische Verbindung nur auf eine einzige Datei verweisen muss.
-
In weiteren Implementierungen kann der aggregierte Ordner 112 mit einer Benutzerschnittstelle oder GUI separat oder anstelle des Dateiexplorers oder einer Verzeichnisstruktur, die von einem Betriebssystem bereitgestellt wird, versehen sein. Beispielsweise bieten einige intelligente Telefone oder Tablet-Rechner einen direkten Benutzerzugriff auf eine Dateiverzeichnisverwaltung. Bei derartigen Geräten kann in einigen Implementierungen der Aggregations- oder Synchronisierungsclient eine Benutzerschnittstelle bereitstellen, die den Inhalt von Dateien und Ordnern zeigt, die in den aggregierten Cloud-Speicherdiensten gespeichert sind.
-
Wie zuvor erläutert ist, kann durch Aggregieren von Ordnern und Dateien zu einem einzigen aggregierten Ordner 112 ein Aggregationsclient Speicher verwalten, der für den Benutzer nicht sichtbar ist, wodurch Dateien oder symbolische Verbindungen zwischen überwachten Unterordnern verschoben werden, um Cloud-Speicheranwendungen zu veranlassen, Dateien zu synchronisieren oder zu löschen, den Speicher einzustellen und einen Auslastungsausgleich zwischen den Cloud-Speicheranbietern nach Bedarf auszuführen.
-
Rechenumgebung
-
2A ist eine Blockansicht einer Rechenumgebung zur Aggregation mehrerer Cloud-Speicherdienste mittels eines zwischengeschalteten Aggregationsanbieters gemäß einer Implementierung. Ein Client-Gerät bzw. Client-Einrichtung 200 kann mit mehreren Speicheranbietern 110 über ein oder mehrere Netzwerke 202, 202' in Verbindung treten. Ein Aggregationsanbieter 204, der manchmal auch als ein Speicherverwalter oder Aggregationsverwalter bezeichnet wird, kann in einigen Implementierungen durch eine zweite Recheneinrichtung ausgeführt werden. In einer Implementierung kann der Aggregationsanbieter 204 als ein Zwischenglied zwischen dem Client-Gerät 200 und Speicheranbietern 110 agieren, wie in 2A gezeigt ist. Dateien können von dem Client-Gerät zu dem Aggregationsanbieter 204 übertragen werden, der die Dateien auswählt und zu den Speicheranbietern 110 weiterleitet. Das Abrufen einer Datei kann in ähnliche Weise ausgeführt werden, wobei das Client-Gerät 200 eine Datei aus dem zwischengeschalteten Aggregationsanbieter 204 anfordert, der die Datei von dem entsprechenden Speicherdrittanbieter 110 abrufen kann und die Datei zu dem Client-Gerät 200 weiterleitet.
-
In einer weiteren Implementierung ist der Aggregationsanbieter 204 gegebenenfalls kein Zwischenglied für Dateiübertragungen. Beispielsweise ist mit Verweis auf 2B eine Blockansicht einer weiteren Rechenumgebung zur Aggregation mehrerer Cloud-Speicherdienste gemäß einer weiteren Implementierung gezeigt. In derartigen Implementierungen kann der Aggregationsanbieter 204 stattdessen lediglich Befehle für Clientanwendungen bereitstellen, die auf dem Client-Gerät 200 ausgeführt werden, um Dateien von entsprechenden Speicheranbietern 110 abzurufen oder dort zu speichern. In derartigen Implementierungen können Datei-Meta-Daten in dem Aggregationsanbieter 204 zusammen mit Angaben gespeichert werden, welcher Drittanbieter 110 für die Synchronisierung jeder Datei verwendet wird.
-
Die Netzwerke 202, 202' (die im Weiteren allgemein als Netzwerk bzw. Netzwerke 202 bezeichnet sind), die in 2A und 2B gezeigt sind, können eine beliebige Art und Form von Netzwerken beinhalten, einschließlich eines lokalen Netzwerks (LAN), eines Weitbereichsnetzwerks (WAN) oder des Internets. Die Netzwerke 202 weisen mehrere Verbindungen einschließlich, ohne darauf beschränkt zu sein, standardmäßige Telefonleitungen, LAN- oder WAN-Verbindungen (beispielsweise Ethernet, T1, T3, 56kb, X.25), Breitbandverbindungen (beispielsweise ISDN, Blockrelais, ATM, etc.), drahtlose Verbindungen (802.11a/b/g/n/ac, BlueTooth), Funkverbindungen, Satellitenverbindungen oder Kombinationen aller dieser zuvor genannten Verbindungen auf. Ein Netzwerk 202 kann ein oder mehrere Zwischeneinrichtungen einschließlich von Schaltern, Vermittlungsstellen, Firewalls, Zugängen, Zugriffspunkten oder andere derartige Einrichtungen aufweisen. In einigen Implementierungen kann das Netzwerk 202 homogen sein, etwa als eine Vielzahl von verdrahteten Verbindungen der gleichen Art, während in weiteren Implementierungen das Netzwerk 202 heterogen ist (beispielsweise eine Funkverbindung zu einer verdrahteten Verbindung zu einem Satellitenzugang zu einem drahtlosen Zugang, und dergleichen).
-
3A ist eine Blockansicht einer Implementierung einer Client-Recheneinrichtung 200 zur Aggregation mehrerer Cloud-Speicherdienste. Die Client-Recheneinrichtung 200 kann eine beliebige Art und Form einer Recheneinrichtung umfassen, einschließlich eines Laptop-Computers, eines Desktop-Computers, eines fest montierten Computers, eines Servers, eines Arbeitsplatzrechners, eines Tablet-Computers, eines intelligenten Telefons, eines am Körper tragbaren Computers, oder jedes andere derartige Gerät. In einigen Implementierungen weist die Client-Recheneinrichtung 200 eine virtuelle Maschine auf, die von einer physikalischen Maschine, etwa über einen übergeordneten Rechner bzw. Hypervisor, ausgeführt wird. In vielen Implementierungen werden Client-Recheneinrichtungen 200 als Client-Geräte, Benutzergeräte, Sicherungs- oder Synchronisierungsclients oder durch einen weiteren ähnlichen Begriff bezeichnet. Die Geräte 200 können von unterschiedlicher Art, Marke oder Modell sein und können unterschiedliche Betriebssysteme ausführen. Ein Gerät 200 kann einen Prozessor 300, eine Netzwerkschnittstelle 302, einen Speicher 306, etwa eine Festplatte, einen Flash-Speicher oder eine Sorte eines Datenspeichers und Eingabe/Ausgabeeinrichtungen oder Schnittstellen 304, etwa eine Anzeige, eine Tastatur, einen Berührbildschirm oder eine andere derartige Einrichtung aufweisen. Der Prozessor 300 kann einen Synchronisierungsclient 308 sowie ein Betriebssystem, Anwendungen oder andere Prozesse oder Logikmodule ausführen.
-
Der Prozessor 300 kann eine Logikschaltung aufweisen, die auf Befehle anspricht und diese verarbeitet, die aus dem Speicher 306 abgerufen werden. Der Prozessor 300 kann eine Mikroprozessoreinheit, wie sie etwa von Intel Corporation Santa Clara, Kalifornien hergestellt werden, wie sie von Motorola Corporation, Schaumburg, Illinois hergestellt werden; wie sie Apple Inc., Cupertino, Kalifornien hergestellt werden, oder andere Einzel- oder MehrkernProzessoren, oder jeden weiteren Prozessor aufweisen, der in der Lage ist, so zu arbeiten, wie dies hierin beschrieben ist, oder es kann eine Kombination aus zwei oder mehr Einzel- oder Mehrkernprozessoren vorgesehen sein.
-
Eine Netzwerkschnittstelle 302 kann eine verdrahtete Schnittstelle, etwa eine Ethernet-Schnittstelle mit beliebiger Geschwindigkeit einschließlich von 10BASET, 100BASET, Gigabit-Ethernet, oder jede andere derartige Geschwindigkeit, eine universelle serielle Bus-(USB-) Schnittstelle, eine Leistungsleitungsschnittstelle, eine serielle Schnittstelle oder eine beliebige andere Art einer verdrahteten Schnittstelle aufweisen. In weiteren Implementierungen kann die Netzwerkschnittstelle 302 eine drahtlose Schnittstelle, etwa Bluetooth Wireless-USB 802.11 (WiFi) Schnittstelle oder eine Funkschnittstelle oder eine andere Art und Form einer drahtlosen Schnittstelle aufweisen. In einigen Implementierungen kann eine Netzwerkschnittstelle 302 sowohl eine verdrahte als auch eine drahtlose Schnittstelle aufweisen, um zusätzliche Flexibilität, Zuverlässigkeit oder Bandbreite bereitzustellen. Die Netzwerkschnittstelle 302 kann eine oder mehrere Schichten eines Netzwerkstapels einschließlich von Transportschichtfunktionen, Internet-Schichtfunktionen, physikalische Schichtfunktionen und Schnittstellen oder andere derartige Funktionen oder Schnittstellen aufweisen. Die Netzwerkschnittstelle 302 kann über ein Netzwerk 202 und/oder ein oder mehrere andere Netzwerke einschließlich eines lokalen Netzwerks (LA) hinter einem Zugang oder einem Netzwerkadressenübersetzer (NAT) oder einer weiteren derartigen Einrichtung kommunizieren. Folglich hat die Netzwerkschnittstelle 202 eine IP-Adresse, die für ein Weitbereichsnetzwerk (WAN etwa das Internet) verfügbar ist oder kann hinter einer Anwendung angeordnet sein und kann eine IP-Adresse aufweisen, die direkt nur für das lokale Netzwerk verfügbar ist. Das Netzwerk 202 kann ein LAN, ein WAN, ein Funknetzwerk, ein terrestrisches oder Satellitennetzwerk oder eine Kombination dieser oder anderer Netzwerke sein. Die Netzwerkschnittstelle 302 kann verwendet werden, um eine Verbindung mit einem Aggregationsanbieter 204 und/oder Cloud-Speicheranbietern 110 herzustellen.
-
Die Client-Einrichtung 200 kann eine oder mehrere Eingabe- oder AusgabeSchnittstellen 304, etwa eine Tastatur, eine Maus, eine Berührungsfläche, einen Berührungsbildschirm, ein Mikrofon, eine Kamera, einen Beschleunigungsmesser, einen Positionsverfolger, einen Joystick oder andere derartige Eingabegeräte, oder einen Bildschirm, einen Audio-Lautsprecher, eine Video-Ausgabe, eine haptische Ausgabe oder ein anderes derartiges Ausgabegerät aufweisen. Die Eingabe-Ausgabeschnittstellen 304 können verwendet werden, um eine Benutzerschnittstelle 322 zu betrachten und damit zu interagieren, wie sie etwa von einem Synchronisierungsclient 308 oder einem Betriebssystem der Einrichtungen bereitgestellt wird.
-
Die Client-Einrichtung 200 kann eine Speichereinrichtung 306 aufweisen, etwa eine Festplatte, einen Flash-Speicher, eine Hybridplatte oder eine andere Art und Form eines Datenspeichers einschließlich von Direktzugriffsspeichern (RAM), dynamischen RAM (DRAM), einem Cache-Speicher, oder einer weiteren derartigen Form eines Datenspeichers. Der Speicher 306 kann unterschiedliche Arten von Daten speichern, einschließlich von Systemdateien, etwa vom Betriebssystem ausführbare Dateien, Bibliotheken, eine Registrierung, Benutzerschnittstellenkomponenten oder andere derartige Daten, die als Teil als Betriebssystems des Geräts 200 bereitgestellt oder davon erzeugt werden. Der Speicher 306 kann ebenfalls eine oder mehrere Anwendungsdateien, etwa ausführbare Anwendungen, anwendungspezifische Bibliotheken, Vorlagen, Benutzerschnittstellenkomponenten, Einstellungen oder Referenzdateien, Anwendungszusätze, etwa Graphik oder Medien, oder eine andere Art und Form anwendungsbezogener Dateien speichern. Anwendungen können Produktivitäts- oder „Büro“-Anwendungen, Videospiele, Netzbrowser einschließlich Zusatzkomponenten oder Erweiterungen, Graphik- oder Audio-Anwendungen oder eine andere Art und Form von Anwendung umfassen. Obwohl der Speicher 306 in der Client-Einrichtung 200 gezeigt ist, kann er in vielen Implementierungen intern, extern oder als eine Kombination von intern und extern vorgesehen sein, wozu externe Laufwerke oder Flash-Laufwerke, Netzwerk-Laufwerke oder andere derartige Speichereinrichtungen gehören.
-
Der Speicher 306 kann einen Synchronisierungsclient 308 speichern. Der Synchronisierungsclient 308, der manchmal auch als Aggregationsclient oder Sicherungsclient bezeichnet wird, kann eine Anwendung, einen Dienst, einen Server, einen Dämon, eine Routine oder eine andere ausführbare Logik zum Aggregieren von Cloud-Speicher aus mehreren Dateien zur Verwendung der Synchronisierung von Dateien umfassen. Der Synchronisierungsclient 308, eine Sicherungseinheit 310, eine Wiederherstellungseinheit 312 und/oder eine Löscheinheit 314 zur Ausführung diverser Dateiverwaltungs- und Synchronisierungsaufgaben aufweisen, einschließlich der Sicherung oder der Übertragung von Dateien zu einem Cloud-Speicher oder der Steuerung der Dateiverwaltung, um eine Drittanbieter-Clientanwendung zu veranlassen, Dateien in den Cloud-Speicher zu übertragen, Dateien aus dem Cloud-Speicher abzurufen, oder zur Steuerung einer Dateiverwaltung, um eine Drittanbieter-Clientanwendung aufzufordern, Dateien im Cloud-Speicher wiederherzustellen, und zu löschen, zum Löschen aus dem Cloud-Speicher oder zur Steuerung der Dateiverwaltung, um eine Drittanbieter-Clientanwendung aufzufordern, Dateien in dem Cloud-Speicher zu löschen.
-
Die Sicherungseinheit 310 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder andere ausführbare Logikmodule zum Laden von Dateien zu den Speicheranbietern 110 und zur Benachrichtigung anderer Komponenten oder Dienste über den Erfolg oder das Scheitern des Ladevorgangs umfassen. Die Sicherungseinheit 310 kann ein oder mehrere Kommunikationsprotokolle verwenden, einschließlich des Dateitransferprotokolls (FTP), des Hypertexttransferprotokolls (HTTP) oder von sicheren Versionen dieser und anderer Protokolle, eines Transportschichtprotokolls (TCP) oder eines Benutzer-Datagram-Protokolls (UDP), oder anderer derartiger Kommunikationsprotokolle. In ähnlicher Weise kann die Wiederherstellungseinheit 313 eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul zum Herunterladen von Dateien aus den Speicheranbietern 110 aufweisen. Die Löscheinheit 314 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul zum Auslösen einer Dateilöschung in den Speicheranbietern 110 aufweisen, einschließlich des Übertragens von Anforderungen zur Dateilöschung oder zum Abrufen ohne Speicherung.
-
In einigen Implementierungen können die Sicherungs-, Wiederherstellungs- und Löscheinheiten 310, 314 direkt mit Cloud-Speicherdiensten kommunizieren, um Dateien zu sichern, abzurufen und zu löschen. In weiteren Implementierungen, wie dies zuvor erläutert ist, kann die Recheneinrichtung 200 spezielle Synchronisierungsclients für jeden Cloud-Speicheranbieter ausführen. In einigen Implementierungen können diese Clients modifiziert sein, um einen aggregierten Ordner 112 zu überwachen, daraus zu lesen oder diesen zu beschreiben, während in weiteren Implementierungen diese Clients Dateien aus überwachten Unterunterordnern 104 auslesen und in diese schreiben können, die für eine Schnittstelle mit Benutzerzugriff oder eine Verzeichnisstruktur verborgen sein können. Die Aggregation kann ohne Modifizierung der speziellen Synchronisierungsclients in derartigen Implementierungen ausgeführt werden.
-
Der Synchronisierungsclient 308 kann eine Dateiüberwachungseinheit 316 ausführen oder mit dieser kommunizieren. Die Dateiüberwachungseinheit 316 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder anderes ausführbares Logikmodul zum Absuchen eines aggregierten Ordners 112 und/oder überwachter Unterordner 104A-104N aufweisen, die mit Cloud-Speicherdiensten in Beziehung stehen, um fehlende, neue oder modifizierte Dateien aufzufinden. In vielen Implementierungen kann eine Dateiüberwachungseinheit 316 Betriebssystemaufrufe zu einem Dateisystem oder einem Speichersystem erhalten oder abfangen, um Schreiboperationen in Dateien zu überwachen. In weiteren Implementierungen kann ein Betriebssystem explizite Aufrufrückmeldungen oder Indikationen für neue oder modifizierte Dateien bereitstellen. Beispielsweise kann in einer Implementierung ein Benutzer eine Datei in einem aggregierten Ordner 112 in der Client-Einrichtung 200 erzeugen. Die Dateiüberwachungseinheit 316 kann die neue Datei erkennen, entweder durch Überwachung eines Dateischreibvorgangs, Empfangen einer Aufrufrückmeldung im Betriebssystem oder durch periodisches Absuchen des Ordnerinhalts und Vergleich mit einem vorhergehenden Zustand. Die Dateiüberwachungseinheit 316 kann einen Synchronisierungsclient 308 über die neue Datei zur Auswahl eines Cloud-Speicherdienstes benachrichtigen und kann die Datei übertragen. In einer weiteren Implementierung kann ein Benutzer eine Datei auf einem weiteren Gerät erzeugen, das mit einem Cloud-Speicheranbieter synchronisiert ist. Der Cloud-Speicheranbieter kann die neue Datei an die Client-Einrichtung 200 senden, oder eine Clientanwendung kann regelmäßig neue Dateien aus dem Speicheranbieter anfordern und die neu empfangene Datei oder die Dateien in einen überwachten Unterordner 104 verschieben. Die Dateiüberwachungseinheit 316 kann den überwachten Unterordner 104 überwachen und kann die neue Datei erkennen, und kann den Synchronisierungsclient anweisen, die Datei in einen aggregierten Ordner 112 zu verschieben und/oder symbolische Verbindungen zu erzeugen, wie dies zuvor erläutert ist, und dergleichen. In einigen Implementierungen kann die Dateiüberwachungseinheit 316 erkennen, ob freier Speicherplatz in dem Speicher 306 oder in Konten, die der Client-Einrichtung zugeordnet sind, in den Cloud-Speicheranbietern unter einem Schwellenwert liegen oder nahe bei Null sind, und sie kann den Synchronisierungsclient 308 anweisen, Dateien zwischen überwachten Unterordner 104 nach Bedarf zu verschieben, um einen Ausgleich herzustellen oder Speicherplatz zu machen.
-
Der Speicher 306 kann einen entfernten Dateiverwalter 318 aufweisen. Der entfernte Dateiverwalter 318 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder eine andere ausführbare Logik zur Übertragung von Datei-Meta-Daten zu und aus einem Aggregationsanbieter 204 aufweisen. Datei-Meta-Daten können eine beliebige Art und Form von Information über eine Datei umfassen, einschließlich eines Titels, eines Verzeichnispfads, einer Größe, eines Erzeugungs- und/oder Modifizierungsdatums, des Typs, ob die Datei komprimiert und/oder verschlüsselt ist, ob die Datei für hohe Verfügbarkeit oder Sicherheit markiert ist, oder eine andere Art und Form von Information. Die Datei-Meta-Daten können ID3-Markierungen, Dateiköpfe oder andere derartige Daten umfassen.
-
Der Speicher 306 kann einen entfernten Benachrichtigungsverwalter 320 aufweisen. Der entfernte Benachrichtigungsverwalter 320 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes speicherbares Logikmodul zur Kommunikation mit einem Aggregationsanbieter 204 aufweisen, um Dateien, Cloud-Speicheranbieter und Konten zu ermitteln, und kann eine Schnittstelle zwischen dem Aggregationsanbieter 204 und dem Synchronisierungsclient 308 aufweisen.
-
Der Speicher 306 kann eine Benutzerschnittstelle 322 zum Interagieren mit dem Synchronisierungsclient 308 aufweisen. In einigen Implementierungen, wie dies zuvor erläutert ist, bietet ein Betriebssystem gegebenenfalls keinen direkten Zugriff auf eine Dateiverwaltung oder eine Verzeichnisstruktur für den Benutzer. In derartigen Implementierungen kann eine Synchronisierungsclient 308 eine Benutzerschnittstelle 322 bereitstellen, so dass der Benutzer in der Lage ist, synchronisierte Dateien, die von den Cloud-Speicheranbietern aggregiert sind, zu sehen und damit zu interagieren. In weiteren Implementierungen, etwa wenn ein Betriebssystem Zugriff für den Benutzer auf einen Dateiverwalter bereitstellt, kann die Benutzerschnittstelle 322 Indikatoren und Kennungen für den Synchronisierungsstatus von Dateien, etwa überlagerte Symbole, aufweisen.
-
Der Speicher 306 kann eine Konfigurationseinheit 324 aufweisen. Die Konfigurationseinheit 324 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul zur Konfigurierung eines Synchronisierungsclients 308, einer Dateiüberwachungseinheit 316, eines entfernten Dateiverwalters 318 und/oder einer Regeleinheit 326 aufweisen. In einigen Implementierungen kann die Konfigurationseinheit 324 über eine Benutzerschnittstelle 322 modifiziert werden, während in weiteren Implementierungen ein Aggregationsanbieter 204 oder ein Synchronisierungsclient 308 Konfigurationskommentare zu der Konfigurationseinheit 324 übertragen kann.
-
Der Speicher 306 kann eine Regeleinheit 326 aufweisen. Die Regeleinheit 326 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul aufweisen, um zu entscheiden, was und wie zu sichern oder zu synchronisieren ist, und wo und was und wie Dateien zu löschen sind, und wann. Die Regeleinheit 326 kann einen Satz einer oder mehrerer Regeln oder Filter zur Anpassung von Dateitypen, Größen, Punkte der letzten Benutzung oder Modifizierung oder andere derartige Information aufweisen und kann entsprechende Aktionen haben (beispielsweise wenn der Dateityp „Foto“ ist, kann sie für eine Pipeline-Verarbeitung über einen ersten Cloud-Speicherdienst hinzufügen und kann eine Speicherung in einem Cloud-Speicherdienst veranlassen, usw.).
-
Der Speicher 306 kann einen Speicheranbieterverwalter 328 aufweisen. Der Speicheranbieterverwalter 328 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul aufweisen, um Drittanbieter-Cloud-Speicheranbieter oder Dienste und/oder Benutzer- oder Gerätekonten in diesen Anbietern zu verwalten. In einigen Implementierungen kann der Speicheranbieterverwalter 328 eine Gruppe aus Anwendungsprogrammierschnittstellen (APIs) oder Befehlsdefinitionen zum Interagieren oder Kommunizieren mit Speicherdrittanbietern aufweisen. APIs oder Befehle können in einem oder mehreren Zusätzen, etwa Speicheranbieterzusätzen 330A-330B gespeichert werden und können nach Bedarf eingeladen oder ausgeladen werden, wobei dies davon abhängt, welche Konten oder Anbieter von dem Synchronisierungsclient 308 verwendet werden. In einigen Implementierungen werden der Speicheranbieterverwalter 328 und die Zusätze 330 anstelle von Drittanbieter-Clientsynchronisierungsanwendungen verwendet, um Dateien mit entsprechenden Cloud-Speicherdrittanbietern zu synchronisieren. In weiteren Implementierungen werden der Speicheranbieterverwalter 328 und Zusätze 330 verwendet, um Aktionen von Drittanbieter-Clientsynchronisierungsanwendungen, etwa das Abrufen von Dateien aus dem Speicher, zu veranlassen. Daher können der Speicheranbieterverwalter 328 und Zusätze 330 Befehle eines Synchronisierungsclients 308 in spezifische APIs für Drittanbieterdienste oder Anwendungen übersetzen.
-
Der Speicher 306 kann eine lokale Datenbank 332 aufweisen. Die Datenbank 332 kann eine Datendatei, eine flache Datei, ein Dateiarray, eine relationale Datenbank oder eine andere Art und Form eines Datenspeichers umfassen. Die Datenbank 332 kann Information über Dateien, etwa Datei-Meta-Daten und/oder Information über Benutzerkonten und/oder Cloud-Speicheranbieter speichern. In einigen Implementierungen kann ein Synchronisierungsclient kryptografische Prüfsummen für Dateien zur Synchronisierung berechnen. Die Prüfsumme der Datei kann an Cloud-Speicheranbieter oder einen Aggregationsanbieter übermittelt werden, um anzugeben, welche der Dateien zur Synchronisierung übermittelt werden muss (beispielsweise ob die Prüfsumme mit einer Prüfsumme einer Datei übereinstimmt oder nicht übereinstimmt, die in dem Cloud-Speicheranbieter gespeichert ist). Prüfsummenalgorithmen können beliebige geeignete Algorithmen sein, um Daten in kleinem Format zu repräsentieren, etwa der MD5-Algorithmus, der SHA-256-Algorithmus oder jeder andere derartige Algorithmus, und sie können in einer lokalen Datenbank 332 gespeichert sein. Prüfsummen können für Vergleichs- und Synchronisierungsaktivitäten ohne Bereitstellung identifizierender Meta-Daten für einen Aggregationsanbieter oder einen Cloud-Speicherdienst verwendet werden, und ermöglichen es, dass Dateien durch die Client-Einrichtung 200 vor der Übertragung verschlüsselt werden. Die lokale Datenbank 332 kann ferner Dateifragmente erkennen in Implementierungen, in denen Dateien vor der Synchronisierung fragmentiert werden, und kann die Positionen der Speicherung von Dateien und/oder von Fragmenten in einem oder mehreren Speicheranbietern erkennen.
-
Der Speicher 306 kann ferner einen lokalen Cache-Verwalter 334 und einen lokalen Cache-Speicher 336 aufweisen, der von dem Cache-Verwalter betrieben wird. Der lokale Cache-Verwalter 334 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine, oder ein anderes ausführbares Logikmodul zur Verwaltung eines Cache-Speichers 336 aus Datei-Meta-Daten, Miniaturbildern, vorhergehenden Versionen synchronisierter Dateien oder andere derartige Dateien aufweisen. Der Cache-Speicher kann verwendet werden, um einen schnelleren Zugriff auf synchronisierte Dateien zu ermöglichen oder Miniaturbilder von Mediendateien in einer Benutzerschnittstelle zu zeigen.
-
Der Speicher 306 kann ferner eine Gerätekennung 338 speichern, die eine numerische Zeichenfolge, eine alphanumerische Zeichenfolge, eine Medienzugriffsteuer-(MAC-) Adresse, eine Seriennummer, einen Benutzer- oder Kontenamen oder eine andere Art und Form einer Kennung zur Identifizierung einer Client-Einrichtung 200 umfassen kann. Die Gerätekennung 338 kann von einem Synchronisierungsclient 308 oder einem Speicheranbieterverwalter 328 für einen Server, einen Aggregationsanbieter oder einen Cloud-Speicheranbieter zusammen mit Dateiprüfsummen und/oder Dateien bereitgestellt werden, um mit den Prüfsummen oder gesicherten Dateien aufgezeichnet oder mit diesen in Beziehung gesetzt werden. Während einer Dateiwiederherstellung oder Synchronisierung stellt der Synchronisierungsclient 308 oder der Speicheranbieterverwalter 328 die Gerätekennung 338, und in einigen Implementierungen, Dateiprüfkennungen bereit, und der Sicherungsserver kann zugehörige Dateiprüfsummen erkennen und entsprechende Dateien in dem Gerät 200 wiederherstellen. Daher können Dateien ohne Bereitstellung von Dateinamen, Verzeichnissen, Meta-Daten oder weiteren identifizierbaren Informationen aus dem Sicherungsserver abgerufen werden, wodurch Sicherheit und Datenschutz erhöht werden.
-
Obwohl eine oder mehrere Komponenten 316-338 getrennt von dem Synchronisierungsclient 308 gezeigt sind, können sie in vielen Implementierungen Teil des Synchronisierungsclients 308 sein, etwa als Unterroutinen, Dienste oder Dämonen, die von dem Client-Gerät 308 ausgeführt werden. In vielen Implementierungen ist der Synchronisierungsclient 308 für die Verwaltung der Kommunikation zwischen den Komponenten 316-338 verantwortlich.
-
3B ist eine Blockansicht einer Implementierung in einer Recheneinrichtung eines Aggregationsanbieters 204, der allgemein als ein Aggregationsanbieter oder eine Aggregationsanbietereinrichtung 204 bezeichnet wird. Der Aggregationsanbieter 204 umfasst eine oder mehrere Recheneinrichtungen, einschließlich von fest installierten Servern, Desktop-Servern, Arbeitsplatzrechner, virtuellen Maschinen, die von einer oder mehreren physikalischen Maschinen ausgeführt werden, eines Server-Clusters, einer Cloud oder einer Farm, oder anderer derartiger Einrichtungen. Wie bei der Clientrecheneinrichtung 200 kann auch der Aggregationsanbieter 204 einen oder mehrere Prozessoren 300, Netzwerkschnittstellen 302, Eingabe/Ausgabeschnittstellen 304 und/oder einen Speicher 306 aufweisen. In vielen Implementierungen kann der Aggregationsanbieter 204 ein Computer ohne Steuerelemente sein, der keine Eingabe- oder Ausgabeeinrichtungen 304 aufweist. In ähnlicher Weise kann in vielen Implementierungen der Speicher 306 auf einen oder mehrere Speicher aufgeteilt sein, die Teil des Aggregationsanbieters 204 sind oder davon getrennt sein können.
-
Der Speicher 306 eines Aggregationsanbieters 204 kann einen Speicherverwalter 350, eine Authentifizierungseinheit 352 und eine Kontendatenbank 354, einen Meta-Datenspeicher 356, eine Konfigurationseinheit 358, eine Regeleinheit 360 und/oder einen Speicheranbieterverwalter 328, der ein oder mehrere Speicheranbietereinsätze 330 speichert, aufweisen. Beispielsweise kann in Implementierungen, in denen der Aggregationsanbieter 204 als Zwischenglied zwischen einer Client-Einrichtung 200 und Drittanbieter-Cloud-Speicherdiensten 110 fungiert, der Aggregationsanbieter einen Speicheranbieterverwalter 328 ausführen, um mit spezifischen APIs jedes Cloud-Speicheranbieters zu kommunizieren, wie zuvor erläutert ist.
-
Der Speicherverwalter 350 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul zur Verwaltung der Aggregation und Verteilung von Clientdateien auf Cloud-Speicheranbieter aufweisen. Der Speicherverwalter 350 kann Anforderungen zum Synchronisieren oder Speichern einer Datei in der aggregierten Cloud aus einer Client-Einrichtung in einigen Implementierungen empfangen und kann einen oder mehrere Cloud-Speicheranbieter auswählen, zu denen die Datei oder Dateifragmente zur Speicherung gesendet werden sollen. Der Speicherverwalter 350 kann eine oder mehrere Regeln bei der Auswahl von Speicheranbietern auf der Grundlage relativer Speichermengen unterschiedlicher Anbieter, Dateiarten und/oder einer erweiterten Verarbeitung, die aus unterschiedlichen Anbietern verfügbar ist, anwenden.
-
Eine Authentifizierungseinheit 352 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul aufweisen, um Client-Einrichtungen und/oder Benutzer der besagten Einrichtungen zu authentifizieren. Die Authentifizierungseinheit 352 kann eine Kontendatenbank 354 unterhalten oder mit dieser kommunizieren, um Client-Einrichtungen und zugehörige Konten in einem oder mehreren Cloud-Speicheranbietern zu erkennen. Client-Einrichtungen können sich selbst bei der Authentifizierungseinheit 352 über Kontennamen, Benutzernamen, Kennwörter, Gerätekennungen, Geräteeigenschaften (beispielsweise IP- oder MAC-Adressen, Maschinentypen, Betriebssystem, Softwareversionen und dergleichen), oder durch einen weiteren derartigen Prozess authentifizieren. In einigen Implementierungen können eine Client-Einrichtung und die Authentifizierungseinheit 352 öffentliche kryptografische Schlüssel, Cookies, Sitzungskennungen oder andere Einheiten austauschen, um die Identifizierung und Authentifizierung zu unterstützen.
-
Die Kontendatenbank 354 kann Datendateien, flache Dateien, ein Array, einen Index, Tabellen oder eine andere Art und ein anderes Format einer Datenbank zur Identifizierung von Geräten, Benutzung, Konten, einschließlich von Konten von Speicherdrittanbietern oder eine andere derartige Information enthalten. Die Datenbank 354 kann von einer Authentifizierungseinheit 352 zur Identifizierung und Authentifizierung von Geräten oder Konten verwendet werden.
-
Der Speicherverwalter 350 kann Datei-Meta-Daten in dem Meta-Datenspeicher 356 speichern, der eine Datei, flache Datei, ein Array, einen Index, eine Tabellen oder eine andere Art und ein anderes Format einer Datenbank enthalten kann. Der Meta-Datenspeicher 356 kann Information über synchronisierte Dateien einschließlich von Meta-Daten jeder Datei (beispielsweise Dateinamen, Größen, Modifizierungs- oder Erzeugungsdatum, Typen, ID3-Marken, Miniaturbilder oder andere derartige Kennungen); Fragmentierung der Datei, wenn es eine gibt (beispielsweise Anzahl, Größe, Reihenfolge und/oder Kennungen der Fragmente); und Orte, an denen die Datei und/oder Fragmente gespeichert sind (beispielsweise welcher Cloud-Anbieter und unter welcher Kennung URI, URL, oder andere Adressen) umfassen. In einigen Implementierungen kann der Meta-Datenspeicher 356 Identifizierungen der Komprimierung und/oder Verschlüsselungsarten für eine Datei speichern.
-
Die Konfigurationseinheit 358 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul zur Konfigurierung von Anbieterauswahl- und Speicherregeln für den Speicherverwalter 350 aufweisen. Die Konfigurationseinheit 358 kann über eine Benutzerschnittstelle, die von der Einrichtung bereitgestellt wird, etwa eine GUI, angesprochen werden, oder über eine Netzwerkschnittstelle angesprochen werden. Die Konfigurationseinheit 358 erlaubt es einem Administrator, Regeln, Schwellenwerte, Auslastungsausgleichsparameter, oder andere derartige Information festzulegen.
-
Die Regeleinheit 360 kann eine Anwendung, einen Dienst, einen Dämon, einen Server, eine Routine oder ein anderes ausführbares Logikmodul aufweisen, um Speicherregeln während der Auswahl von Speicheranbietern anzuwenden. Die Regeleinheit 360 kann eine oder mehrere Regeln ausführen, die von einer Konfigurationseinheit 358 erstellt wurden, um einen oder mehrere Speicheranbieter auszuwählen, in denen eine Datei zu speichern ist. Die Regeleinheit 360 kann Dienstanbieterauswahlen auf der Grundlage einer beliebigen Art und Form von Regeln, Schwellenwerten, Parametern oder weiteren Daten ausführen.
-
Obwohl die Komponenten 352-360 separat dargestellt sind, können sie in vielen Implementierungen ein Teil des Speicherverwalters 350 sein. In weiteren Implementierungen können eine oder mehrere der Komponenten 352-360 separat sein und können von einer separaten Recheneinrichtung ausgeführt werden.
-
3C ist eine Blockansicht einer Implementierung einer Recheneinrichtung eines Cloud-Speicheranbieters 110. Wie bei den Aggregationsanbietern 204 kann ein Cloud-Speicheranbieter 110 eines oder mehrere der folgenden umfassen: einen Tisch-Server oder einen fest installierten Server, physikalische Recheneinrichtungen, virtuelle Recheneinrichtungen, die von einer oder mehreren physikalischen Recheneinrichtungen ausgeführt werden, Cluster, Farmen oder Clouds realer oder virtueller Maschinen, oder andere derartige Einrichtungen. In ähnlicher Weise können die Cloud-Speicheranbieter 110 mehrere Recheneinrichtungen umfassen, etwa Speichereinrichtungen und Verarbeitungs- oder Verwaltungseinrichtungen, und können in vielen Implementierungen über einen großen Bereich verteilt sein. Ein Cloud-Speicheranbieter 110 kann einen oder mehrere Prozessoren 300, Netzwerkschnittstellen 302, Eingabe/Ausgabeschnittstellen 304 und Speichereinrichtungen 306 aufweisen.
-
In vielen Implementierungen kann ein Cloud-Speicheranbieter 110 einen Synchronisierungsverwalter 380 zur Kommunikation mit Synchronisierungs- oder Client-Anwendungen in mehreren Client-Einrichtungen und zum Senden und Empfangen von Dateien zu und aus den Client-Einrichtungen ausführen. Wie zuvor erläutert ist, können unterschiedliche Cloud-Speicheranbieter 110 unterschiedliche Synchronisierungsverwalter 380 mit unterschiedlichen Kommunikationsstandards oder APIs verwenden.
-
Ein Cloud-Speicheranbieter 110 kann eine Authentifizierungseinheit 382 ausführen, die ähnlich zu der Authentifizierungseinheit 352 sein kann, und kann viele der gleichen Funktionen ausführen. In ähnlicher Weise kann die Authentifizierungseinheit 382 mit einer Kontendatenbank 384 kommunizieren oder diese unterhalten.
-
Ein Cloud-Speicheranbieter 110 kann ferner einen Dateispeicher 386 unterhalten, der eine oder mehrere physikalische und/oder virtuelle Speichereinrichtungen über eine oder mehrere physikalische Recheneinrichtungen hinweg aufweisen kann. Ein Benutzerkonto kann ein zugewiesenes Speicherkontingent oder eine maximale Speichermenge aufweisen, die aus dem Dateispeicher 386 verfügbar ist.
-
Aggregation von Konten mit Cloud-Speicherdiensten oder Anbietern
-
Wie zuvor erläutert ist, können in vielen Implementierungen Benutzer mehrere Speicherkonten bei unterschiedlichen Speicheranbietern haben, wovon jeder Speicher unterschiedliche Zuweisungen oder Regeln aufweisen kann. Es sei zunächst auf 4A verwiesen, in der ein erster Graph für Implementierungen einer Cloud-Speichernutzung über mehrere unterschiedliche Cloud-Speicheranbieter 110A-110C hinweg gezeigt ist. Wie gezeigt, kann jeder Anbieter 110A eine andere Speicherzuteilung 400A-400C, die im Allgemeinen als ein Speicherkontingent oder eine Speicherzuteilung 400 bezeichnet ist, bereitstellen. Wenn ein Benutzer Dateien und Ordner den überwachten Ordnern manuell hinzufügt oder Dateien im Hinblick auf die Synchronisierung erzeugt, können unterschiedliche Speichermengen in jedem Anbieter benutzt werden, wie in den Balken 402A-402C gezeigt ist. Wie gezeigt, kann die Speicherverteilung unausgeglichen sein, wodurch sich möglicherweise „außerhalb-des-Speicherbereichs“-Benachrichtigungen von einem Anbieter (beispielsweise Anbieter 110B) ergeben, obwohl sehr viel Speicherplatz bei einem weiteren Anbieter verbleibt.
-
Es sei nun auf 4B verwiesen; in einer Implementierung einer Aggregationsregel wird die Speicherausnutzung zwischen unterschiedlichen Anbietern 110A-110C entsprechend der Speichermenge angepasst. Wenn neue Dateien erzeugt oder modifiziert werden, kann ein Speicherverwalter oder ein Synchronisierungsclient einen Ziel-Cloud-Speicheranbieter 110 für die Speicherung der Datei auf der Grundlage einer aktuellen Auslastung jedes Anbieters auswählen. Ein Anbieter mit dem wenigsten benutzten Speicher 402A-402C kann dann ausgewählt werden, um die Datei zu erhalten. In einigen Implementierungen, insbesondere wenn eine große Datei mit dem Cloud-Speicher synchronisiert wird, woraus sich eine große Unausgewogenheit zwischen Anbietern ergibt, kann der Speicherverwalter oder der Synchronisierungsclient andere Dateien (beispielsweise kleinere Dateien) in dem gleichen Anbieter auswählen, die entfernt oder zu weiteren Anbietern verschoben werden, um die Speicherausnutzung wieder anzugleichen. In Implementierungen, in denen ein Speicherverwalter oder ein Aggregationsanbieter ein Zwischenglied zwischen Clients und Speicheranbietern ist, kann der Aggregationsanbieter Anforderungen zum Herunterlagen derartiger Dateien von einem Speicheranbieter und zum Hochladen dieser Dateien zu einem weiteren Anbieter direkt ausgeben. In weiteren Implementierungen, in denen die gesamte Kommunikation mit den Anbietern durch Client-Einrichtungen ausgeführt wird, kann der Aggregationsanbieter Befehle oder Instruktionen an die Client-Einrichtung senden, um Dateien von einem überwachten Ordner zu einem weiteren verschieben, wodurch Drittanbieter-Synchronisierungsanwendungen veranlasst werden, eine Synchronisierung mit einem Anbieter und das Löschen aus einem weiteren Anbieter zu initiieren.
-
In einer ähnlichen Implementierung, die in 4C gezeigt ist, kann die Speicherauslastung gemäß Prozentsatz anstelle einer Größe angeglichen werden. Dies kann besonders zweckdienlich sein, wenn die Speicherzuteilungen 400A-400C sehr unterschiedlich sind, um damit ein vorzeitiges Überladen von Konten mit kleinerer Zuteilung zu verhindern.
-
In einer weiteren Implementierung, die in 4D dargestellt ist, kann ein Synchronisierungsclient oder ein Aggregationsanbieter Dateien verteilen, um sicherzustellen, dass ein größter zusammenhängender leerer Block 404 in einem einzigen Speicheranbieter 110 innerhalb des aggregierten Speichers vorhanden ist. Beispielsweise können einige Benutzer sehr große Dateien erzeugen, etwa wenn ein Video mit hoher Auflösung aufgezeichnet wird. Anstelle die Auslastung von Konten anzugleichen, derart, dass von drei Konten 1 GB frei sind, kann es beispielsweise bevorzugt sein, Dateien derart zu übertragen, dass ein Konto einen freien Platz von 3 GB hat. In einer derartigen Implementierung kann ein Aggregationsanbieter oder ein Synchronisierungsclient die Option wählen, neue Dateien zu einem Cloud-Speicheranbieter zu übertragen, der einen kleinsten Anteil an freiem Speicher hat, der aber ausreichend groß ist, um die Datei zu speichern. Daher wird in derartigen Implementierungen die Speicherzuteilung in einem Anbieter aufgefüllt, bevor zu dem nächsten Anbieter weitergegangen wird, wodurch ein größter zusammenhängender Block frei bleibt. In einigen Implementierungen können beim Löschen von Dateien aus dem Speicher andere Dateien zwischen Anbietern verschoben werden, so dass der größte zusammenhängende leere Block 404 nach Bedarf beibehalten wird.
-
In einer weiteren Implementierung, die in 4E gezeigt ist, können Dateien unterschiedlichen Typs 404A-404C auf unterschiedliche Cloud-Speicheranbieter 110A-110C verteilt werden. Dies kann in Reaktion auf Speicherregeln erfolgen, die dem Anbieter zugeordnet sind, etwa dass ein Anbieter unbegrenzten Speicher für Fotos (beispielsweise Speicher für Fotos wird nicht auf die Speicherzuteilung 400 in dem Anbieter aufgerechnet) anbietet. In derartigen Fällen kann der Speicher maximiert werden, indem alle Dateien des entsprechenden Typs an den Speicheranbieter gesendet werden.
-
In einer ähnlichen Implementierung bieten unterschiedliche Speicheranbieter eine verbesserte Verarbeitung für gewisse Arten von Dateien. Beispielsweise können einige Cloud-Speicheranbieter Musikdateien, die zur Speicherung synchronisiert sind, erkennen und die Dateien durch Versionen mit höherer Bitrate des gleichen Liedes ersetzen. In ähnlicher Weise können Cloud-Speicheranbieter eine Gesichtserkennung oder eine Geo-Markierung an hochgeladenen Fotos ausführen. Dateien der entsprechenden Art können zu dem Cloud-Speicheranbieter gesendet werden, um die verbesserte Verarbeitung auszunutzen.
-
In einer weiteren Implementierung, die in 4F gezeigt ist, können jüngst benutzte Dateien 406A-406C über mehrere Speicheranbieter hinweg in einer umlaufenden Weise verteilt werden, um die Zugriffsgeschwindigkeit zu erhöhen. Wenn beispielsweise Dateien in einem Client-Gerät gelöscht oder beschädigt werden, kann ein Benutzer Kopien der Dateien aus den Cloud-Speicheranbietern abrufen, um seine Arbeit wiederherzustellen. Die jüngsten erzeugten oder modifizierten Dateien können äußerst relevant für den Benutzer sein, da sie die aktuelle Arbeit, jüngst gesendete oder empfangene E-Mails, jüngst aufgenommen Bilder, und dergleichen repräsentieren. Durch die Verteilung dieser Dateien auf die Speicheranbieter können sie parallel angefordert werden, wobei die Hochladebandbreite jedes Anbieters ausgenutzt wird und die Zeit minimiert wird, die zur Wiederherstellung dieser Dateien benötigt wird.
-
In einigen Implementierungen können Dateien zur besseren Verfügbarkeit auf mehrere Cloud-Speicheranbieter verteilt werden, wenn ein Anbieter ausfällt oder abgeschaltet ist. Der Synchronisierungsclient oder der Aggregationsanbieter kann derartige Dateien nur einmal zählen, wenn eine Gesamtmenge des genutzten Speichers ermittelt wird, wodurch dem Client-Gerät gezeigt wird, dass er weitere Dateien speichern kann, allerdings mit Verlust einer gewissen Zuverlässigkeit. Wenn beispielsweise drei Anbieter und eine 100MB-Datei angenommen wird, dann kann der Synchronisierungsclient anweisen, dass die Datei in jedem Anbieter gesichert wird, wodurch 300MB an Speicherplatz genutzt werden. Jedoch berichtet der Client-Gerät lediglich 100MB an genutztem Speicherplatz an den Benutzer, wodurch angezeigt wird, dass weitere Dateien in dem gleichen Speicherplatz gespeichert werden können. Wenn der Benutzer anschließend weitere Dateien erzeugt, die die Speicherzuteilung überschreiten würden, kann eine oder können beide zusätzlichen Kopien der 100MB-Datei aus dem Speicher in dem Cloud-Anbieter gelöscht werden, wodurch Platz für die zusätzlichen Dateien geschaffen wird. Auf diese Weise kann das System zusätzliche Zuverlässigkeit bei Verfügbarkeit von Speicherplatz in transparenter Weise für den Benutzer schaffen. In einer ähnlichen Implementierung können anstelle der Sicherung der gesamten Datei Fehlerkorrekturdaten in weiteren Cloud-Anbietern gesichert werden, wodurch eine Wiederherstellung einer Datei unter Verwendung von weniger Speicherplatz allerdings auf Kosten einer längeren Verarbeitungszeit ermöglicht wird.
-
In einer weiteren Implementierung können während einer Synchronisierung einer Datei zur Sicherung in der Client-Einrichtung Fragmente oder Segmente der Datei, die in den mehreren Anbietern gesichert worden sind, aus den Anbietern parallel angefordert werden. Beispielsweise kann der Synchronisierungsclient ein erstes Fragment aus einem ersten Anbieter, ein zweites Fragment aus einem zweiten Anbieter und ein drittes Fragment aus einem dritten Anbieter anfordern, wobei möglicherweise mehr Hochladebandbreite aus den Anbietern genutzt und die Zeit zum Erhalten der gesamten Datei verringert wird.
-
5A ist ein Flussdiagramm einer Implementierung eines Verfahrens 500A für Cloud-Speicheraggregation und Verwaltung. Obwohl Schritte gezeigt sind, die zwischen einer Client-Einrichtung 200 und einem Aggregationsanbieter 204 aufgeteilt sind, werden in einigen Implementierungen ein oder mehrere Schritte von der anderen Einrichtung ausgeführt. Beispielsweise wird eine Berechnung einer Speicherauslastung in den Schritten 510A-512, die nachfolgend detaillierter erläutert ist, von der Client-Einrichtung ausgeführt, und in einigen Implementierungen kann das Ergebnis im Schritt 506 dem Aggregationsanbieter mitgeteilt werden. In ähnlicher Weise kann die Kontenauswahl in den Schritt 514-520 in einigen Implementierungen von dem Synchronisierungsclient in der Client-Einrichtung ausgeführt werden.
-
Es sei weiterhin auf 5A und speziell auf den Schritt 502 verwiesen. In einigen Implementierungen kann eine Client-Einrichtung oder eine Dateiüberwachungseinheit, die von der Client-Einrichtung ausgeführt wird, die Dateiaktivität überwachen. Wie zuvor erläutert ist, kann die Dateiüberwachungseinheit regelmäßig den Inhalt eines Ordners im Hinblick auf Änderungen in Bezug auf eine vorhergehende Zeit absuchen, oder sie kann Dateilese- oder Schreibbefehle aus einem Betriebssystem überwachen oder abfangen. In einigen Implementierungen kann die Dateiüberwachungseinheit zugewiesene Ordner (beispielsweise diejenigen, die Cloud-Speicheranbietern entsprechen, etwa überwachte Ordner, oder diejenigen, die gewissen Anwendungen oder Dateiarten, etwa Bildordner, entsprechen) überwachen. In weiteren Implementierungen kann die Dateiüberwachungseinheit alle Dateilese- und Schreibaktivitäten des Betriebssystems von Anwendungen überwachen. Im Schritt 504 kann daher, wenn keine neuen oder modifizierten Dateien vorhanden sind, die Dateiüberwachungseinheit die Schritte 502-504 regelmäßig oder kontinuierlich wiederholen.
-
Im Schritt 506 kann in einigen Implementierungen in Reaktion auf das Erkennen einer neuen oder modifizierten Datei für die Synchronisierung ein Synchronisierungsclient in der Client-Einrichtung 200 Meta-Daten der Datei an einen Aggregationsanbieter 204 senden. In einigen Implementierungen können die gesendeten Meta-Daten eine Identifizierung bzw. Kennzeichnung eines Dateityps und einer Größe beinhalten, enthält aber gegebenenfalls keine weiteren Informationen über die Datei, um den Datenschutz für den Benutzer zu bewahren. In weiteren Implementierungen, in denen etwa eine Datei an einen Cloud-Speicheranbieter für die weitere Verarbeitung zu übermitteln ist, können die übermittelten Meta-Daten weitere Information enthalten. Die Übertragung der Meta-Daten zu dem Aggregationsanbieter kann ferner eine Übertragung einer Gerätekennung, einer Benutzerkennung, einer Kontenkennung oder anderer derartiger Daten beinhalten und kann eine Handschlag- oder Authentifizierungsprozedur beinhalten.
-
Im Schritt 508 kann in einigen Implementierungen der Aggregationsanbieter Meta-Daten erhalten. Im Schritt 501A kann der Aggregationsanbieter einen Speicherfüllstand eines Kontos, das dem Gerät oder dem Benutzer in einem ersten Cloud-Speicheranbieter zugeordnet ist, ermitteln. In einigen Implementierungen kann der Aggregationsanbieter eine Anforderung an den Cloud-Speicheranbieter in Bezug auf eine Ermittlung der Speicherauslastung senden, wobei die Anforderung eine Kontokennung enthält, die der Client-Einrichtung zugeordnet ist. In weiteren Implementierungen kann der Aggregationsanbieter und/oder der Synchronisierungsclient die Speicherauslastung auf der Grundlage einer Gesamtheit an synchronisierten Dateien ermitteln (Minus möglicher nicht zu zählender Dateien, etwa jene, für die der Cloud-Speicheranbieter unbegrenzten Speicher bereitstellt). Die Speicherauslastung und/oder die Größe synchronisierter Dateien können in einer Datenbank in dem Client-Gerät und/oder in dem Aggregationsanbieter gespeichert sein. Im Schritt 512 kann der Aggregationsanbieter 204 ermitteln, ob weitere Konten für die Client-Einrichtung bestehen. Wenn dies der Fall ist, können die Schritt 510A-512 iterativ für jedes Konto wiederholt werden.
-
Im Schritt 514A kann der Synchronisierungsclient oder Aggregationsanbieter ermitteln, ob ein Konto in dem Cloud-Speicheranbieter eine Speicherauslastung der Cloud-Speicheranbietern hat, die kleiner ist als eine mittlere Speicherauslastung von Konten, die dem Gerät zugeordnet sind. Wenn dies der Fall ist, kann im Schritt 516A der Synchronisierungsclient oder Aggregationsanbieter das entsprechende Konto auswählen. In einigen Implementierungen kann der Synchronisierungsclient oder der Aggregationsanbieter das Konto mit der geringsten Speicherauslastung auswählen, wenn mehrere Konten gleiche Auslastungen haben, die kleiner als der Durchschnitt sind. In weiteren Implementierungen kann der Synchronisierungsclient oder der Aggregationsanbieter aus den mehreren Konten eine zufällige Auswahl treffen. In einer weiteren Implementierung kann der Schritt 514A übersprungen werden, und das Konto mit der geringsten Speicherauslastung kann im Schritt 516A ausgewählt werden. Wenn alle Kontenauslastungen entsprechend dem Mittelwert haben oder ausgeglichen sind, kann im Schritt 518A der Synchronisierungsclient oder der Aggregationsanbieter ein Konto in zufälliger Weise auswählen.
-
In einigen Implementierungen kann im Schritt 520 der Synchronisierungsclient oder der Aggregationsanbieter Meta-Daten und eine Kennung des Kontos, das der Client-Einrichtung zugeordnet ist, in dem ausgewählten Speicheranbieter in einer lokalen Datenbank speichern. Die Kennung kann eine Kennung des Speicheranbieters, eine IP-Adresse oder URL des Speicheranbieters, eine Adresse der zu speichernden Datei oder andere derartige Information umfassen.
-
Im Schritt 522 kann in einigen Implementierungen der Aggregationsanbieter die Kennung des Kontos, das der Client-Einrichtung in dem ausgewählten Speicheranbieter zugeordnet ist, an die Client-Einrichtung übertragen. Die Übertragung kann als eine Antwort auf eine Anforderung des Clients erfolgen, die im Schritt 506 gesendet wurde, oder kann ohne explizites Anforderungs-Antwort-Format übermittelt werden. Im Schritt 524 kann in einigen Implementierungen die Client-Einrichtung die Kontokennung empfangen.
-
In einigen Implementierungen, in denen Anbieteranwendungen spezielle Ordner überwachen, kann im Schritt 526 die Datei in den Ordner kopiert werden, der dem ausgewählten Cloud-Speicheranbieter entspricht. Im Schritt 528 kann in einigen Implementierungen der Synchronisierungsclient einen Schatteneintrag in einem aggregierten Ordner, etwa ein Kürzel oder eine symbolische Verbindung zu der ursprünglichen Datei erzeugen, kann eine symbolische Verbindung in einem überwachten Ordner zu der Datei in einem aggregierten Ordner erzeugen; oder kann einen Eintrag einer Datenbank oder einer Tabelle hinzufügen, die die Datei für die Darstellung in einer Benutzerschnittstelle kennzeichnet. Im Schritt 530 kann die Datei an den ausgewählten Cloud-Speicheranbieter gesendet werden.
-
5B ist ein Flussdiagramm einer weiteren Implementierung eines Verfahrens 500B zur Cloud-Speicheraggregation und Verwaltung mit Dateiverteilungsregeln, die ausgelegt sind, eine größte Menge an zusammenhängendem, freien Speicherplatz zu bewahren. Das Verfahren 500B ist in vielen Schritten ähnlich zu dem Verfahren 500A. Jedoch kann in Implementierungen des Verfahrens 500B im Schritt 510B der Aggregationsanbieter oder Synchronisierungsclient eine Größe eines freien Speicherplatzes ermitteln, der für jedes dem Gerät zugeordneten Konto in einem Cloud-Speicheranbieter verbleibt. Im Schritt 514B kann der Aggregationsanbieter oder Synchronisierungsclient ein Konto mit dem wenigsten freien Speicherplatz, der verbleibt, auswählen. Im Schritt 516B ermittelt der Aggregationsanbieter oder der Synchronisierungsclient, ob die Menge an freiem Platz größer ist als die Größe der zu synchronisierenden Datei. Wenn nicht, dann können die Schritte 514B-516B für ein nächstes Konto in der Reihenfolge des freien Speicherplatzes von dem wenigstens Platz bis zum meisten Platz wiederholt werden. Sobald ein Konto erkannt ist, das einen freien Speicherplatz hat, der die Größe der synchronisierenden Datei übersteigt, wird im Schritt 518B das Konto ausgewählt. Es können Meta-Daten der Datei und die Kontokennung im Schritt 520 gespeichert werden, und das Verfahren kann weitergehen wie im Verfahren 500A. Daher kann in Implementierungen unter Anwendung des Verfahrens 500B der Aggregationsanbieter oder der Synchronisierungsclient Dateien auf Konten verteilen, die den wenigsten verfügbaren Speicherplatz haben, wodurch sichergestellt ist, dass ein Konto mit einem größten zusammenhängenden Block an freiem Speicherplatz nur für Dateien verwendet wird, die größer sind, um anderswo gespeichert zu werden.
-
5C ist ein weiteres Flussdiagramm einer Implementierung eines Verfahrens 500C zur Cloud-Speicheraggregation und Verwaltung ähnlich zu den Verfahren 500A und 500B, wobei eine Dateiverteilung auf der Grundlage des Dateityps erfolgt. Im Schritt 510C ermittelt der Aggregationsanbieter oder der Synchronisierungsclient, ob ein Typ einer Datei, der in Meta-Daten der Datei gekennzeichnet ist, die im Schritt 508 empfangen wurden, mit einer Regel für ein Konto eines Speicheranbieters übereinstimmt. Wie zuvor erläutert ist, können derartige Regeln unbegrenzte Speicher für einen Dateityp, etwa Fotos, oder automatische Ersetzung von Musikdateien durch Versionen mit höherer Bitrate umfassen. Wenn der Typ der Datei mit einer Regel für den Anbieter übereinstimmt, dann wird im Schritt 514C ein entsprechendes Konto, das dem Gerät oder dem Benutzer zugewiesen wird, in dem Cloud-Speicheranbieter ausgewählt. Wenn nicht, werden die Schritt 512 und 510C für weitere Speicheranbieter mit Konten wiederholt, die dem Gerät zugeordnet sind. Wenn kein Konto passt, dann kann im Schritt 516C in einigen Implementierungen ein Konto zur Speicherung der Datei zufällig aus der Gruppe möglicher Konten ausgewählt werden, die dem Gerät zugeordnet sind. In einigen weiteren Implementierungen kann der Dateityp der Datei gespeichert werden, wie er dem Konto zugeordnet ist. Dies kann so erfolgen, dass künftige Dateien des gleichen Typs auf den gleichen Speicheranbieter verteilt werden, so dass derartige Dateien zusammen gespeichert werden. In weiteren Implementierungen kann der Schritt 518C übersprungen werden. In ähnlicher Weise können in einigen Implementierungen andere Regeln angewendet werden, um ein Konto bei 516C auszuwählen. Beispielsweise werden in einigen Implementierungen Regeln aus den Verfahren 500A oder 500B im Schritt 516C angewendet, wenn der Dateityp der Dateien nicht mit einer Speicheranbieterregel übereinstimmt. Das Verfahren 500C kann im Weiteren die Schritt 520-530 ähnlich zu jenen beinhalten, die zuvor in Verbindung mit dem Verfahren 500A erläutert sind.
-
5D ist ein Flussdiagramm einer weiteren Implementierung eines Verfahrens 500D zur Cloud-Speicheraggregation und Verwaltung ähnlich zu den Verfahren 500A-500C, wobei eine umlaufende Dateiverteilung erfolgt. Im Schritt 510D wird in einigen Implementierungen ein Konto aus mehreren Konten, die dem Gerät zugeordnet sind, von entsprechenden mehreren Speicheranbietern durch den Aggregationsanbieter oder dem Synchronisierungsclient zur Speicherung einer Datei zur Synchronisierung oder zur Sicherung ausgewählt. Kennungen der Konten können in einem Index, einer Tabelle oder einem Array gespeichert werden, und ein Zeiger oder ein Zähler, der dem Index zugeordnet ist, kann so unterhalten werden, dass er anzeigt, welches Konto gewählt werden sollte. Nach der Auswahl des Kontos kann der Zeiger oder der Zähler im Schritt 514D erhöht werden, so dass in einem nachfolgenden Durchlauf des Verfahrens 500D das nächste Konto ausgewählt werden kann. Das Verfahren kann mit den Schritt 520-530 weitergehen, wie dies zuvor erläutert ist.
-
5E ist ein Flussdiagramm einer Implementierung eines Verfahrens 500 zur Cloud-Speicheraggregation und Verwaltung, wobei Meta-Daten und Aggregationsinformation in einem Aggregationsanbieter 204 gespeichert werden. Im Schritt 552 kann eine Client-Einrichtung 200 eine Anforderung bezüglich eines Dateizugriffs an den Aggregationsanbieter absetzen. Die Anforderung kann bezüglich eines Abrufens, eines Ersetzens oder eines Löschens einer zuvor synchronisierten oder gesicherten Datei ausgegeben werden. Die Anforderung kann Meta-Daten der Datei aufweisen, etwa ein kryptographisches Prüfsummenergebnis oder einen Namen der Datei. Die Anforderung kann ferner eine Geräte-, Benutzer- oder Kontenkennung oder andere Authentifizierungsinformation enthalten.
-
Im Schritt 554 kann der Aggregationsanbieter die Dateizugriffsanforderung empfangen. Wie zuvor erläutert ist, kann in einigen Implementierungen das Empfangen der Anforderung die Ausführung einer Handschlag- oder Authentifizierungsprozedur umfassen, um die Identität der Recheneinrichtung und/oder des Benutzers zu verifizieren.
-
Im Schritt 556 empfängt der Aggregationsanbieter aus einer lokalen Datenbank eine Identifizierung eines Speicheranbieters und/oder einer Adresse, an der die Datei gespeichert ist. Im Schritt 558 sendet der Aggregationsanbieter die Identifizierung und/oder die Adresse an die Client-Einrichtung. Im Schritt 560 empfängt die Client-Einrichtung die Identifizierung und im Schritt 562 sendet sie eine Dateizugriffsanforderung an den identifizierten Speicheranbieter oder an die Adresse. Die Dateizugriffsanforderung kann über eine API, die dem Speicheranbieter zugeordnet ist, erfolgen, oder kann eine oder mehrere Befehle zum Zugreifen oder zum Verarbeiten der Datei enthalten.
-
In weiteren Implementierungen kann der Dateizugriff durch den Synchronisierungsclient in dem Gerät ausgeführt werden. Beispielsweise kann in Implementierungen, in denen Dateien als symbolische Verbindungen in einem aggregierten Ordner oder in überwachten Ordnern gespeichert werden, ein Benutzer eine Datei aus dem aggregierten Ordner löschen. Dies kann die Löschung der entsprechenden Datei oder der symbolischen Verbindung in einem überwachten Ordner hervorrufen. Eine Anwendung, die zu dem Speicheranbieter gehört, kann das Löschen der Datei erkennen und kann eine Anforderung an den Cloud-Speicheranbieter senden, um die entsprechende gesicherte oder synchronisierte Kopie der Datei in dem Cloud-Speicheranbieter zu löschen.
-
5F ist ein Flussdiagramm einer Implementierung eines Verfahrens 570 zur Verwaltung des aggregierten Cloud-Speichers mit einer Neuangleichung von Speicherfüllständen. Obwohl das Verfahren mit mehreren Schritten gezeigt ist, die von einem Aggregationsanbieter ausgeführt werden, kann in vielen Implementierungen das Verfahren auch durch einen Synchronisierungsclient in einem Client-Gerät ausgeführt werden.
-
Im Schritt 572 überwacht der Synchronisierungsclient oder der Aggregationsanbieter eine Speicherauslastung in jedem Konto des Geräts in mehreren Cloud-Speicheranbietern. Die Überwachung der Speicherauslastung kann die Ermittlung eines Gesamtbetrags, der in jedem von mehreren überwachten Ordnern in dem Client-Gerät gespeichert ist, das Senden einer Anforderung an jeden Cloud-Speicheranbieter bezüglich eines aktuellen Speicherfüllstands oder Status oder eine sonstige Verifizierung der Speichermengen beinhalten.
-
Im Schritt 574 ermittelt der Synchronisierungsclient oder der Aggregationsanbieter, ob die Speicherauslastung eines Kontos eines ersten Speicheranbieters über einer Schwelle (beispielsweise festgelegte Menge, Prozentsatz und dergleichen) liegt. Wenn nicht, können die Schritte 572-574 regelmäßig wiederholt werden. Wenn die Speicherauslastung des Kontos über der Schwelle liegt, dann kann im Schritt 575 in gewissen Implementierungen der Synchronisierungsclient oder der Aggregationsanbieter ein Konto in einem zweiten Speicheranbieter mit einer Speicherauslastung ermitteln, das unter der Schwelle liegt. Wenn mehrere Konten eine Speicherauslastung haben, die geringer als die Schwelle ist, dann wählt in einigen Implementierungen der Synchronisierungsclient oder der Aggregationsanbieter ein Konto zufällig aus. In weiteren Implementierungen kann der Synchronisierungsclient oder der Aggregationsanbieter ein Konto mit dem wenigsten freien Speicherplatz auswählen, um das Bewahren eines größten zusammenhängenden Speicherplatzes zu gewährleisten.
-
Im Schritt 578 wählt der Synchronisierungsclient oder der Aggregationsanbieter eine oder mehrere Dateien für das Übertragen von dem ersten Speicheranbieter zu dem zweiten Speicheranbieter aus. Der Synchronisierungsclient oder der Aggregationsanbieter kann beliebige Kriterien verwenden, um die eine oder die mehreren Dateien auszuwählen, einschließlich der Größe (beispielsweise kleinste Dateien oder größte Dateien), Zeit der Benutzung (beispielsweise die jüngst verwendete oder die am längsten nicht verwendete), den Dateityp oder andere Kriterien. Beispielsweise wählt in einigen Implementierungen der Synchronisierungsclient oder der Aggregationsanbieter eine oder mehrere Dateien mit einer Größe gleich der Menge aus, um die die Speicherauslastung des Kontos in dem ersten Anbieter die Schwelle übersteigt. In weiteren Implementierungen wählt der Synchronisierungsclient oder der Aggregationsanbieter weitere Dateien aus, um die Auslastung nach der Übertragung der Dateien nahezu unter der Schwelle zu halten.
-
Im Schritt 580 ruft in einigen Implementierungen der Aggregationsanbieter die Kontokennungen oder Adressen von Konten ab, die dem ersten und dem zweiten Cloud-Speicheranbieter zugeordnet sind. Im Schritt 582 sendet der Aggregationsanbieter die Kontenkennungen und Datei-Meta-Daten der ausgewählten Dateien an das Client-Gerät. Im Schritt 584 empfängt das Client-Gerät die Kontenkennungen und die Datei-Meta-Daten. In weiteren Implementierungen, in denen das Verfahren durch einen Synchronisierungsclient ausgeführt wird, können die Schritte580-584 übersprungen werden.
-
Im Schritt 586 kann in einigen Implementierungen, in denen die Dateien nicht lokal gespeichert sind, der Synchronisierungsclient eine Anforderung an den ersten Cloud-Anbieter bezüglich der identifizierten Dateien senden. Beispielsweise können in vielen Implementierungen Dateien in einem Cloud-Speicherdienst gesichert werden, aber sie werden nicht mit dem Client-Gerät synchronisiert, um die Speicherauslastung in dem Client-Gerät (insbesondere für Sicherungen oder nicht häufig abgerufene Dateien) zu reduzieren. In derartigen Implementierungen kann das Client-Gerät zunächst die Dateien aus dem Cloud-Anbieter abrufen, wobei die Dateien im Schritt 588 erhalten werden. In weiteren Implementierungen, in denen die Dateien lokal in dem Client-Gerät gespeichert werden, können die Schritte 586-588 übergangen werden.
-
Im Schritt 590 kann der Synchronisierungsclient die Dateien aus dem Speicher, der zu dem ersten Speicheranbieter gehört, zu dem Speicher verschieben, der zu dem zweiten Anbieter gehört. In einigen Implementierungen kann dies das Verschieben der Dateien von einem ersten überwachten Ordner zu einem zweiten überwachten Ordner umfassen. In weiteren Implementierungen kann dies eine Änderung einer Kennung in einer Synchronisierungsdatenbank und einer Zuordnung der Datei von dem ersten Speicheranbieter zu einer Zuordnung der Datei zu dem zweiten Speicheranbieter beinhalten.
-
In Reaktion auf das Verschieben der Dateien sendet im Schritt 592 das Client-Gerät die Dateien an den zweiten Speicheranbieter. Wie zuvor erläutert ist, kann dies durch das synchronisierte Client-Gerät oder durch eine Anwendung des zweiten Speicheranbieters in Reaktion darauf erfolgen, dass erkannt wird, dass die Dateien in den überwachten Ordner verschoben wurden, der dem zweiten Speicheranbieter zugeordnet ist. In ähnlicher Weise kann im Schritt 592 das Client-Gerät eine Anforderung zum Löschen der Dateien aus dem ersten Speicheranbieter senden. Diese Anforderung kann in ähnlicher Weise durch den Synchronisierungsclient oder durch eine Anwendung des ersten Speicheranbieters in Reaktion darauf erzeugt werden, dass das Entfernen der Dateien aus dem überwachten Ordner, der zu dem ersten Speicheranbieter gehört, erkannt wird.
-
Folglich richtet sich in einem Aspekt die vorliegende Offenbarung an ein Verfahren zur Aggregation mehrerer Cloud-Speicherorte. Das Verfahren umfasst das Empfangen, durch einen Speicherverwalter aus einem Client-Gerät, von Meta-Daten einer in dem Client-Gerät gespeicherten Datei, die zur Synchronisierung vorgesehen ist. Das Verfahren umfasst ferner das Auswählen durch den Speicherverwalter, eines dem Client-Gerät zugeordneten Kontos in einem ersten Cloud-Speicheranbieter aus mehreren Cloud-Speicheranbietern. Das Verfahren umfasst ferner ein Speichern, durch den Speicherverwalter, der Meta-Daten der Datei und einer Identifizierung des ausgewählten Kontos in einer Speichereinrichtung, die zu dem Speicherverwalter gehört. Das Verfahren umfasst ferner das Senden, durch den Speicherverwalter an das Client-Gerät, der Identifizierung des ausgewählten Kontos, wobei Empfang der Identifizierung bewirkt, dass das Client-Gerät die Datei an den ersten Cloud-Speicheranbieter sendet. Das Verfahren umfasst ferner das nachfolgende Empfangen, durch den Speicherverwalter aus dem Client-Gerät, einer Anforderung bezüglich der Datei. Das Verfahren umfasst ferner das Abrufen, durch den Speicherverwalter, der Meta-Daten der in der Speichereinrichtung gespeicherten Datei und der Identifizierung des ausgewählten Kontos in Reaktion auf den Empfang der Anforderung; und das Senden, durch den Speicherverwalter an das Client-Gerät, der Identifizierung des ausgewählten Kontos und der Meta-Daten der Datei, wobei der Empfang der Identifizierung und der Meta-Daten bewirkt, dass das Client-Gerät eine Anforderung bezüglich der Datei an den ersten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen umfassen die Meta-Daten der Datei einen Verzeichnispfad für die Datei in einer Speichereinrichtung des Client-Geräts, und der Empfang der Identifizierung des ausgewählten Kontos bewirkt ferner, dass das Client-Gerät den Verzeichnispfad für die Datei gemäß einer Regel modifiziert, die mit dem ersten Cloud-Speicheranbieter im Zusammenhang steht. In einer weiteren Implementierung bewirkt der Empfang der Identifizierung des ausgewählten Kontos ferner, dass das Client-Gerät die Datei aus einem ersten Verzeichnis in ein zweites Verzeichnis, das zu dem ersten Cloud-Speicheranbieter gehört, kopiert.
-
In einigen Implementierungen umfasst das Auswählen des dem Client-Gerät zugeordneten Kontos in einem ersten Cloud-Speicheranbieter ferner: Vergleichen eines Speicherfüllstands von Konten, die dem Client-Gerät zugeordnet sind, in jedem der mehreren Cloud-Speicheranbieter. In weiteren Implementierungen umfasst das Verfahren das Auswählen des Kontos, das dem Client-Gerät zugeordnet ist, in dem ersten Cloud-Speicheranbieter in Reaktion darauf, dass ein Speicherfüllstand des Kontos, das dem Client-Gerät zugeordnet ist, in dem ersten Cloud-Speicheranbieter unter einem mittleren Speicherfüllstand der dem Client-Gerät zugeordneten Konten in jeden der mehreren Cloud-Speicheranbieter ist. In einer weiteren Implementierung umfasst das Verfahren das Auswählen des dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicheranbieter in Reaktion darauf, dass ermittelt wird, dass ein dem Client-Gerät zugeordnetes Konto in einem zweiten Cloud-Speicheranbieter einen größeren freien Speicherplatz als das im Client-Gerät zugeordnete Konto in dem ersten Cloud-Speicheranbieter hat.
-
In einigen Implementierungen des Verfahrens umfasst das Senden der Identifizierung des ausgewählten Kontos und der Meta-Daten der Datei ferner: Senden eines Befehls zum Initiieren eines Abrufens der Datei aus dem ersten Cloud-Speicheranbieter. In weiteren Implementierungen umfasst das Verfahren das Ermitteln, durch den Speicherverwalter, dass eine Speicherauslastung des dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicheranbieter eine Schwelle übersteigt, das Ermitteln durch den Speicherverwalter eines zweiten Cloud-Speicheranbieters aus den mehreren Cloud-Speicheranbietern mit einem dem Client-Gerät zugeordneten Konto mit einer Speicherauslastung unterhalb der Schwelle. Das Verfahren umfasst ferner in der Reaktion auf das Ermitteln ein Senden, durch den Speicherverwalter an das Client-Gerät, der Identifizierung des Kontos in dem ersten Cloud-Speicheranbieter und der Meta-Daten mindestens einer in dem ersten Cloud-Speicheranbieter gespeicherten Datei, wobei der Empfang der Identifizierung des Kontos in dem ersten Cloud-Speicheranbieter und der Meta-Daten der mindestens einen Datei bewirkt, dass das Client-Gerät die mindestens eine Datei aus dem ersten Cloud-Speicheranbieter abruft; und Senden, durch den Speicherverwalter an das Client-Gerät, einer Identifizierung des Kontos in dem zweiten Cloud-Speicheranbieter und von Meta-Daten der mindestens einen Datei, wobei der Empfang der Identifizierung des Kontos in dem zweiten Cloud-Speicheranbieter und der Meta-Daten der mindestens einen Datei bewirkt, dass das Client-Gerät die mindestens eine Datei an den zweiten Cloud-Speicheranbieter sendet.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein System zur Aggregation mehrerer Cloud-Speicherorte. Das System umfasst einen Server in Verbindung mit einem Client-Gerät bzw. einer Client-Einrichtung, mit einem Prozessor, der einen Speicherverwalter ausführt, und mit einer Meta-Datenspeichereinrichtung. Der Speicherverwalter bzw. die Speicherverwaltungseinheit ist ausgebildet, aus dem Client-Gerät Meta-Daten einer in dem Client-Gerät gespeicherten Datei, die zur Synchronisierung vorgesehen ist, zu empfangen; und ist ausgebildet, ein dem Client-Gerät zugeordnetes Konto in einem ersten Cloud-Speicheranbieter aus mehreren Cloud-Speicheranbietern auszuwählen. Der Speicherverwalter ist ferner ausgebildet, in der Meta-Datenspeichereinrichtung die Meta-Daten der Datei und eine Identifizierung des ausgewählten Kontos zu speichern. Der Speicherverwalter ist ferner ausgebildet, die Identifizierung des ausgewählten Kontos an das Client-Gerät zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die Datei an den ersten Cloud-Speicheranbieter sendet. Der Speicherverwalter ist ferner ausgebildet, nachfolgend aus dem Client-Gerät eine Anforderung bezüglich der Datei zu empfangen; und die Meta-Daten der Datei und die Identifizierung des ausgewählten Kontos aus der Meta-Datenspeichereinrichtung in Reaktion auf den Empfang der Anforderung abzurufen. Der Speicherverwalter ist ferner ausgebildet, die Identifizierung des ausgewählten Kontos und die Meta-Daten der Datei an das Client-Gerät zu senden, wobei der Empfang der Identifizierung und der Meta-Daten bewirkt, dass das Client-Gerät eine Anforderung bezüglich der Datei an den ersten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen umfassen die Meta-Daten der Datei einen Verzeichnispfad für die Datei in einer Speichereinrichtung des Client-Geräts, und der Empfang der Identifizierung des ausgewählten Kontos bewirkt ferner, dass das Client-Gerät den Verzeichnispfad für die Datei entsprechend einer Regel, die zu dem ersten Cloud-Speicheranbieter gehört, modifiziert. In einer weiteren Implementierung bewirkt der Empfang der Identifizierung des ausgewählten Kontos ferner, dass das Client-Gerät die Datei aus einem ersten Verzeichnis in ein zweites Verzeichnis, das dem ersten Cloud-Speicheranbieter zugeordnet ist, kopiert.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, einen Speicherfüllstand von dem Client-Gerät zugeordneten Konten in jedem der mehreren Cloud-Speicheranbieter zu vergleichen. In einer weiteren Implementierung ist der Speicherverwalter ferner ausgebildet, das dem Client-Gerät zugeordnete Konto in dem ersten Cloud-Speicheranbieter auszuwählen in Reaktion darauf, dass ein Speicherfüllstand das dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicheranbieter unterhalb eines mittleren Speicherfüllstands der dem Client-Gerät zugeordneten Konten in jedem der mehreren Cloud-Speicheranbieter ist. In einer weiteren Implementierung ist der Speicherverwalter ferner ausgebildet, das dem Client-Gerät zugeordnete Konto in dem ersten Cloud-Speicheranbieter in Reaktion darauf auszuwählen, dass ermittelt wird, dass ein dem Client-Gerät zugeordnetes Konto in einem zweiten Cloud-Speicheranbieter einen größeren Anteil an freiem Speicherplatz als das dem Client-Gerät zugeordnete Konto in dem ersten Cloud-Speicheranbieter hat.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, einen Befehl an das Client-Gerät zu senden, um das Abrufen der Datei aus dem ersten Cloud-Speicheranbieter zu initiieren. In anderen Implementierungen ist der Speicherverwalter ferner ausgebildet zu ermitteln, dass eine Speicherauslastung des dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicheranbieter eine Schwelle übersteigt. Der Speicherverwalter ist ferner ausgebildet, einen zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter zu ermitteln, der ein dem Client-Gerät zugeordnetes Konto mit einer Speicherauslastung hat, die unter der Schwelle liegt. Der Speicherverwalter ist ferner ausgebildet, in Reaktion auf das Ermitteln an das Client-Gerät die Identifizierung des Kontos des ersten Cloud-Speicherverwalters und Meta-Daten mindestens einer Datei zu senden, die in dem ersten Cloud-Speicheranbieter gespeichert ist, wobei die Identifizierung des Kontos in dem ersten Cloud-Speicheranbieter und der Meta-Daten der mindestens einen Datei bewirkt, dass das Client-Gerät die mindestens eine Datei aus dem ersten Cloud-Speicheranbieter abruft, und durch den Speicherverwalter an das Client-Gerät, eine Identifizierung des Kontos in dem zweiten Cloud-Speicheranbieter und von Meta-Daten der mindestens einen Datei zu senden, wobei der Empfang der Identifizierung des Kontos in dem zweiten Cloud-Speicheranbieter und der Meta-Daten der mindestens einen Datei bewirkt, dass das Client-Gerät die mindestens eine Datei an den zweiten Cloud-Speicheranbieter sendet.
-
In einem noch weiteren Aspekt betrifft die vorliegende Offenbarung ein Verfahren zur Aggregation mehrerer Cloud-Speicherorte. Das Verfahren umfasst ein Senden, durch ein Client-Gerät an einen Speicherverwalter, der von einem Server ausgeführt wird, von Meta-Daten einer Datei, die in dem Client-Gerät gespeichert ist und zur Synchronisierung vorgesehen ist. Das Verfahren umfasst ferner das Empfangen, durch das Client-Gerät von dem Speicherverwalter, einer Identifizierung eines dem Client-Gerät zugeordneten Kontos, in einem ersten Cloud-Speicheranbieter aus mehreren Cloud-Speicheranbietern, wobei das Konto von dem Speicherverwalter ausgewählt wird. Das Verfahren umfasst ferner das Senden der Datei, durch das Client-Gerät, an den ersten Cloud-Speicheranbieter zur Sicherung. Das Verfahren beinhaltet ferner nachfolgend das Senden einer Anforderung bezüglich der Datei von dem Client-Gerät an den Speicherverwalter. Das Verfahren beinhaltet das Empfangen, durch das Client-Gerät von dem Speicherverwalter, der Identifizierung des ausgewählten Kontos und der Meta-Daten der Datei; und das Senden einer Anforderung bezüglich der Datei an den ersten Cloud-Speicheranbieter durch das Client-Gerät, in Reaktion auf den Empfang der Identifizierung und der Meta-Daten.
-
In einigen Implementierungen umfasst das Senden der Meta-Daten der Datei an den Speicherverwalter ferner das Senden eines Verzeichnispfads für die Datei in einer Speichereinrichtung des Client-Geräts an den Speicherverwalter; und das Senden der Datei an den ersten Cloud-Speicheranbieter zur Sicherung umfasst ferner ein Modifizieren des Verzeichnispfades für die Datei, ausgehend von einem ersten Verzeichnis in ein zweites Verzeichnis, das dem ersten Cloud-Speicheranbieter zugeordnet ist. In einer weiteren Implementierung umfasst das Verfahren das Empfangen der Datei, durch das Client-Gerät, von dem ersten Cloud-Speicheranbieter; das Speichern der empfangenen Datei durch das Client-Gerät in dem zweiten Verzeichnis, das dem ersten Cloud-Speicheranbieter zugeordnet ist; und das Modifizieren des Verzeichnispfades für die Datei ausgehend von dem zweiten Verzeichnis in das erste Verzeichnis entsprechend der Meta-Daten der Datei, die aus dem Dateiverwalter empfangen werden.
-
In einigen Implementierungen umfasst das Verfahren das Empfangen, durch das Client-Gerät aus dem Speicherverwalter an das Client-Gerät, die Identifizierung des Kontos in dem ersten Cloud-Speicheranbieter und den Empfang von Meta-Daten mindestens einer Datei, die in dem ersten Cloud-Speicheranbieter gespeichert ist, die von dem Speicherverwalter in Reaktion darauf gesendet wurden, dass ermittelt wird, dass eine Speicherauslastung des dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicherverwalter über einer Schwelle liegt. Das Verfahren umfasst ferner das Abrufen, durch das Client-Gerät, der mindestens einen Datei aus dem ersten Cloud-Speicheranbieter in Reaktion auf den Empfang der Identifizierung des Kontos in dem ersten Cloud-Speicheranbieter und den Empfang der Meta-Daten der mindestens einen Datei. Das Verfahren umfasst ferner das Empfangen, durch das Client-Gerät aus dem Speicherverwalter, von Meta-Daten der mindestens einen Datei und einer Identifizierung eines dem Client-Gerät zugeordneten Kontos in einem zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter, der von dem Speicherverwalter in Reaktion darauf ausgewählt ist, dass er eine Speicherauslastung unterhalb der Schwelle aufweist; und Senden, durch das Client-Gerät an den zweiten Cloud-Speicheranbieter, der mindestens einen Datei zur Sicherung.
-
In noch einem weiteren Aspekt betrifft die vorliegende Offenbarung ein Verfahren zur Aggregation mehrerer Cloud-Speicherorte. Das Verfahren umfasst ein Empfangen, durch einen Speicherverwalter, aus einem Client-Gerät, von Meta-Daten einer ersten Datei, die in dem Client-Gerät gespeichert und für die Synchronisierung vorgesehen ist, wobei die Meta-Daten einen ersten Dateityp kennzeichnen. Das Verfahren umfasst ferner das Ermitteln, durch den Speicherverwalter, einen ersten Cloud-Speicheranbieters aus mehreren Cloud-Speicheranbietern, mit einer erweiterten Speicherregel, die dem ersten Dateityp entspricht. Das Verfahren umfasst ferner das Auswählen, durch den Speicherverwalter, eines dem Client-Gerät zugeordneten Kontos in dem ersten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter. Das Verfahren umfasst ferner das Speichern, durch den Speicherverwalter, der Meta-Daten der Datei und einer Identifizierung des ausgewählten Kontos in einer Speichereinrichtung, die dem Speicherverwalter zugeordnet ist; und Senden, durch den Speicherverwalter an das Client-Gerät, der Identifizierung des ausgewählten Kontos, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die Datei an den ersten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen repräsentiert der erste Dateityp eine Bilddatei. In einigen Implementierungen umfasst das Verfahren das Ermitteln, durch den Speicherverwalter, einer zweiten Datei, die zu dem Client-Gerät gehört und in einem zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter gespeichert ist, wobei die zweite Datei den ersten Dateityp hat; und Übertragen, durch den Speicherverwalter, der zweiten Datei von dem zweiten Cloud-Speicheranbieter zu dem ersten Cloud-Speicheranbieter in Reaktion darauf, dass der erste Cloud-Speicheranbieter die erweiterte Speicherregel, die dem ersten Dateityp entspricht, aufweist. In einer weiteren Implementierung umfasst das Übertragen der zweiten Datei von dem zweiten Cloud-Speicheranbieter zu dem ersten Cloud-Speicheranbieter ferner ein Senden, durch den Speicherverwalter an das Client-Gerät, einer Identifizierung eines Kontos in dem zweiten Cloud-Speicheranbieter, das dem Client-Gerät zugeordnet ist, und von Meta-Daten der zweiten Datei, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Datei aus dem zweiten Cloud-Speicheranbieter abruft; und Senden, durch den Speicherverwalter an das Client-Gerät, der Identifizierung des ausgewählten Kontos in dem ersten Cloud-Speicheranbieter und von Meta-Daten der zweiten Datei, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Datei an den ersten Cloud-Speicheranbieter sendet. In einer weiteren Implementierung beinhaltet das Verfahren das Identifizieren bzw. Ermitteln, durch den Speicherverwalter, dass ein dem Client-Gerät zugeordnetes Konto in dem zweiten Cloud-Speicheranbieter oberhalb einer Datenspeicherschwelle liegt; und wobei Übertragen der zweiten Datei von dem zweiten Cloud-Speicheranbieter zu dem ersten Cloud-Speicheranbieter in Reaktion auf diese Ermittlung ausgeführt wird.
-
In einigen Implementierungen repräsentiert der erste Dateityp eine Audiodatei. In einer weiteren Implementierung umfasst die erweiterte Speicherregel das Ersetzen von Audio-Dateien mit geringer Bitrate durch entsprechende Audio-Dateien mit hoher Bitrate.
-
In einigen Implementierungen beinhaltet das Verfahren das Berechnen, durch den Speicherverwalter, einer aggregierten Menge an Speicherplatz von Konten, die dem Client-Gerät zugeordnet sind, in den mehreren Cloud-Speicheranbietern; Identifizieren, durch den Speicherverwalter, einer ersten Gesamtdatengröße von Dateien des Client-Geräts, die für die Synchronisierung vorgesehen sind; Identifizieren, durch den Speicherverwalter, einer zweiten Gesamtdatengröße von Dateien des Client-Geräts des ersten Dateityps, die für die Synchronisierung vorgesehen sind; und Senden, durch den Speicherverwalter; an das Client-Gerät, einer verfügbaren Speichermenge, einschließlich der aggregierten Menge an Speicherplatz minus einer Differenz zwischen der ersten Gesamtdatengröße und der zweiten Gesamtdatengröße.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein System zur Aggregation mehrerer Cloud-Speicherorte. Das System umfasst einen Server, der mit einem Client-Gerät bzw. einer Client-Einrichtung in Verbindung steht, mit einem Prozessor, der einen Speicherverwalter ausführt, und mit einer Meta-Datenspeichereinrichtung. Der Speicherverwalter ist ausgebildet, aus dem Client-Gerät Meta-Daten einer ersten Datei zu empfangen, die in dem Client-Gerät gespeichert und für die Synchronisierung vorgesehen sind, wobei die Meta-Daten einen ersten Dateityp angeben. Der Speicherverwalter ist ferner ausgebildet, einen ersten Cloud-Speicheranbieter aus mehreren Cloud-Speicheranbietern zu ermitteln, der eine erweiterte Speicherregel, die dem ersten Dateityp entspricht, hat. Der Speicherverwalter ist ferner ausgebildet, ein dem Client-Gerät zugeordnetes Konto in dem ersten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter auszuwählen. Der Speicherverwalter ist ferner ausgebildet, die Meta-Daten der Datei und eine Identifizierung des ausgewählten Kontos in einer Speichereinrichtung zu speichern, die dem Speicherverwalter zugeordnet ist, und an das Client-Gerät die Identifizierung des ausgewählten Kontos zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die Datei an den ersten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen des Systems ist der erste Dateityp eine Bilddatei. In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, eine zweite Datei, die zu dem Client-Gerät gehört und in einem zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter gespeichert ist, zu ermitteln, wobei die zweite Datei den ersten Dateityp repräsentiert; und die zweite Datei aus dem zweiten Cloud-Speicheranbieter zu dem ersten Cloud-Speicheranbieter in Reaktion darauf zu übertragen, dass der erste Cloud-Speicheranbieter die erweiterte Speicherregel, die dem ersten Dateityp entspricht, aufweist. In einer weiteren Implementierung ist der Speicherverwalter ferner ausgebildet zum: Senden, an das Client-Gerät, einer Identifizierung eines Kontos in dem zweiten Cloud-Speicheranbieter, das dem Client-Gerät zugeordnet ist, und von Meta-Daten der zweiten Datei, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Datei aus dem zweiten Cloud-Speicheranbieter abruft; und Senden, an das Client-Gerät, der Identifizierung des ausgewählten Kontos in dem ersten Cloud-Speicheranbieter und von Meta-Daten der zweiten Datei, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Datei an den ersten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet zu erkennen, dass ein dem Client-Gerät zugeordnetes Konto in dem zweiten Cloud-Speicheranbieter über einer Datenspeicherschwelle liegt; und die zweite Datei von dem zweiten Cloud-Speicheranbieter zu dem ersten Cloud-Speicheranbieter in Reaktion auf dieses Erkennen zu übertragen.
-
In einigen Implementierungen des Systems repräsentiert der erste Dateityp eine Audio-Datei. In einer weiteren Implementierung umfasst die erweiterte Speicherregel das Ersetzen von Audio-Dateien mit niedriger Bitrate durch entsprechende Audio-Dateien mit hoher Bitrate. In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, eine aggregierte Menge an Speicherplatz von Konten, die dem Client-Gerät zugeordnet sind, in den mehreren Cloud-Speicheranbietern zu berechnen; eine erste Gesamtdatengröße von Dateien des Client-Geräts, die für die Synchronisierung vorgesehen sind, zu ermitteln; eine zweite Gesamtdatengröße von Dateien des Client-Geräts des ersten Dateityps, die für die Synchronisierung vorgesehen sind, zu ermitteln; und eine verfügbare Speichermenge an das Client-Gerät zu senden, wobei darin die aggregierte Menge an Speicherplatz minus einer Differenz zwischen der ersten Gesamtdatengröße und der zweiten Gesamtdatengröße enthalten ist.
-
Dateifragmentierung für erhöhte Zuverlässigkeit und Sicherheit
-
Die Aggregation eines Drittanbieter-Cloud-Speichers in eine einzige virtuelle Speichereinrichtung kann durch Dateifragmentierung verbessert werden, um erhöhte Zuverlässigkeit und Sicherheit zu bieten. Es sei kurz auf 6A verwiesen; dort ist ein Diagramm einer Implementierung einer Fragmentierung einer Datei dargestellt. Wie gezeigt, kann eine Datei einen Kopf 602 und/oder einen Körper bzw. Rumpf 604 aufweisen. In einigen Implementierungen kann eine Datei ferner einen Fuß aufweisen, während in weiteren Implementierungen, die Datei Rohdaten aufweist und keinen Kopf oder Fuß besitzt. Der Kopf 602 und/oder der Fuß können ergänzende Daten einschließlich Datei-Meta-Daten, Signaturen oder andere derartiger Informationen enthalten.
-
Eine Datei kann in mehrere Fragmente 600A-600N unterteilt werden, die allgemein als Segment oder Segmente, Block oder Blöcke, oder Fragment oder Fragmente 600 bezeichnet werden. In vielen Implementierungen haben die Dateifragmente 600 eine vorbestimmte Größe (beispielsweise 64 kb, 1 Mb, 2 Mb, 5 Mb oder eine andere Größe). Beispielsweise kann während einer Übertragung einer großen Datei zu einem Cloud-Speicheranbieter in Größen fragmentiert werden, die kleiner oder gleich als eine maximale Übertragungseinheit (MTU) sind. Dies kann es ermöglichen, dass die Fragmente ohne weitere IP-Fragmentierung durch den Netzwerkstapel gesendet werden. Die Fragmente müssen nicht alle von gleicher Größe sein - typischerweise kann, nachdem die Dateigröße nicht durch die Fragmentgröße gegebenenfalls teilbar ist, ein letztes Fragment 600N kleiner sein als andere Fragmente.
-
In einigen Implementierungen kann der Kopf der Datei 602 in mehrere Fragmente unterteilt werden. Obwohl eine Unterteilung in zwei Fragmente 602A-602B in gleichmäßiger Weise gezeigt ist, kann in einigen Implementierungen ein Fragment einen Teil des Kopfes 602 und einen Teil des Körpers 604 enthalten. Das Unterteilen des Kopfes in mehrere Fragmente kann dabei helfen, die Daten zu verschleiern, indem verhindert wird, dass ein Cloud-Speicheranbieter in einfacher Weise die vollständigen Meta-Daten der Datei lesen kann.
-
In einer Implementierung können Fragmente oder Blöcke auf mehrere Cloud-Speicheranbieter derart aufgeteilt werden, dass kein Anbieter eine vollständige Kopie einer Datei hält. Wenn daher ein einzelner Dienst geschädigt ist, kann eine schädigend wirkende Partei nicht auf die Daten zugreifen. In einer weiteren Implementierung können Fragmente dupliziert und auf mehrere Anbieter verteilt werden, so dass der Verlust von Kommunikation zu einem Anbieter nicht dazu führt, dass auf die Daten nicht zugegriffen werden kann. Diese Implementierung kann mit Fehlerkorrekturtechniken kombiniert werden, um eine Wiederherstellung selbst bei Verlust mehrerer Anbieter zu ermöglichen. Die Dateisynchronisierung kann jedenfalls schneller in diesen Implementierungen sein, indem Lese- und Schreiboperationen auf mehrere Anbieter aufgeteilt werden.
-
Beispielsweise ist 6B eine Darstellung einer Implementierung zur Verteilung von Dateifragmenten 600A-600N auf mehrere Cloud-Speicherdienste 110A-110C. In einer Implementierung kann ein Synchronisierungsclient eine Datei fragmentieren, die jedes aufeinanderfolgende Fragment zu unterschiedlichen Cloud-Speicheranbietern sendet, beispielsweise 600A zum Anbieter 110A, 600B zum Anbieter 110B, 600C zum Anbieter 110C und dergleichen) in einer umlaufenden oder zufälligen Weise senden. Da jeder Cloud-Speicheranbieter 110 nur einen Teil des Inhalts der Datei und nur nicht-aufeinanderfolgende Fragmente der Datei hat, ist eine schädigend wirkende Partei nicht in der Lage, die Datei zusammenzusetzen oder zu lesen, wenn die Sicherheit des Anbieters verletzt ist und die Daten gestohlen werden.
-
In einer Implementierung kann ein Aggregationsanbieter 204 und/oder ein Synchronisierungsclient eine Meta-Datenzuordnungstabelle 606 unterhalten. Die Zuordnungstabelle 606 kann einen geordneten Index, ein Array, eine Tabelle, eine Datenbank, eine flache Datei oder andere derartige Datenformate zur Speicherung geordneter Identifizierungen von Fragmenten 608 und entsprechender Adressen 610 aufweisen. In einigen Implementierungen kann ein Synchronisierungsclient die Zuordnungstabelle verwenden, um eine Datei zur Synchronisierung in mehrere Fragmente aufzuteilen und jede Untermenge aus Fragmenten, die für einen Cloud-Anbieter gekennzeichnet sind, in eine einzelne Fragment-„Datei“ zu verketten. Beispielsweise kann nach dem Unterteilen einer Datei in Fragmente 600A-600N und nach der Angabe, dass eine Teilmenge von Fragmenten 600A und 600D (und 600G, 600J , etc., nicht dargestellt) zu einem ersten Anbieter 110A zu senden sind, der Synchronisierungsclient die Teilmenge in eine einzige Datei zusammenfügen, die dann in einigen Implementierungen durch einen .frag- oder .part-Erweiterungsausdruck oder eine ähnliche Kennung (oder möglicherweise eine generische Erweiterung oder sogar eine fehlleitende oder verschleiernde Erweiterung, etwa .jpg oder .txt) bezeichnet werden kann. In einigen Implementierungen kann die zusammengefügte Fragmentdatei in einem überwachten Ordner, der dem Anbieter entspricht, ähnlich zu einer anderen Datei gespeichert werden. Eine Clientanwendung des Anbieters oder der Synchronisierungsclient können dann die Datei in dem Anbieter sichern, wobei die gleichen Prozesse wie für jede andere Datei angewendet werden. In weiteren Implementierungen kann jedes Fragment separat zu den Speicheranbietern übertragen werden. Die Zuordnungstabelle 606 kann in einer oder mehreren geeigneten Speichereinrichtungen, etwa Speicheranbietern, Aggregationsanbieter 204 und/oder dem Synchronisierungsclient 606 gespeichert werden, und eine derartige Einrichtung kann allgemein als eine Zuordnungs-Speichereinrichtung, Zuordnungsspeicher, Meta-Datenspeicher oder durch einen anderen ähnlichen Begriff bezeichnet werden.
-
Der Synchronisierungsclient kann in ähnlicher Weise die Zuordnungstabelle 606 verwenden, um die ursprüngliche Datei abzurufen und neu zusammenzusetzen oder zu erzeugen, indem die Fragmente und/oder zusammengefügte Dateien abgerufen werden, wobei bei Bedarf die Dateien in individuelle Fragmente unterteilt werden, und die Dateifragmente neu zusammengesetzt werden, in einer Reihenfolge, die den Fragmentkennungen 608 entspricht.
-
7A ist ein Flussdiagramm einer Implementierung eines Verfahrens 700 zur Verteilung von Dateifragmenten auf mehrere Cloud-Speicherdienste. Die Schritte 702-708 können ähnlich zu den Schritten 502-508 sein, die zuvor in Zusammenhang mit den 5A-5D erläutert sind, und können einen Synchronisierungsclient oder eine Dateiüberwachungseinheit umfassen, die die Schreibaktivität oder den Inhalt eines Ordners überwacht, um neue oder modifizierte Dateien zu erkennen, und es können Meta-Daten der neuen oder modifizierten Datei zu einem Aggregationsanbieter gesendet werden, oder in einigen Implementierungen können diese zu einem Synchronisierungsclient gesendet werden. Obwohl einer oder mehrere der Schritte 708-718 so gezeigt sind, dass Schritte zwischen dem Aggregationsanbieter 204 und dem Client 200 aufgeteilt sind, können in vielen Implementierungen diese Schritte durch einen Synchronisierungsclient in einem Client-Gerät ausgeführt werden.
-
In Schritt 710 kann ein Synchronisierungsclient oder ein Aggregationsanbieter eine Datei in mehrere Fragmente unterteilen. Wie zuvor erläutert ist, kann in vielen Implementierungen eine Datei in Fragmente einer vorbestimmten Größe (wobei ein letztes Fragment verbleibende Bits enthält, und somit wahrscheinlich kleiner ist als die vorbestimmte Größe), etwa eine Größe basierend auf einer MTU, unterteilt werden. Das Aufteilen der Datei in Fragmente umfasst die Ausführung einer logischen Unterteilung der Datei anstatt dass die Datei tatsächlich geteilt wird. Beispielsweise kann in einigen Implementierungen ein Aggregationsanbieter oder ein Synchronisierungsclient eine Datei logisch unterteilen, indem eine Speicheranfangs- und Speicherendadresse für jedes Fragment ermittelt werden, wodurch die Datei in einem zusammenhängenden Gebiet des Speichers intakt bleibt. Die Fragmente können nachfolgend entsprechend der Speicheranfangs- und Endadresse während der Übertragung an Cloud-Speicheranbieter ausgelesen werden.
-
In Schritt 712 wird ein dem Client-Gerät zugeordnetes Konto in einem ersten Cloud-Speicheranbieter durch den Synchronisierungsclient oder den Aggregationsanbieter ausgewählt. In Schritt 714 speichert der Synchronisierungsclient oder Aggregationsanbieter eine Identifizierung eines Fragments und des ausgewählten Kontos. Der Synchronisierungsclient oder Aggregationsanbieter ermittelt, ob weitere Fragmente in der Datei verblieben, wobei dies in Schritt 716 erfolgt. Falls ja, werden die Schritte 712-716 iterativ für jedes Fragment wiederholt, wobei der Synchronisierungsclient oder der Aggregationsanbieter ein nächstes Konto oder einen Speicheranbieter während jedes Durchlaufs auswählt (und wobei zur Auswahl des ersten Speicheranbieters zurückgekehrt wird, nachdem alle Speicheranbieter ausgewählt worden sind, oder nachdem alle Speicheranbieter, die ausreichend Platz zur Speicherung eines oder mehrerer Fragmente haben, ausgewählt worden sind. Wenn keine Fragmente mehr verbleiben, kann in Schritt 718 in einigen Implementierungen ein Aggregationsanbieter die Identifizierungen jedes Fragments und eines entsprechenden Kontos an das Client-Gerät senden, etwa eine Zuordnungstabelle, wie dies zuvor erläutert ist. Das Client-Gerät empfängt die Identifizierungen oder die Tabelle in Schritt 720 und speichert in Schritt 722 die Daten oder erzeugt in derartigen Implementierungen die Tabelleneinträge. In Implementierungen, in denen der Synchronisierungsclient die Datei unterteilt und Konten auswählt, können die Schritte 718-720 übergangen werden.
-
In Schritt 724 unterteilt der Synchronisierungsclient die Datei entsprechend den Fragmentidentifizierungen. In einigen Implementierungen, wie dies zuvor erläutert ist, extrahiert der Synchronisierungsclient jedes Fragment der Datei, das für ein spezielles Konto oder einen Speicheranbieter vorgesehen ist und verkettet die Fragmente in eine einzige Datei. Diese Datei kann in einem überwachten Ordner gespeichert oder an den Cloud-Speicheranbieter zur Sicherung der Fragmente in Schritt 726 übertragen werden. Der Prozess kann iterativ für jede Gruppe aus Fragmenten, die für ein Konto oder einen Speicheranbieter vorgesehen ist, wiederholt werden. In anderen Implementierungen kann jedes Fragment separat an den Cloud-Speicheranbieter gesendet werden. Da beispielsweise jede Datei auf die MTU-Größe während der Übertragung IP-fragmentiert wird, kann es in einigen Implementierungen effizienter sein, jedes Fragment separat zu speichern, ohne die für einen Anbieter vorgesehenen Fragmente zu verketten.
-
7B ist ein Flussdiagramm einer Implementierung eines Verfahrens 750 zum Zugreifen auf fragmentierte Dateien, die über mehrere Cloud-Speicherdienste verteilt sind. Obwohl die Darstellung mit Schritten erfolgt, die von einem Aggregationsanbieter 204 ausgeführt werden, kann in einigen Implementierungen der Prozess durch einen Synchronisierungsclient in einem Client-Gerät durchgeführt werden. Das Verfahren 750 ist in mancher Hinsicht ähnlich zu dem Verfahren 550, das zuvor in Verbindung mit 5E erläutert ist.
-
In Schritt 752 sendet ein Client-Gerät 200 eine Anforderung bezüglich eines Dateizugriffs an den Aggregationsanbieter. Die Anforderung kann darin bestehen, dass eine zuvor synchronisierte oder gesicherte Datei abgerufen, ersetzt oder gelöscht werden soll. Die Anforderung kann Meta-Daten der Datei, etwa ein kryptographisches Prüfsummenergebnis oder einen Namen der Datei, umfassen. Die Anforderung kann ferner eine Geräte-, Benutzer- oder Kontokennung oder eine andere Authentifizierungsinformation enthalten.
-
In Schritt 754 empfängt der Aggregationsanbieter die Dateizugriffsanforderung. Wie zuvor erläutert ist, enthält in einigen Implementierungen die Anforderung das Ausführen eines Handschlag- oder Authentifizierungsvorgangs, um die Identität der Recheneinrichtung und/oder des Benutzers zu verifizieren. In der Implementierung, in der das Verfahren 750 durch den Synchronisierungsclient ausgeführt wird, können die Schritte 752-754 übersprungen werden.
-
In Schritt 756 kann der Aggregationsanbieter aus einer lokalen Datenbank Identifizierungen von Fragmenten der Datei und einen entsprechenden Speicheranbieter und/oder eine Adresse prüfen, an der jedes Fragment gespeichert ist. In Schritt 758 sendet der Aggregationsanbieter die Identifizierung und/oder die Adresse an das Client-Gerät, und in Schritt 760 empfängt das Client-Gerät die Identifizierung. In Implementierungen, in denen das Verfahren durch den Synchronisierungsclient ausgeführt wird, werden die Schritte 758-760 übersprungen werden.
-
In Schritt 762 sendet der Synchronisierungsclient eine Dateizugriffsanforderung bezüglich eines ersten Fragments an den identifizierten Speicheranbieter oder die identifizierte Adresse. Die Dateizugriffsanforderung kann über eine API erfolgen, die dem Speicheranbieter entspricht, oder kann einen oder mehrere Befehle zum Zugreifen oder zum Verarbeiten der Datei enthalten. In einigen Implementierungen, wie dies zuvor erläutert ist, kann der Synchronisierungsclient eine Fragmentdatei anfordern, die eine Gruppe aus verketteten, nicht zusammenhängenden Fragmenten der Datei enthält. In anderen Implementierungen kann der Synchronisierungsclient jedes Fragment individuell anfordern. In Schritt 764 kann der Synchronisierungsclient ermitteln, ob alle Fragmente angefordert worden sind. Wenn nicht, werden die Schritte 762-764 iterativ für jedes Fragment oder jede Fragmentdatei wiederholt.
-
In einigen Implementierungen kann die Anforderung eine Anforderung zum Löschen der Fragmente beinhalten und folglich werden keine Fragmente oder Dateien aus dem Speicheranbieter empfangen. In anderen Implementierungen kann die Anforderung eine Anforderung zum Abrufen oder zum Herunterladen der Fragmente beinhalten, und in Schritt 766 kann das Client-Gerät die Fragmente und/oder Fragmentdateien empfangen. Der Synchronisierungsclient kann die ursprüngliche Datei aus den Fragmenten in der Reihenfolge gemäß der Zuordnungstabelle oder gemäß anderen empfangenen Identifizierungen von Fragmenten wieder zusammensetzen.
-
Daher richtet sich in einem Aspekt die vorliegende Offenbarung an ein Verfahren zur sicheren Dateiverwaltung in einer Aggregation von Cloud-Speicherdiensten. Das Verfahren umfasst das Empfangen, durch den Speicherverwalter aus einem Client-Gerät, von Meta-Daten einer Datei, die in dem Client-Gerät gespeichert und für die Synchronisierung vorgesehen ist. Das Verfahren umfasst ferner das Identifizieren. durch den Speicherverwalter, mehrerer Fragmente der Datei; und Auswählen durch den Speicherverwalter, eines ersten, dem Client-Gerät zugeordneten Kontos, in einem ersten Cloud-Speicheranbieter von mehreren Cloud-Speicheranbietern und eines zweiten dem Client-Gerät zugeordneten Kontos in einem zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter. Das Verfahren umfasst ferner das Auswählen, durch den Speicherverwalter, einer ersten Teilmenge der mehreren Fragmente der Datei und einer zweiten Teilmenge der mehreren Fragmente der Datei. Das Verfahren umfasst das Speichern, durch den Speicherverwalter, der Meta-Daten der Datei, einer Identifizierung der ersten Untergruppe und der zweiten Untergruppe, und eine Identifizierung des ersten ausgewählten Kontos und des zweiten ausgewählten Kontos in einer Speichereinrichtung, die dem Speicherverwalter zugeordnet ist. Das Verfahren umfasst ferner das Senden, durch den Speicherverwalter, an das Client-Gerät, der Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die erste Untergruppe der mehreren Fragmente zu dem ersten Cloud-Speicheranbieter sendet; und Senden, durch den Speicherverwalter, an das Client-Gerät, der Identifizierung des zweiten ausgewählten Kontos und der zweiten Untergruppe der mehreren Fragmente, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen beinhaltet das Verfahren das nachfolgende Empfangen, durch den Speicherverwalter, aus dem Client-Gerät, einer Anforderung bezüglich der Datei; und ein Abrufen, durch den Speicherverwalter, der Meta-Daten der Datei, der Identifizierung der ersten Untergruppe und der zweiten Untergruppe und der Identifizierung des ersten ausgewählten Kontos und des zweiten ausgewählten Kontos, die in der Speichereinrichtung gespeichert sind, in Reaktion auf den Empfang der Anforderung. Das Verfahren umfasst ferner das Senden, durch den Speicherverwalter, an das Client-Gerät, der Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät eine Anforderung bezüglich der ersten Untergruppe der mehreren Fragmente an den ersten Cloud-Speicheranbieter sendet. Das Verfahren umfasst ferner das Senden, durch den Speicherverwalter, an das Client-Gerät, der Identifizierung des zweiten ausgewählten Kontos und der zweiten Untergruppe der mehreren Fragmente, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät eine Anforderung bezüglich der zweiten Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen umfasst das Identifizieren der mehreren Fragmente der Datei ferner das Unterteilen der Datei in mehrere Fragmente einer vorbestimmten Größe. In einer weiteren Implementierung umfasst das Unterteilen der Datei in mehrere Fragmente der vorbestimmten Größe ferner das Unterteilen der Datei in die mehreren Fragmente der vorbestimmten Größe und ein zusätzliches Fragment, das den Rest der Datei enthält. In einer weiteren Implementierung ist die vorbestimmte Größe kleiner als ein Kopf der Datei.
-
In einigen Implementierungen des Verfahrens umfasst das Auswählen der ersten Untergruppe der mehreren Fragmente der Datei und das Auswählen der zweiten Untergruppe der mehreren Fragmente der Datei ferner das Aufteilen abwechselnder Fragmente der Datei auf die erste Untergruppe und die zweite Untergruppe. In einer weiteren Implementierung bewirkt der Empfang der Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente ferner, dass das Client-Gerät die erste Untergruppe der mehreren Fragmente der Datei zu einem ersten zusammenhängenden Block zusammenfügt.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein System der sicheren Dateiverwaltung bei einer Aggregation von Cloud-Speicherdiensten. Das System umfasst einen Server mit einer Netzwerkschnittstelle, die mit einem Client-Gerät und mehreren Cloud-Speicheranbietern in Verbindung ist, und umfasst einen Prozessor, der einen Speicherverwalter ausführt. Der Speicherverwalter ist ausgebildet, aus dem Client-Gerät Meta-Daten einer Datei zu empfangen, die in dem Client-Gerät gespeichert und für die Synchronisierung vorgesehen ist; und mehrere Fragmente der Datei zu identifizieren bzw. zu ermitteln. Der Speicherverwalter ist ferner ausgebildet, ein dem Client-Gerät zugeordnetes erstes Konto in einem ersten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter auszuwählen, und ein zweites, dem Client-Gerät zugeordnetes Konto in einem zweiten Cloud-Speicheranbieter der mehreren Cloud-Speicheranbieter auszuwählen. Der Speicherverwalter ist ferner ausgebildet, eine erste Untergruppe der mehreren Fragmente der Datei und eine zweite Untergruppe der mehreren Fragmente der Datei auszuwählen. Der Speicherverwalter ist ferner ausgebildet, die Meta-Daten der Datei, eine Identifizierung der ersten Untergruppe und der zweiten Untergruppe und eine Identifizierung des ersten ausgewählten Kontos und des zweiten ausgewählten Kontos in einer Speichereinrichtung, die dem Speicherverwalter zugeordnet ist, zu speichern. Der Speicherverwalter ist ferner ausgebildet, an das Client-Gerät die Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die erste Untergruppe der mehreren Fragmente an den ersten Cloud-Speicheranbieter sendet; und an das Client-Gerät die Identifizierung des zweiten ausgewählten Kontos und der zweiten Untergruppe der mehreren Fragmente zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät die zweite Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, nachfolgend aus dem Client-Gerät eine Anforderung begleitenden der Datei zu empfangen. Der Speicherverwalter ist ferner ausgebildet, die Meta-Daten der Datei, die Identifizierung der ersten Untergruppe und der zweiten Untergruppe und die Identifizierung des ersten ausgewählten Kontos und des zweiten ausgewählten Kontos, die in der Speichereinrichtung gespeichert sind, in Reaktion auf den Empfang der Anforderung abzurufen. Der Speicherverwalter ist ferner ausgebildet, an das Client-Gerät die Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät eine Anforderung bezüglich der ersten Untergruppe der mehreren Fragmente an den ersten Cloud-Speicheranbieter sendet; und an das Client-Gerät die Identifizierung des zweiten ausgewählten Kontos und der zweiten Untergruppe der mehreren Fragmente zu senden, wobei der Empfang der Identifizierung bewirkt, dass das Client-Gerät eine Anforderung bezüglich der zweiten Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter sendet.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, die Datei in mehrere Fragmente einer vorbestimmten Größe zu unterteilen. In einer weiteren Implementierung ist der Speicherverwalter ferner ausgebildet, die Datei in mehrere Fragmente der vorbestimmten Größe und in ein zusätzliches Fragment, das den Rest der Datei enthält, zu unterteilen. In einer weiteren Implementierung ist die vorbestimmte Größe kleiner als ein Kopf der Datei.
-
In einigen Implementierungen ist der Speicherverwalter ferner ausgebildet, abwechselnd Fragmente der Datei auf die erste Untergruppe und auf die zweite Untergruppe zu verteilen. In einer weiteren Implementierung bewirkt der Empfang der Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente ferner, dass das Client-Gerät die erste Untergruppe der mehreren Fragmente der Datei zu einem ersten zusammenhängenden Block verkettet, die zweite Untergruppe der mehreren Fragmente der Datei in einem zweiten zusammenhängenden Block verkettet. In einer noch weiteren Implementierung ist das Client-Gerät ferner ausgebildet, den ersten zusammenhängenden Block und den zweiten zusammenhängenden Block zu verketten.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein Verfahren zur sicheren Dateiverwaltung bei einer Aggregation von Cloud-Speicherdiensten. Das Verfahren umfasst das Ermitteln bzw. Identifizieren eines Synchronisierungsbedarfs durch einen Synchronisierungsclient eines Client-Geräts, wobei eine Datei in dem Client-Gerät gespeichert ist. Das Verfahren umfasst ferner das Senden, durch den durch den Synchronisierungsclient, an einen Speicherverwalter von Meta-Daten der identifizierten Datei. Das Verfahren umfasst ferner das Empfangen, durch den Synchronisierungsclient, aus dem Speicherverwalter einer Identifizierung eines dem Client-Gerät zugeordneten ersten Kontos in einem ersten Cloud-Speicheranbieter aus mehreren Cloud-Speicheranbietern, und einer Identifizierung einer ersten Untergruppe mehrerer Fragmenten der Datei. Das Verfahren umfasst ferner das Empfangen, durch den Synchronisierungsclient, aus dem Speicherverwalter, einer Identifizierung eines dem Client-Gerät zugeordneten zweiten Kontos, in einem zweiten Cloud-Speicher-Anbieter der mehreren Cloud-Speicher-Anbieter und einer Identifizierung einer zweiten Untergruppe aus mehreren Fragmenten der Datei; und das Senden, durch den Synchronisierungsclient, der ersten Untergruppe der mehreren Fragmente an den ersten Cloud-Speicheranbieter, und der zweiten Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter.
-
In einigen Implementierungen umfassen die mehreren Fragmente eine erste Gruppe aus Fragmenten mit vorbestimmter Größe und ein zusätzliches Fragment, das den Rest der Datei enthält. In einer weiteren Implementierung ist die vorbestimmte Größe kleiner als ein Kopf der Datei. In einigen Implementierungen beinhaltet das Verfahren das nachfolgende Senden, durch den Synchronisierungsclient, an den Speicherverwalter, einer Anforderung bezüglich der Datei. Das Verfahren umfasst ferner das Empfangen, durch den Synchronisierungsclient aus dem Speicherverwalter, der Identifizierung des ersten ausgewählten Kontos und der ersten Untergruppe der mehreren Fragmente, und der Identifizierung des zweiten ausgewählten Kontos und der zweiten Untergruppe der mehreren Fragmente. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, einer Anforderung bezüglich der ersten Untergruppe der mehreren Fragmente an den ersten Cloud-Speicheranbieter. Das Verfahren umfasst das Empfangen, durch den Synchronisierungsclient, der ersten Untergruppe der mehreren Fragmente aus dem ersten Cloud-Speicheranbieter. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, einer Anforderung bezüglich der zweiten Untergruppe der mehreren Fragmente an den zweiten Cloud-Speicheranbieter. Das Verfahren umfasst ferner das Empfangen, durch den Synchronisierungsclient, der zweiten Untergruppe der mehreren Fragmente aus dem zweiten Cloud-Speicheranbieter; und das erneute Zusammenfügen, durch den Synchronisierungsclient, der ersten Untergruppe der mehreren Fragmente und der zweiten Untergruppe der mehreren Fragmente, um die Datei zu erzeugen.
-
In einer weiteren Implementierung des Verfahrens umfasst das Wiederzusammensetzen der ersten Untergruppe der mehreren Fragmente der Datei und der zweiten Untergruppe der mehreren Fragmente der Datei ferner das Verketten von abwechselnden Fragmenten der ersten Untergruppe und der zweiten Untergruppe, um die Datei zu erzeugen. In einer weiteren Implementierung des Verfahrens umfasst das Wiederzusammensetzen der ersten Untergruppe der mehreren Fragmente der Datei und der zweiten Untergruppe der mehreren Fragmente der Datei ferner das Verketten von Fragmenten der ersten Untergruppe zu einem ersten zusammenhängenden Block, das Verketten der zweiten Untergruppe der mehreren Fragmente der Datei zu einem zweiten zusammenhängenden Block und das Verketten des ersten zusammenhängenden Blocks und des zweiten zusammenhängenden Blocks.
-
Nicht-standardmäßige Dateifragmentierung für eine Dateiverschleierung
-
Eine Aggregation eines Drittanbieter-Cloud-Speichers zu einer einzigen virtuellen Speichereinrichtung kann ferner durch Dateifragmentierung in einem nicht standardmäßigen Verfahren derart verbessert werden, dass Dateiköpfe und Meta-Daten auf separate Fragmente aufgeteilt werden. 8A ist eine Darstellung einer Ausführungsform eines Beispiels eines Datei-Bitstroms 800, der als ein Array oder Block mit einer Höhe von x Reihen und einer Breite y Spalten 808 betrachtet wird, wobei x und y beliebige Werte sind. Beispielsweise kann y eine Breite eines Speicherlesebusses umfassen, wodurch es möglich ist, eine gesamte Reihe 806 des Bitstroms auf einmal auszulesen. In vielen Implementierungen kann das Array oder der Block als eine Abstraktion eines Bitstroms 800 als Gruppe von Segmenten der Länge y betrachtet werden, wobei jedes Segment eine Reihe 806 repräsentiert.
-
In vielen Implementierungen kann die Array-Darstellung des Bitstroms von links nach rechts, von oben nach unten, Zeile für Zeile, ausgelesen werden. Folglich umfasst der Bitstrom 800 einen Kopf 802 und einen Körper 804. Obwohl der Kopf 802 mit einer Länge von 8 Bits gezeigt ist, sind in der Praxis die Köpfe 802 wesentlich länger.
-
In typischen Fragmentierungsprozessen wird der Bitstrom von einer Anfangsadresse am Beginn des Kopfes 802 in den Körper 804 hinein bis zu einer vorbestimmten Fragmentgröße gelesen (beispielsweise einer MTU, wie zuvor erläutert ist). Sofern der Kopf die Fragmentgröße nicht überschreitet, kann somit das erste Fragment den gesamten Kopf 802 enthalten. Ferner kann jedes Fragment Segment aus Daten der Datei in geordneter Folge enthalten. Wenn das Datensegment für Menschen lesbar ist, kann eine Schaden erzeugende Partei Zugriff auf sogar ein einzelnes Fragment erhalten, und damit in der Lage sein, nützliche Information zu gewinnen, etwa Benutzernamen, Kennwörter, Adressen und dergleichen.
-
Daher wird in einer Implementierung eine Datei in einer nicht-standardmäßigen oder umlaufenden Prozedur derart fragmentiert, dass jedes Bit in einem Fragment nicht benachbart zu einem Bit ist, zu welchem es normalerweise in dem Bitstrom 800 benachbart ist. Insbesondere mit Verweis auf 8B ist eine Ausführungsform eines gedrehten Bitstroms 810 innerhalb des Arrays dargestellt. Anstelle Daten in dem Array von links nach rechts, von oben nach unten zu schreiben und Daten in der gleichen Weise auszulesen, können Daten in das Array von oben nach unten und von links nach rechts geschrieben werden. Dies führt zu einer Transposition der Spalten 808' und Zeilen 806', wie dies gezeigt ist, so dass ein zweites Bit des Kopfes 802 (ursprünglich an der Position b. 1 in 8A) in der ersten Spalte der zweiten Reihe, beispielsweise an der Position 1, b in 8B) erscheint. Das Array kann normal gelesen und fragmentiert werden, von links nach rechts, von oben nach unten, so dass das erste Fragment das erste Bit des Kopfes 802 enthält; anschließend ein Bit des Körpers 804, das zuvor auf Zeile 2, Spalte a erschien; dann ein Bit des Körpers 804, das zuvor an Zeile 3, Spalte a erschien, und dergleichen. Somit ist kein Bit in dem Fragment benachbart zu einem Bit, zu welchem es ursprünglich in dem Bitstrom benachbart war, wodurch die Kopf-Meta-Daten und jegliche von Menschen lesbare Daten innerhalb der Datei verschleiert werden. Die Datei kann in umgekehrter Richtung de-fragmentiert werden, indem die Fragmente von links nach rechts, von oben nach unten in das Array geschrieben werden und anschließend die Fragmente von oben nach unten, von links nach rechts ausgelesen werden.
-
Obwohl zur deutlicheren Erläuterung Arrays gezeigt sind, kann das gleiche Ergebnis durch einen Kammfilter erhalten werden. Beispielsweise wird in vielen Implementierungen ein Filter wiederholt angewendet, so dass ein erster Bereich des Bitstroms ausgelesen wird (beispielsweise n Elemente, etwa 1 Bit) und ein zweiter Bereich des Bitstroms übersprungen wird (beispielsweise y-1 Bits, in dem Beispiel der 8A und 8B). Der ausgegebene Bitstrom kann als ein rotiertes bzw. gedrehtes Fragment der Datei gespeichert werden. Der Vorgang kann für weitere Fragmente wiederholt werden, indem der Filter (beispielsweise Überspringen von i-1 Bits, dann Lesen von 1 Bit und Überspringen von y-1 Bits, wobei i gleich der Fragmentnummer ist) verschoben wird, oder der Vorgang kann parallel über eine Anzahl (beispielsweise y) Filter ausgeführt werden, die jeweils ähnlich versetzt sind. Zum De-fragmentieren der Datei wird ein erster Bereich jedes Fragments ausgelesen werden (beispielsweise n Elemente, etwa 1 Bit), anschließend wird ein zweiter Bereich jedes Fragments (beispielsweise ein nächstes Bit) etc. ausgelesen, bis die Datei wieder zusammengefügt ist.
-
Beispielsweise kann in einer Implementierung der Client eine erste Untergruppe der Datei, die alle n-te Element enthält, extrahieren. Der Client kann ferner eine zweite Untergruppe der Datei, die alle n-ten Elemente, die um ein Element verschoben sind, enthält, extrahieren. Dies kann mit einem weiteren Versatz für weitere Untergruppen nach Bedarf wiederholt werden.
-
In einer weiteren Implementierung kann ein inverser Multiplexer (beispielsweise ein Eingang, mehrere Ausgänge) verwendet werden, um die Untergruppen zu extrahieren. Beispielsweise kann ein Bitstrom in den inversen Multiplexer eingespeist werden, wobei das erste Element (beispielsweise 1 Bit oder eine Gruppe aus Bits) an einem ersten Ausgang, etwa Bit #1 ausgegeben wird. Ein zweites Element kann an einem zweiten Ausgang, etwa Bit #2, ausgegeben werden. Ein drittes Element kann an einem dritten Ausgang, etwa Bit #3 ausgegeben werden. Jedes weitere Eingangselement kann zu einem aufeinanderfolgenden Ausgang des inversen Multiplexers gelenkt werden, bis der letzte Ausgang erreicht ist, wobei an diesem Punkt der Vorgang wiederholt wird, indem das nächste Eingangselement zu dem ersten Ausgang geleitet wird. Folglich kann eine Anzahl aus Fragmenten gleich der Anzahl von Ausgängen erzeugt werden. In ähnlicher Weise können zur Umkehrung des Vorganges und zum wieder Zusammensetzen der Datei, die Fragmente in einen Multiplexer eingespeist werden, der mehrere Eingänge (beispielsweise einen pro Fragment) und einen Ausgang hat. Der Multiplexer kann jedes Element aus aufeinanderfolgenden Eingängen einlesen und das Element auf dem einzelnen Ausgang ausgeben, wodurch der ursprüngliche Bitstrom wiederhergestellt wird.
-
Obwohl einzelne Bits erläutert sind, werden in vielen Implementierungen andere Segmentgrößen ausgewählt, um den Kammfilter zu durchlaufen, etwa 4 Bits, 1 Byte, 8 Bytes oder ein anderer Wert. In ähnlicher Weise werden in vielen Implementierungen, obwohl y-1 Bits zuvor erläutert sind, andere Segmentgrößen übersprungen, etwa 31 Bits, 63 Bits, 15 Bytes oder ein anderer derartiger Wert.
-
9 ist ein Flussdiagramm einer Implementierung eines Verfahrens 900 zur Verschleierung einer Datei. In Schritt 902 überwacht in einigen Implementierungen ein Synchronisierungsclient oder eine Dateiüberwachungseinheit jegliche Dateiaktivität, um neue oder modifizierte Dateien zu erkennen. Beispielsweise überwacht der Synchronisierungsclient oder die Dateiüberwachungseinheit Laufwerkschreibaktivitäten oder vergleicht den Inhalt eines Ordners mit einer früheren Zeit, wie dies zuvor erläutert ist. In Schritt 904 ermittelt der Synchronisierungsclient oder die Dateiüberwachungseinheit, ob eine Datei modifiziert oder erzeugt worden ist, wenn nicht, werden die Schritte 902-904 regelmäßig wiederholt.
-
In Schritt 906 sendet in einigen Implementierungen der Synchronisierungsclient oder die Dateiüberwachungseinheit Meta-Daten einer Datei an einen Speicherverwalter oder einen Aggregationsanbieter, der von einem ersten Cloud-Speicheranbieter, einem zweiten Cloud-Speicheranbieter oder einem dritten Cloud-Speicheranbieter bereitgestellt werden kann. Der Speicherverwalter oder der Aggregationsanbieter kann ein Fragmentierungsschema bestimmen und kann bestimmen, zu welchem Anbieter oder Anbietern Fragmente gesendet werden sollen, wie zuvor in Verbindung mit den Schritten 710-716 der 7A erläutert ist. Der Speicherverwalter oder der Aggregationsanbieter sendet eine Zuordnungstabelle oder ähnliche Kennungen von Fragmenten und entsprechenden Konten oder Cloud-Speicheranbietern in Schritt 908 zu dem Client und/oder zu einer oder mehreren anderen Einrichtungen. Beispielsweise wird die Zuordnungstabelle oder werden die Meta-Daten in einem oder mehreren geeigneten Computereinrichtungen, etwa Cloud-Speicheranbietern, dem Aggregationsanbieter 204 und/oder dem Synchronisierungsclient 606 gespeichert, und eine derartige Einrichtung wird im Allgemeinen als Zuordnungsspeichereinrichtung, Zuordnungsspeicher, Meta-Datenspeicher oder durch einen anderen ähnlichen Begriff bezeichnet. In anderen Implementierungen wird der Schritt 906 von dem Synchronisierungsclient ausgeführt. Die Zuordnungstabelle oder die Meta-Daten können in ähnlicher Weise in einem Zuordnungsspeicher oder einer Meta-Datenspeichereinrichtung in einigen Implementierungen gesichert werden oder dahin gesendet werden.
-
In Schritt 910 extrahiert der Synchronisierungsclient eine erste Untergruppe der Datei, um ein erstes Fragment zu erzeugen. In einigen Implementierungen umfasst das Extrahieren der ersten Untergruppe die Verwendung eines Kammfilters oder das Extrahieren eines ersten Teils der Datei aus x Bits und das Überspringen eines zweiten Teils der Datei aus y Bits, und das Wiederholen des Vorgangs, bis das Ende der Datei oder eine vorbestimmte Fragmentgröße erreicht ist. In anderen Implementierungen, wie zuvor erläutert ist, kann die Datei in ein Array mit einer Schreiborientierung (beispielsweise links nach rechts, oben nach unten) geschrieben werden und kann anschließend aus dem Array mit einer senkrechten Leseorientierung (beispielsweise von oben nach unten, von links nach rechts) gelesen werden.
-
In Schritt 912 wird in einigen Implementierungen die extrahierte Untergruppe oder die Gruppe aus nicht zusammenhängenden Fragmenten zu einem ersten Cloud-Speicheranbieter gesendet. In einigen Implementierungen, wie zuvor erläutert ist, umfasst das Senden der extrahierten Untergruppe ein Speichern einer Datei in einem überwachten Ordner oder das Senden eines Befehls in einer entsprechenden API des Speicheranbieters, um das Fragment zu speichern. In einigen Implementierungen kann vor der Übertragung der extrahierten Untergruppe der Synchronisierungsclient die extrahierte Untergruppe verschlüsseln, beispielsweise unter Anwendung einer sicheren Hash-Algorithmen (SHA)-Implementierung, etwa SHA-256; unter Anwendung einer erweiterten Verschlüsselungs-Standard- (AES-) Implementierung, etwa AES-256.
-
In Schritt 914 ermittelt der Synchronisierungsclient, ob weitere Fragmente aus der Datei erzeugt werden müssen. Wenn ja, dann werden die Schritte 910-914 iterativ wiederholt. Wie zuvor erläutert ist, kann dies das Weiterscheiben eines Kammfilters um einen Versatz, beispielsweise (i-1) * x Bits, wobei i die Iteration und x die Größe des extrahierten ersten Bereichs repräsentiert) in einigen Implementierungen umfassen. In anderen Implementierungen kann dies das Lesen einer nächsten Spalte oder Zeile eines gedrehten Arrays umfassen. Bei jedem Durchlauf des Schritts 912 kann die extrahierte Untergruppe zu einem nächsten Speicheranbieter gesendet werden, so dass eine Gruppe aus Konten in mehreren Cloud-Speicheranbietern als Schleife durchlaufen wird, wie dies zuvor erläutert ist.
-
Folglich betrifft in einem Aspekt die vorliegende Offenbarung ein Verfahren zur Verschleierung von Daten über eine Aggregation von Cloud-Speicherdiensten. Das Verfahren umfasst das Identifizieren, mittels eines Synchronisierungsclients eines Client-Geräts, einer Datei zur Übertragung zu einer Aggregation mehrerer Cloud-Speicherdienste. Das Verfahren umfasst ferner das Extrahieren, durch den Synchronisierungsclient, einer ersten Untergruppe der Datei, die jedes n-te Element enthält. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, der ersten Untergruppe der Datei zu einem ersten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste. Das Verfahren umfasst ferner das Extrahieren, durch den Synchronisierungsclient, einer zweiten Untergruppe der Datei, die jedes n-te Element, das um eins verschoben ist, enthält. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, der zweiten Untergruppe der Datei zu einem zweiten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, von Meta-Daten der Datei und einer Identifizierung der ersten Untergruppe, des ersten Cloud-Speicherdienstes, der zweiten Untergruppe und des zweiten Cloud-Speicherdienstes zu einem Meta-Datenspeicher, der von dem ersten Cloud-Speicheranbieterdienst, dem zweiten Cloud-Speicherdienst oder einem dritten Cloud-Speicherdienst bereitgestellt wird.
-
In einigen Implementierungen enthält jedes Element eine vorbestimmte Anzahl an Bits. In einigen Implementierungen des Verfahrens umfasst das Extrahieren der ersten Untergruppe der Datei ferner ein inverses Multiplexieren eines Bitstroms der Datei in eine mehrere Untergruppen. In anderen Implementierungen des Verfahrens umfasst das Extrahieren der ersten Untergruppe der Datei ferner das Einladen der Datei in ein Array mit einer vorbestimmten Anzahl an Spalten; und das Auslesen einer ersten Spalte des Arrays. In einer weiteren Implementierung umfasst das Extrahieren der zweiten Untergruppe der Datei ferner das Auslesen einer zweiten Spalte des Arrays.
-
In einigen Implementierungen beinhaltet das Verfahren das nachfolgende Senden einer Anforderung bezüglich der Datei, durch den Synchronisierungsclient, zu der Meta-Datenspeichereinheit, wobei die Anforderung die Meta-Daten der Datei enthält; und umfasst das Empfangen. durch den Synchronisierungsclient, aus dem Meta-Datenspeicher, von Identifizierungen für die erste Untergruppe, den ersten Cloud-Speicherdienst, die zweite Untergruppe und den zweiten Cloud-Speicherdienst. In einer weiteren Implementierung umfasst das Verfahren das Abrufen, durch den Synchronisierungsclient, der ersten Untergruppe aus dem ersten Cloud-Speicherdienst. Das Verfahren umfasst ferner das Abrufen, durch den Synchronisierungsclient, der zweiten Untergruppe aus dem zweiten Cloud-Speicherdienst; und Zusammenfügen der Datei durch den Synchronisierungsclient aus der ersten Untergruppe und der zweiten Untergruppe. In noch einer weiteren Implementierung umfasst das Verfahren das Multiplexieren der ersten Untergruppe und der zweiten Untergruppe zu einem einzigen Bitstrom. In einer noch weiteren Implementierung beinhaltet das Verfahren das Einladen der ersten Untergruppe und der zweiten Untergruppe in Spalten eines Arrays mit einer vorbestimmten Anzahl an Spalten; und Auslesen einer Zeile des Arrays. In einigen Implementierungen beinhaltet die erste Untergruppe der Datei keine aufeinanderfolgenden Bits der Datei, während in anderen Implementierungen die erste Untergruppe der Datei keine aufeinanderfolgenden Bytes der Datei enthält. In noch anderen Implementierungen enthält die erste Untergruppe der Datei keine aufeinanderfolgenden Elemente der ursprünglichen Datei, wobei ein Element eine beliebige vorbestimmte Länge (beispielsweise 1 Bit, 1 Byte, 4 Bytes, 8 Bytes etc.) haben kann. In einigen Implementierungen verschlüsselt der Synchronisierungsclient auch die erste Untergruppe der Datei vor dem Senden der ersten Untergruppe der Datei an den ersten Cloud-Speicherdienst; und er verschlüsselt die zweite Untergruppe der Datei vor dem Senden der zweiten Untergruppe der Datei an den ersten Cloud-Speicherdienst.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein System zur Verschleierung von Daten über eine Aggregation von Cloud-Speicherdiensten. Das System enthält eine Client-Einrichtung bzw. ein Client-Gerät, das mit mehreren Cloud-Speicherdiensten in Verbindung steht, und umfasst einen Prozessor, der einen Synchronisierungsclient ausführt. Der Synchronisierungsclient ist ausgebildet, eine Datei zur Übertragung zu einer Aggregation der mehreren Cloud-Speicherdienste zu ermitteln. Der Synchronisierungsclient ist ferner ausgebildet, eine erste Untergruppe der Datei zu extrahieren, die jedes n-te Element enthält. Der Synchronisierungsclient ist ferner ausgebildet, die erste Untergruppe der Datei an einen ersten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste zu senden. Der Synchronisierungsclient ist ferner ausgebildet, eine zweite Untergruppe der Datei, die jedes n-te Element enthält, das um eins verschoben ist, zu extrahieren. Der Synchronisierungsclient ist ferner ausgebildet, die zweite Untergruppe der Datei an einen zweiten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste zu senden, und Meta-Daten der Datei und eine Identifizierung der ersten Untergruppe, des ersten Cloud-Speicherdienstes, der zweiten Untergruppe und des zweiten Cloud-Speicherdienstes an einem Meta-Datenspeicher zu senden, der durch den ersten Cloud-Speicherdienst, den zweiten Client-Speicherdienst oder den dritten Cloud-Speicherdienst bereitgestellt wird.
-
In einigen Implementierungen enthält jedes Element eine vorbestimmte Anzahl an Bits. In anderen Implementierungen ist der Synchronisierungsclient ferner ausgebildet, ein inverses Multiplexieren an einem Bitstrom der Datei in eine mehreren Untergruppen auszuführen. In noch anderen Implementierungen ist der Synchronisierungsclient ferner ausgebildet, die Datei in ein Array mit einer vorbestimmten Anzahl an Spalten einzuladen; und eine erste Spalte des Arrays auszulesen. In einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, eine zweite Spalte des Arrays auszulesen.
-
In einigen Implementierungen ist der Synchronisierungsclient ferner ausgebildet, nachfolgend eine Anforderung bezüglich der Datei an den Meta-Datenspeicher zu senden, wobei die Anforderung die Meta-Daten der Datei enthält; und aus dem Meta-Datenspeicher Identifizierungen für die Untergruppe, den ersten Cloud-Speicherdienst, die zweite Untergruppe und den zweiten Cloud-Speicherdienst zu empfangen. In einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, die erste Untergruppe aus dem ersten Cloud-Speicherdienst abzurufen; die zweite Untergruppe aus dem zweiten Cloud-Speicherdienst abzurufen; und die Datei aus der ersten Untergruppe und der zweiten Untergruppe zusammenzusetzen. In einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, die erste Untergruppe und die zweite Untergruppe durch Multiplex-Verarbeitung zu einem einzigen Bitstrom zusammenzusetzen. In einigen Implementierungen ist der Synchronisierungsclient ferner ausgebildet, die erste Untergruppe und die zweite Untergruppe in Spalten eines Arrays, das eine vorbestimmte Anzahl an Spalten hat, einzuladen; und eine Zeile des Arrays auszulesen. In einigen Implementierungen enthält die erste Untergruppe der Datei keine aufeinanderfolgenden Bits der Datei, während in anderen Implementierungen die erste Untergruppe der Datei keine aufeinanderfolgenden Bytes der Datei enthält. In noch anderen Implementierungen enthält die erste Untergruppe der Datei keine aufeinanderfolgenden Elemente der ursprünglichen Datei, wobei ein Element eine vorbestimmte Länge haben kann (beispielsweise 1 Bit, 1 Byte, 4 Bytes, 8 Bytes, und dergleichen). In einigen Implementierungen kann der Synchronisierungsclient ferner ausgebildet sein, die erste Untergruppe der Datei vor dem Senden der ersten Untergruppe der Datei an den ersten Cloud-Speicherdienst zu verschlüsseln; und die zweite Untergruppe der Datei vor dem Senden der zweiten Untergruppe der Datei an den ersten Cloud-Speicherdienst zu verschlüsseln.
-
Pipeline-Verarbeitung von Dateien durch aggregierte Cloud-Speicherdienste
-
Gewisse Cloud-Speicherdienste von Drittanbietern bieten erweiterte Eigenschaften für gewisse Dateitypen, etwa Geoposition, Bildauswertung und -markierung, Gesichtserkennung, Bildverarbeitung, und dergleichen. Diese Eigenschaften können automatisch an Dateien des entsprechenden Typs ausgeführt werden, wenn sie mit dem Client-Speicherdienst synchronisiert werden. Um die Verarbeitung, die von einem Cloud-Anbieter mit Aggregation von Cloud-Speicherdiensten geboten werden, auszunutzen, können Dateien in der Art einer Pipeline dem Verarbeitungsanbieter zugeführt und dann in Bezug auf einen alternativen Speicherdienst neu synchronisiert werden, wobei die Verarbeitungsdaten oder Meta-Daten erhalten bleiben. Es sei beispielsweise angenommen, dass ein erster Cloud-Anbieter eine erweiterte Verarbeitung für Fotos bietet, aber nur 1 GB an Speicherplatz anbietet; und dass ein zweiter Cloud-Anbieter, der keine erweiterte Verarbeitung bietet, unbegrenzten Speicherplatz für Fotos bietet, so dass Fotos dem ersten Cloud-Anbieter Fotos zur Verarbeitung zugeleitet werden. Nach der Verarbeitung können die erzeugten Meta-Daten aus dem ersten Cloud-Anbieter abgerufen werden, und das Foto kann zum zweiten Cloud-Anbieter zur Speicherung zugeleitet werden. Das Foto kann aus ersten Cloud-Anbieter entfernt werden, so dass weitere Fotos übertragen und verarbeitet werden können, so dass die Vorteile für den Benutzer und die Funktion sowohl des ersten Anbieters als auch des zweiten Anbieters ausgenutzt werden.
-
In einer Implementierung können Dateien zur Verarbeitung bereitgestellt, abgerufen und anschließend separat für die Speicherung bereitgestellt werden. In einer weiteren Implementierung können Dateien gleichzeitig zur Verarbeitung und zur Speicherung in unterschiedlichen Cloud-Speicheranbietern bereitgestellt werden. Nach der Verarbeitung können die Meta-Daten der Datei abgerufen werden und die Datei kann aus dem Speicher des verarbeitenden Anbieters gelöscht werden. Die Meta-Daten können zu der gespeicherten Datei synchronisiert werden oder können in einem Meta-Datenspeicher bewahrt werden und von dem Client-Gerät während der Synchronisierung oder während des Dateiabrufens abgerufen werden.
-
Beispielsweise ist 10 eine Darstellung eines Signalablaufs einer Pipelineverarbeitung von Dateien über aggregierte Cloud-Speicherdienste. In einigen Implementierungen werden Funktionen, die von dem Aggregationsanbieter 204 ausgeführt werden, durch einen Synchronisierungsclient in dem Client-Gerät 200 bereitgestellt.
-
In Schritt 1000 werden Datei-Meta-Daten einer Datei an den Aggregationsanbieter 204 gesendet, wie dies zuvor in Zusammenhang mit Schritt 506 der 5A-5D erläutert ist. Die Datei-Meta-Daten können einen Dateityp, sowie einen Dateinamen, ein Prüfsummenergebnis, Datei-Meta-Daten, ID3-Marken und/oder jede andere Art und Form einer derartigen Information enthalten. Der Aggregationsanbieter 204 ermittelt auf der Grundlage des Dateityps eine passende Regel, die anzeigt, dass ein Cloud-Speicheranbieter eine erweiterte Verarbeitung bereitstellt. Der Aggregationsanbieter kann eine Kontenkennung eines Kontos in dem Cloud-Speicheranbieter identifizieren. Der Aggregationsanbieter kann auch einen zweiten Cloud-Speicheranbieter zur Speicherung der Datei auswählen und kann eine Kontenkennung eines Kontos in dem zweiten Cloud-Speicheranbieter ermitteln. In Schritt 1002 stellt der Aggregationsanbieter 204 beide Kontenkennungen für das Client-Gerät bereit.
-
In Reaktion auf den Empfang der Kontenkennungen sendet in Schritt 1004 das Client-Gerät 200 die Datei an den ersten Cloud-Speicheranbieter 110A und in einigen Implementierungen an den zweiten Cloud-Speicheranbieter 110B. In anderen Implementierungen sendet das Client-Gerät 200 die Datei an den zweiten Cloud-Speicheranbieter 110B mit aktualisierten Meta-Daten, die aus dem ersten Cloud-Speicheranbieter 110A erhalten werden (beispielsweise Senden der Datei zusätzlich zu den Meta-Daten in Schritt 1010).
-
Bei Empfang der Datei führt der erste Cloud-Speicheranbieter eine Verarbeitung in Schritt 1006 aus und erzeugt aktualisierte Daten und/oder Meta-Daten (beispielsweise Geo-Markierungsinformation, Gesichtserkennungsinformation, verarbeitete Miniaturbilder eines Bildes, Versionen mit höherer Bitrate von Audio- oder Video-Dateien, und dergleichen) für die Datei. In Schritt 1008 werden die aktualisierten Meta-Daten und/oder die aktualisierte Datei an das Client-Gerät gesendet oder mit der Datei synchronisiert. Das Client-Gerät sendet die aktualisierten Meta-Daten oder Daten an den Aggregationsanbieter 204 zur Speicherung und/oder an den zweiten Cloud-Speicheranbieter 110B, wobei dies in Schritt 1010 erfolgt. Das Client-Gerät sendet ferner einen Befehl zum Löschen der Datei im ersten Cloud-Speicheranbieter 110A in Schritt 1012. In einigen Implementierungen kann das Client-Gerät die Schritte 1010 und 1012 auslösen, indem eine Datei von einem überwachten Ordner, der dem ersten Cloud-Speicheranbieter entspricht, in einen zweiten überwachten Ordner verschoben wird, der dem zweiten Cloud-Speicheranbieter entspricht, wodurch der Synchronisierungsclient oder die Synchronisierungsanwendungen jedes Cloud-Speicheranbieters veranlasst werden, die Datei entsprechend zu löschen oder hochzuladen.
-
Wie zuvor erläutert ist, werden in einigen Implementierungen Meta-Daten für Dateien erzeugt, die einem ersten Cloud-Speicheranbieter zugeleitet werden. In anderen Implementierungen ersetzt ein Cloud-Speicheranbieter eine Datei, etwa Ersetzen einer Audio-Datei mit niedriger Bitrate durch eine Audio-Datei mit hoher Bitrate. In noch weiteren Implementierungen modifiziert der Cloud-Speicheranbieter eine Datei, etwa durch Ausführen einer Verarbeitung an der Datei (beispielsweise Normierung von Audio-Dateien, Entfernen von „roten Augen“ aus Fotos oder automatischer Weißausgleich oder Modifizierungen von Farbe, Helligkeit und Kontrast, und dergleichen). In noch weiteren Implementierungen führt der Cloud-Speicheranbieter eine Auswertung von Dateien aus und gibt andere Meta-Daten zurück, die eine Untergruppe der Dateien repräsentieren, etwa Ermitteln aller Fotos in einer Sammlung, die Fotos einer speziellen Person enthalten. Daher kann das Erzeugen der Meta-Daten das Erzeugen, Modifizieren, Ersetzen oder ein anderweitiges Ändern einer Datei, Gruppen von Dateien, einer Information über die Dateien oder Gruppen aus Dateien, oder andere derartige Schritte umfassen.
-
11A ist ein Flussdiagramm zur Implementierung eines Verfahrens 1100A für eine Pipeline-Verarbeitung von Dateien über aggregierte Cloud-Speicherdienste. Beim Erkennen einer neuen oder modifizierten Datei eines ersten Dateityps ermittelt in Schritt 1102 ein Synchronisierungsclient, ein Aggregationsanbieter oder ein Speicherverwalter einen ersten Cloud-Speicheranbieter mit einer Regel, die für den ersten Dateityp passt, wobei die Regel angibt, dass der Cloud-Speicheranbieter eine zusätzliche Verarbeitung an der Datei ausführt und/oder aktualisierte Meta-Daten für die Datei erzeugt.
-
In Schritt 1104 sendet das Client-Gerät die Datei an den ersten Cloud-Speicheranbieter. Der Cloud-Speicheranbieter führt die erweiterte Verarbeitung aus oder aktualisiert die Datei, wie dies zuvor erläutert ist und zeigt dem Client-Gerät an, wann die Verarbeitung abgeschlossen ist (beispielsweise durch Senden eines Bereitschaftssignals, Senden aktualisierter Meta-Daten an das Gerät, und dergleichen). In Schritt 1106 empfängt das Client-Gerät die aktualisierten Meta-Daten oder die erweiterte Datei oder ruft diese ab. Das Abrufen der Datei umfasst gegebenenfalls das Senden einer Anforderung zum Herunterladen der Datei und/oder der Meta-Daten und das Empfangen der Datei und/oder der Meta-Daten in Reaktion darauf.
-
In Schritt 1108 wählt in einigen Implementierungen das Client-Gerät einen zweiten Cloud-Speicheranbieter für eine Langzeitspeicherung der Datei aus, wobei die Verfahren verwendet werden, die zuvor in Verbindung mit 4A-5D erläutert sind. Das Client-Gerät sendet die Datei an den ausgewählten zweiten Cloud-Speicheranbieter. Wie zuvor erläutert ist, umfasst dies in einigen Implementierungen das Verschieben der Datei von einem ersten überwachten Ordner, der dem ersten Cloud-Speicheranbieter entspricht, in einen zweiten überwachten Ordner, der dem zweiten Cloud-Speicheranbieter entspricht. In ähnlicher Weise sendet in Schritt 1110 das Client-Gerät einen Befehl zum Löschen der Datei an den ersten Cloud-Speicheranbieter. In einigen Implementierungen kann dies als Folge des Verschiebens der Datei aus dem ersten überwachten Ordner hervorgerufen werden.
-
Das Verfahren 1100A kann iterativ für mehrere Dateien des ersten Typs ausgeführt werden. Daher kann in derartigen Implementierungen der Synchronisierungsclient oder der Aggregationsanbieter eine Warteschlange von Dateien für die Verarbeitung unterhalten. In einigen Implementierungen werden Dateien der Warteschlange hinzugefügt, wenn sie erzeugt werden.
-
11B ist ein Flussdiagramm einer weiteren Implementierung eines Verfahrens 1100B für eine Pipeline-Verarbeitung von Dateien über aggregierte Cloud-Speicherdienste. Obwohl dieses Verfahren so gezeigt ist, dass einige Schritte von einem Aggregationsanbieter 204 ausgeführt werden, werden in einigen Implementierungen einer oder mehrere dieser Schritte durch das Client-Gerät 200 ausgeführt.
-
Ähnlich zu den Dateiüberwachungsschritten, die zuvor erläutert sind, überwacht in den Schritten 1152 und 1154 ein Synchronisierungsclient oder eine Dateiüberwachungseinheit eines Clients regelmäßig oder kontinuierlich einen oder mehrere Ordner in Hinblick auf neue oder modifizierte Dateien. Sobald eine derartige aufgefunden ist, werden in Schritt 1156 Meta-Daten der neuen oder modifizierten Datei an einen Aggregationsanbieter gesendet. Die Meta-Daten können eine Identifizierung eines Dateityps der Datei zusätzlich zu anderer Information (beispielsweise Name, Größe, Prüfsummenkennung, Gerätekennung, etc.) enthalten. Die Information kann in Schritt 1158 empfangen werden, wobei dies das Ausführen einer Authentifizierungs- oder Handschlag-Verfahrens mit beinhalten kann, wie dies zuvor erläutert ist.
-
In Schritt 1160 ermittelt ein Speicherverwalter des Aggregationsanbieters, ob der erste Dateityp der Datei mit einer Regel des Speicheranbieters übereinstimmt, für den das Client-Gerät ein zugeordnetes Konto hat, wobei die Regel angibt, dass der Anbieter eine zusätzliche Dateiverarbeitung bereitstellt. Wenn nicht, dann werden in Schritt 1162 andere Synchronisierungsverfahren ausgeführt, etwa solche, die zuvor in Verbindung mit 4A-5D erläutert sind.
-
Wenn der Dateityp mit einer Regel für einen ersten Speicheranbieter übereinstimmt, dann wählt in Schritt 1164 der Speicherverwalter einen zweiten Cloud-Speicheranbieter aus. Der zweite Cloud-Speicheranbieter kann über ein Verfahren ausgewählt werden, wie es zuvor erläutert ist, etwa als ein Anbieter, für den Dateien des ersten Dateityps nicht auf ein Speicherkontingent angerechnet werden. Der Speicherverwalter prüft Kontenkennungen von Konten, die dem Client-Gerät in dem ersten und dem zweiten Cloud-Speicheranbieter zugeordnet sind, und sendet diese Kennungen in Schritt 1166 an das Client-Gerät.
-
In Schritt 1168 empfängt das Client-Gerät die Kennungen und in Schritt 1170 sendet es die Datei jeweils an den ersten und den zweiten Cloud-Speicheranbieter. Wie zuvor erläutert ist, kann es in einigen Implementierungen gleichzeitig oder der Reihe nach erfolgen, während in anderen Implementierungen das Client-Gerät die Datei an den zweiten Speicheranbieter sendet, nachdem Meta-Daten oder eine verarbeitete Datei aus dem ersten Cloud-Speicheranbieter empfangen worden sind.
-
In einigen Implementierungen ruft in Schritt 1172 der Speicherverwalter oder der Aggregationsanbieter erzeugte Meta-Daten oder eine erweiterte Datei aus dem ersten Speicheranbieter ab. Das Abrufen der Meta-Daten oder der Datei umfasst gegebenenfalls das Veranlassen des Client-Geräts, die Meta-Daten oder die Datei anzufordern, und bei Empfang, die Meta-Daten oder die Datei an den Aggregationsanbieter weiterzuleiten. In anderen Implementierungen ruft der Aggregationsanbieter die Meta-Daten oder die Datei direkt aus dem ersten Cloud-Speicheranbieter.
-
In Schritt 1174 sendet der Speicherverwalter oder der Aggregationsanbieter eine Anforderung zum Löschen der Datei aus dem ersten Speicheranbieter. In einigen Implementierungen wird die Anforderung direkt an den ersten Speicheranbieter gesendet, während in anderen Implementierungen die Anforderung an das Client-Gerät gesendet wird, wodurch das Client-Gerät veranlasst wird, eine ähnliche Anforderung an den ersten Speicheranbieter zu senden.
-
Folglich beschreibt in einem Aspekt die vorliegende Offenbarung ein Verfahren für eine Pipeline-Verarbeitung über eine Aggregation von Cloud-Speicherdiensten. Das Verfahren umfasst das Ermitteln bzw. Identifizieren, durch den Synchronisierungsclient oder einen Verwalter eines Client-Geräts, einer ersten Datei im Speicher des Client-Geräts. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, der ersten Datei an einen ersten Cloud-Speicherdienst, wobei der erste Cloud-Speicherdienst neue Meta-Daten für die erste Datei erzeugt. Das Verfahren umfasst ferner das Abrufen, durch den Synchronisierungsclient,, erzeugten Meta-Daten aus dem ersten Cloud-Speicherdienst. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, der ersten Datei an einen zweiten Cloud-Speicherdienst. Das Verfahren umfasst ferner das Senden, durch den Synchronisierungsclient, an den ersten Cloud-Speicherdienst, einer Anforderung zum Löschen der ersten Datei.
-
In einigen Implementierungen des Verfahrens umfasst das Identifizieren bzw. Ermitteln der ersten Datei ferner das Ermitteln bzw. Identifizieren einer neuen oder modifizierten Datei. In anderen Implementierungen des Verfahrens enthalten die erzeugten Meta-Daten Geo-Positions-Meta-Daten für die Datei. In noch anderen Implementierungen des Verfahrens enthalten die erzeugten Meta-Daten Gesichtserkennungs-Markierungs-Meta-Daten für die Datei.
-
In einigen Implementierungen des Verfahrens wird das Senden der ersten Datei an den ersten Cloud-Speicherdienst und an den zweiten Cloud-Speicherdienst vor dem Abrufen der erzeugten Meta-Daten aus dem ersten Cloud-Speicherdienst ausgeführt. In einigen Implementierungen umfasst das Verfahren das Senden der erzeugten Meta-Daten an den zweiten Cloud-Speicherdienst zur Verknüpfung mit der ersten Datei. In anderen Implementierungen umfasst das Verfahren das Senden der erzeugten Meta-Daten an einen dritten Cloud-Speicherdienst.
-
In einigen Implementierungen des Verfahrens wird das Senden der Anforderung zum Löschen der ersten Datei in Reaktion auf das Abrufen, durch den Synchronisierungsclient, der erzeugten Meta-Daten für die erste Datei ausgeführt. In anderen Implementierungen umfasst das Verfahren das Unterhalten, durch den Synchronisierungsclient, einer Warteschlange aus Dateien zum Senden an den ersten Cloud-Speicherdienst. Das Verfahren umfasst ferner für jede Datei der Warteschlange aus Dateien: Senden, durch den Synchronisierungsclient, der besagten Datei an den ersten Cloud-Speicherdienst, wobei der erste Cloud-Speicherdienst neue Meta-Daten für die besagte Datei erzeugt; Abrufen, durch den Synchronisierungsclient, der erzeugten Meta-Daten für die besagte Datei aus dem ersten Cloud-Speicherdienst; und Senden, durch den Synchronisierungsclient, an den ersten Cloud-Speicherdienst, eine Anforderung zum Löschen der besagten Datei.
-
In einem weiteren Aspekt beschreibt die vorliegende Offenbarung ein Verfahren für eine Pipeline-Verarbeitung mittels einer Aggregation von Cloud-Speicherdiensten. Das Verfahren umfasst das Empfangen, durch den Speicherverwalter, aus einem Client-Gerät, einer Identifizierung einer ersten Datei, die in dem Client-Gerät gespeichert und für die Synchronisierung vorgesehen ist. Das Verfahren umfasst ferner das Auswählen, durch den Speicherverwalter, in Reaktion auf einen Dateityp der ersten Datei, eines ersten Cloud-Speicheranbieters. Das Verfahren umfasst ferner das Senden, durch den Speicherverwalter an das Client-Gerät, einer Identifizierung des ersten Cloud-Speicheranbieters, wobei der Empfang der Identifizierung des ersten Cloud-Speicheranbieters das Client-Gerät veranlasst, die erste Datei an den ersten Cloud-Speicheranbieter zu senden, wobei der Empfang der ersten Datei bewirkt, dass der erste Cloud-Speicheranbieter neue Meta-Daten für die erste Datei erzeugt. Das Verfahren umfasst ferner das Abrufen, durch den Speicherverwalter aus dem ersten Cloud-Speicheranbieter, der erzeugten Meta-Daten für die erste Datei. Das Verfahren umfasst ferner das Auswählen, durch den Speicherverwalter in Reaktion auf eine Speicherregel, die zu dem Client-Gerät gehört, eines zweiten Cloud-Speicheranbieters; das Senden, durch den Speicherverwalter, zu dem Client-Gerät, einer Identifizierung des zweiten Cloud-Speicheranbieters, wobei der Empfang der Identifizierung des zweiten Cloud-Speicheranbieters bewirkt, dass das Client-Gerät die erste Datei an den zweiten Cloud-Speicheranbieter sendet; und Senden, durch den Speicherverwalter an den ersten Cloud-Speicheranbieter, einer Anforderung zum Löschen der ersten Datei.
-
In einigen Implementierungen umfasst das Verfahren das Senden, durch den Speicherverwalter, der erzeugten Meta-Daten an das Client-Gerät. In einigen Implementierungen des Verfahrens umfasst das Senden der Anforderung zum Löschen der ersten Datei ferner das Senden der Anforderung, durch den Speicherverwalter, über das Client-Gerät.
-
In einem weiteren Aspekt betrifft die vorliegende Offenbarung ein System für eine Pipeline-Verarbeitung mittels einer Aggregation von Cloud-Speicherdiensten. Das System umfasst ein Client-Gerät, mit einer Speichereinrichtung und einem Prozessor, der einen Synchronisierungsclient ausführt, wobei das Client-Gerät mit mehreren Cloud-Speicherdiensten in Verbindung steht. Der Synchronisierungsclient ist ausgebildet, eine erste Datei in der Speichereinrichtung zu ermitteln; die erste Datei an einen ersten Cloud-Speicherdienst zu senden, wobei der erste Cloud-Speicherdienst neue Meta-Daten für die erste Datei erzeugt; und die erzeugten Meta-Daten aus dem ersten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste abzurufen. Der Synchronisierungsclient ist ferner ausgebildet, die erste Datei an einen zweiten Cloud-Speicherdienst der mehreren Cloud-Speicherdienste zu senden; und eine Anforderung zum Löschen der ersten Datei an den ersten Cloud-Speicherdienst zu senden.
-
In einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, eine neue oder modifizierte Datei zu erkennen. In einer weiteren Implementierung enthalten die erzeugten Meta-Daten Geo-Positions-Meta-Daten für die Datei oder Gesichtserkennungs-Markierungs-Meta-Daten für die Datei. In einer noch weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet die erste Datei an den ersten Cloud-Speicherdienst und den zweiten Cloud-Speicherdienst vor dem Abrufen der erzeugten Meta-Daten aus dem ersten Cloud-Speicherdienst zu senden. In einer noch weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, die erzeugten Meta-Daten an den zweiten Cloud-Speicherdienst zur Zuordnung zu der ersten Datei zu senden. In noch einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, die erzeugten Meta-Daten an einen dritten Cloud-Speicherdienst zu senden. In einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, die Anforderung zum Löschen der ersten Datei in Reaktion auf das Abrufen, durch den Synchronisierungsclient, der erzeugten Meta-Daten für die erste Datei zu senden. In noch einer weiteren Implementierung ist der Synchronisierungsclient ferner ausgebildet, um eine Warteschlange aus Dateien zum Senden an den ersten Cloud-Speicherdienst zu unterhalten; und für jede Datei der Warteschlange aus Dateien: Senden der besagten Datei an den ersten Cloud-Speicherdienst, wobei der erste Cloud-Speicherdienst neue Meta-Daten für die besagte Datei erzeugt; Abrufen der erzeugten Meta-Daten für die besagte Datei aus dem ersten Cloud-Speicherdienst; und Senden durch den Synchronisierungsclient an den ersten Cloud-Speicherdienst, einer Anforderung zum Löschen der besagten Datei.
-
Recheneinrichtungen
-
12 ist eine Blockansicht einer anschaulichen Recheneinrichtung, die zum Praktizieren der hierin beschriebenen Verfahren und Systeme zweckdienlich ist. Die diversen Einrichtungen 200, 204, 110 können verwendet sein als eine beliebige Art und Form einer Recheneinrichtung und/oder können darin ausgeführt werden, etwa in einem Computer, einer Netzwerkeinrichtung oder einem Gerät, das in der Lage ist, mit einer beliebigen Art und Form von Netzwerk zu kommunizieren und die hierin beschriebenen Operationen auszuführen. Die Recheneinrichtung kann einen Laptop-Computer, einen Tischrechner, eine virtuelle Maschine, die von einem physikalischen Computer ausgeführt wird, einen Tablet-Computer, etwa ein iPad-Tablet, das von Apple Inc. hergestellt ist, oder einen Android-basierten Tablet-Rechner, wie er etwa von Samsung Inc. oder Motorola Inc. hergestellt wird, ein intelligentes Telefon oder einen PDA, etwa ein iPhone/iOS-basiertes intelligentes Telefon, wie es von Apple Inc. hergestellt wird, ein Android-basiertes intelligentes Telefon, etwa Samsung Galaxy oder HTC-Droid- Telefon oder eine andere Art und Form einer Recheneinrichtung umfassen. 12 zeigt eine Blockansicht einer Recheneinrichtung 1200, die zum Praktizieren einer Ausführungsform der Benutzereinrichtungen 100 oder einer Einrichtung eines netzverbundenen Speicher- oder Sicherungsanbieters 114 zweckdienlich ist. Eine Recheneinrichtung 1200 kann eine zentrale Verarbeitungseinheit 1201; eine Hauptspeichereinheit 1202; eine visuelle Anzeigeeinrichtung 1224; eine oder mehrere Eingabe-/AusgabeEinrichtungen 1230a-1230b (die im Allgemeinen unter Verwendung des Bezugszeichens 1230 bezeichnet sind), etwa eine Tastatur 1226, die eine virtuelle Tastatur oder eine physikalische Tastatur sein kann, und/oder eine Zeigereinrichtung 1227, etwa eine Maus, ein Berührungsfeld, oder eine kapazitive oder resistive Einzel- oder Mehr-Berührungs-Eingabeeinrichtung sein kann; und einen Cache-Speicher 1240 in Verbindung mit der zentralen Verarbeitungseinheit 1201 aufweisen.
-
Die zentrale Verarbeitungseinheit 1201 ist eine beliebige Logikschaltung, die auf Befehle reagiert und Befehle verarbeitet, die aus der Hauptspeichereinheit 1202 und/oder dem Speicher 1228 abgerufen werden. Die zentrale Verarbeitungseinheit kann durch eine Mikroprozessoreinheit bereitgestellt werden, etwa: solche, die von der Intel Corporation, Santa Clara, Kalifornien; hergestellt werden; solchen, die von Motorola Corporation. Schaumburg, Illinois, hergestellt werden: solche, die von Apple Inc., Cupertino, Kalifornien hergestellt werden oder einem anderen Einzel- oder Mehrkernprozessor oder einem anderen Prozessor, der in der Lage ist, in der hierin beschriebenen Weise zu arbeiten, oder eine Kombination aus zwei oder mehr Einzel- oder Mehrkernprozessoren. Die Hauptspeichereinheit 1202 kann einen oder mehrere Speicherchips repräsentieren, die in der Lage sind, Daten zu speichern, und den direkten Zugriff auf eine beliebige Speicherstelle durch den Mikroprozessor 1201 ermöglicht, etwa in Form eines Speichers mit wahlfreiem Zugriff (RAM) einer beliebigen Art. In einigen Ausführungsformen umfasst die Hauptspeichereinheit 1202 einen Cache-Speicher oder andere Speicherarten.
-
Die Recheneinrichtung 1200 unterstützt eine geeignete Installationseinrichtung 1216, etwa ein Diskettenlaufwerk, ein CD-ROM-Laufwerk, ein CD-R/RW-Laufwerk, ein DVD-ROM-Laufwerk, Bandlaufwerke diverser Formate, USB/Flash-Geräte, eine Festplatte oder eine andere Einrichtung, die zum Installieren von Software und Programmen, etwa eines Sicherungsagenten oder eines Client-Agenten 1220, eines Sicherungsverwalters oder eines Teils davon geeignet ist. Die Recheneinrichtung 1200 umfasst ferner eine Speichereinrichtung 1228, etwa ein oder mehrere Festplattenlaufwerke oder redundante Arrays aus unabhängigen Laufwerken, um ein Betriebssystem und andere dazugehörige Software zu speichern und Anwendungssoftwareprogramme zu speichern, etwa ein Programm, das in Zusammenhang mit dem Sicherungsverwalter oder Sicherungsagenten 1220 steht.
-
Ferner kann die Recheneinrichtung 1200 eine Netzwerkschnittstelle 1218 zur Verbindung mit einem Nahbereichs-Netzwerk bzw. lokalen Netzwerk (LAN), einem Weitbereichs-Netzwerk (WAN) oder dem Internet über eine Vielzahl von Verbindungen aufweisen, mit, ohne darauf eingeschränkt zu sein, standardmäßigen Telefonleitungen, LAN- oder WAN-Verbindungen (beispielsweise Ethernet, T1, T3, 56 kb, X.25), Breitbandverbindungen (beispielsweise ISDN, Frame Relay, ATM), drahtlose Verbindungen (802.11a/b/g/n/ac, Bluetooth), Funkverbindungen oder eine gewisse Kombination einiger oder aller der zuvor genannten Verbindungen. Die Netzwerkschnittstelle 1218 kann einen eingebauten Netzwerkadapter, eine Netzwerkschnittstellenkarte, eine PCMCIA-Netzwerkkarte, einen Kartenbus-Netzwerkadapter, einen Drahtlos-Netzwerkadapter, einen USB-Netzwerkadapter, ein Funkmodem oder ein anderes geeignetes Gerät umfassen, um die Computereinrichtung 1200 mit einer beliebigen Art von Netzwerk zu verbinden, das zur Kommunikation und zur Ausführung der hierin beschriebenen Operationen geeignet ist.
-
Es kann eine Fülle von I/O-Einrichtungen 1230a-1230n in der Recheneinrichtung 1200 vorhanden sein. Eingabevorrichtungen umfassen Tastaturen, Mäuse, Bahnverfolgungsflächen, Bahnverfolgungskugeln, Mikrofone, Zeichen-Tablets und Einzel- oder Mehr-Berührungsbildschirme. Ausgabeeinrichtungen umfassen Videoanzeigen, Lautsprecher, Kopfhörer, Tintenstrahldrucker, Laserdrucker und Farb-Sublimationsdrucker. Die I/O-Einrichtungen 1230 können durch eine I/O-Steuerung 1223 gesteuert werden, wie in 12 gezeigt ist. Die I/O-Steuerung kann eine oder mehrere I/O-Einrichtungen, etwa eine Tastatur 1226 und eine Zeigereinrichtung 1227, beispielsweise eine Maus, einen optischen Stift oder einen Bildschirm mit Mehrfachberührung, steuern. Ferner kann eine I/O-Einrichtung auch Speicherplatz 1228 und/oder ein Installationsmedium 1216 für die Recheneinrichtung 1200 bereitstellen. Die Recheneinrichtung 1200 kann USB-Verbindungen bereitstellen, um tragbare USB-Speicherhandeinrichtungen, etwa das USB-Flash-Laufwerk der Produktlinie, die von Twintech Industry, Inc. aus Los Alamitos, Kalifornien hergestellt werden.
-
Die Recheneinrichtung 1200 kann ferner mehrere Anzeigeeinrichtungen 1224a-1224n aufweisen oder damit verbunden sein, die von gleicher oder unterschiedlicher Art und/oder Form sein können. Jede der I/O-Einrichtungen 1230a-1230n und/oder die I/O-Steuerung 1223 können jeweils eine beliebige Art und/oder Form geeigneter Hardware, Software, die auf einem nicht-flüchtigen Medium eingebettet ist oder eine Kombination aus Hardware und Software aufweisen, um ihre Verbindungsfähigkeit und die Nutzung mehrerer Anzeigeeinrichtungen 1224a-1224n durch die Recheneinrichtung 1200 bereitzustellen, zu ermöglichen und zu unterstützen. Beispielsweise kann die Recheneinrichtung 1200 eine beliebige Art und/oder Form eines Videoadapters, einer Videokarte, eines Treiber und/oder einer Bibliothek zum Verbinden, Kommunizieren, Anschließen oder anderweitigen Nutzung der Anzeigeeinrichtungen 1224a-1224n aufweisen. Ein Videoadapter kann mehrere Verbinder aufweisen, um mit mehreren Anzeigeeinrichtungen 1224a-1224n in Verbindung zu treten. Die Recheneinrichtung 1200 kann mehrere Videoadapter aufweisen, wobei jeder davon mit einer oder mehreren der Anzeigeeinrichtungen 1224a-1224n verbunden ist. Ein beliebiger Teil des Betriebssystems der Recheneinrichtung 1200 kann für die Verwendung mehrerer Anzeigen 1224a-1224n ausgebildet sein. Ferner können eine oder mehrere der Anzeigeeinrichtungen 1224a-1224n durch eine oder mehrere andere Recheneinrichtungen bereitgestellt werden, etwa Recheneinrichtungen 1200a und 1200b, die mit der Recheneinrichtung 1200 beispielsweise über ein Netzwerk verbunden sind. Diese Ausführungsformen können eine beliebige Art an Software mit einschließen, die auf einem nicht-flüchtigen Medium eingebettet ist, das so gestaltet und aufgebaut ist, dass jede weitere Anzeigeeinrichtung des Computers als eine zweite Anzeigeeinrichtung 1224a für die Recheneinrichtung 1200 nutzbar ist. Der Fachmann erkennt, dass diverse Arten und Ausführungsformen, gemäß denen eine Recheneinrichtung 1200 ausgebildet sein kann, mehrere Anzeigeeinrichtungen 1224a-1224n aufweisen können.
-
Eine Recheneinrichtung 1200 der Art, wie sie in 12 dargestellt ist, arbeitet typischerweise unter der Steuerung eines Betriebssystems, etwa eine der Versionen der Microsoft Windows-Betriebssysteme, den unterschiedlichen Ausgaben der Unix- und Linux-Betriebssysteme, einer beliebigen Version des Mac OS für Macintosh-Computer, und einem beliebigen eingebetteten Betriebssystem, einem Echtzeit-Betriebssystem, oder einem Betriebssystem mit offenem Quellcode, einem anwendungsspezifischen Betriebssystem, beliebigen Betriebssystemen für mobile Recheneinrichtungen oder einem anderen Betriebssystem, das in der Lage ist, die Recheneinrichtung zu betreiben und die hierin beschriebenen Operationen auszuführen.
-
Die Recheneinrichtung 1200 kann unterschiedliche Prozessoren, Betriebssysteme und Eingabeeinrichtungen, die mit der Einrichtung verträglich sind, aufweisen. Beispielsweise ist in einer Ausführungsform der Computer 1200 ein Apple iPhone oder ein Motorola Droid Telefon oder ein Apple iPad oder ein Samsung Galaxy Tab Tablet-Computer, in denen Berührungsbildschirme mit Mehrfacheingabe enthalten sind. Ferner kann die Recheneinrichtung 1200 ein beliebiger Arbeitsplatzrechner, ein Tischrechner, ein Laptop- oder ein Notebook-Computer, ein Server, ein Hand-Computer, ein Mobiltelefon oder ein anderer Computer oder eine andere Form einer Rechen- oder Telekommunikationseinrichtung sein, die in der Lage ist, zu kommunizieren und die ausreichend Prozessorleistung und Speicherkapazität hat, um die hierin beschriebenen Operationen auszuführen.
-
Zu beachten ist, dass die zuvor beschriebenen Systeme mehrere, einige oder jede der Komponenten bereitstellen können, und diese Komponenten können in einer autarken Maschine oder in einigen Ausführungsformen in mehreren Maschinen in einem verteilten System vorgesehen sein. Die zuvor beschriebenen Systeme und Verfahren können als ein Verfahren, eine Vorrichtung oder ein Herstellungsprodukt unter Anwendung von Programmier- und/oder Entwicklungstechniken implementiert werden, um Software zu erzeugen, die in einem nicht-flüchtigen Medium eingebettet ist, oder unter Anwendung von Firmware, Hardware oder einer beliebigen Kombination davon eingerichtet sein. Ferner können die zuvor beschriebenen Systeme und Verfahren als ein oder mehrere computerlesbare Programme bereitgestellt werden, die in einem oder mehreren Herstellungsprodukten enthalten sind. Der Begriff „Herstellungsprodukt“, wie er hierin verwendet ist, soll Code oder Logik mit einschließen, der bzw. die in einer oder mehreren computerlesbaren Einrichtungen, in Firmware, programmierbarer Logik, Speichereinrichtungen (beispielsweise EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.) zugreifbar ist, Hardware (beispielsweise ein integrierter Schaltungschip, ein feldprogrammierbares Gatterarray (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) etc.), elektronische Einrichtungen, eine computerlesbare nicht-flüchtige Speichereinheit (beispielsweise ein CD-ROM, ein Diskettenlaufwerk, ein Festplattenlaufwerk, etc.). Das Herstellungsprodukt kann aus einem Dateiserver aus ansprechbar sein, der Zugang auf die computerlesbaren Programme über eine Netzwerkübertragungsleitung, über drahtlose Übertragungsmedien, über Signale, die sich im Raum ausbreiten, über Funkwellen, Infrarotsignale und dergleichen bietet. Das Herstellungsprodukt kann eine Flash-Speicherkarte oder ein Magnetband sein. Das Herstellungsprodukt umfasst Hardware-Logik sowie Software oder programmierbaren Code, die in einem computerlesbaren Medium enthalten sind, und die von einem Prozessor ausgeführt werden. Im Allgemeinen können die computerlesbaren Programme in einer beliebigen Programmiersprache implementiert sein, etwa LISP, PERL, C, C++, C#, PROLOG oder eine beliebige Byte-Code-Sprache, etwa JAVA. Die Softwareprogramme können in einem oder mehreren Herstellungsprodukten als Objektcode gespeichert sein.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 15/155998 [0001]
- US 15/156014 [0001]
- US 15/156025 [0001]