Wenn Sie dann Änderungen an der 2-GB-Datei auf Computer A vornehmen, was passiert dann?
Es gibt mehrere Möglichkeiten, die Änderung zu erkennen.
Sie könnten Hash der Datei und sehen, ob die Hash unterscheidet (teuer). Dies ist die Methode, die viele MMO-Patcher für Dateiintegritätsprüfungen usw. verwenden.
Das Dateisystem enthält ein Feld, das zuletzt geändert wurde. Die Indizierung der Datei nach Änderungsdatum ist daher relativ kostengünstig. Dann müssen Sie einfach das Verzeichnis regelmäßig abfragen und bei Bedarf aktualisieren.
Bei vielen Betriebssystemen können Sie tatsächlich eine Liste von Dateien / Ordnern abonnieren und über Änderungen benachrichtigt werden, wenn neue Dateien hinzugefügt werden usw.
Dann müssen wir nur die Änderungen senden. Viele Protokolle und Algorithmen unterstützen nur das Senden der Änderungen. Rsync ist ein gut verwendetes Protokoll (und ähnelt wahrscheinlich dem, was Mesh tut), das nur den Unterschied zwischen Computern mit Komprimierung umsetzt, so dass es ziemlich bandbreiteneffizient ist. Das Problem bei großen Dateien ist, dass eine Änderung eine große Kette kleiner Änderungen verursachen kann, die nur schwer effizient zu unterscheiden sind.
Ich bin mir ziemlich sicher, dass Mesh bei der Übertragung zwischen Maschinen sowohl Differenzial als auch Kompression verwendet. Aber es ist ein Closed-Source-Produkt und ich konnte nichts finden, was das bestätigt.
Was passiert auch, wenn ich die 2 GB-Datei in einen Unterordner verschiebe?
In den meisten Fällen müssen Sie die Änderungen erneut herunterladen. Das Programm sieht dies in jeder Hinsicht als Löschen und dann wird eine neue Datei am neuen Speicherort hinzugefügt.
Theoretisch könnten Sie alle Dateien mit einem Hash versehen und prüfen, ob der neue Zusatz bereits gespeichert ist, indem Sie die Hashes vergleichen. Dies wäre ziemlich teuer (zum Beispiel, wenn Sie 1.000 kleine Dateien hinzufügen).