Angenommen, ich habe ein Verzeichnis mit zwei Dateien, die beide identisch und ziemlich groß sind (z. B. jeweils 2 GB). Ich möchte dieses Verzeichnis per Rsync mit einem Remote-Host synchronisieren. So wie ich es verstehe (und ich könnte mich irren), berechnet Rsync Prüfsummen von Dateien. Wenn es zwei Dateien mit derselben Prüfsumme findet, kann es doch sicher einfach die erste Datei kopieren und dann eine lokale Kopie der zweiten Datei auf dem Remote-Host erstellen? Das würde es doch schneller machen, oder?
In einem ähnlichen Zusammenhang: Hasht rsync nicht alle Remotedateien vor dem Kopieren? Wenn es eine andere Datei mit demselben Hash wie eine zu übertragende Datei findet, könnte es eine lokale Kopie auf dem Remotehost erstellen.
Unterstützt rsync so etwas? Gibt es eine Möglichkeit, es einzuschalten? Gibt es ein Tool ähnlich wie rsync, das diese Art von „hashbasierten“ lokalen Kopien erstellt?
Antwort1
In einem ähnlichen Zusammenhang: Hasht rsync nicht alle Remotedateien vor dem Kopieren? Wenn es eine andere Datei mit demselben Hash wie eine zu übertragende Datei findet, könnte es eine lokale Kopie auf dem Remotehost erstellen.
Nein, aberEinklangtut.
Antwort2
Ich glaube nicht, dass es heute ein Produkt gibt, das dies als einzelnes Softwarepaket leisten kann. Es gibt WAN-Optimierer, die dies für Sie erledigen, und dann führen Sie weiterhin RSYNC aus.
Was Sie suchen, ist ein Deduplizierungs-/Reduplikationsprozess. Idealerweise möchten Sie nicht wirklich reduplizieren, sondern lokal deduplizieren und dann RSYNC ausführen. Auf diese Weise kopieren Sie nur Links, anstatt die Dateien auf der anderen Seite zu erweitern.
Antwort3
Wenn Ihre beiden Dateien wirklich identisch sind, müssen Sie eine der Dateien per Rsync synchronisieren und dann außerhalb des Rsync-Prozesses separat eine lokale Kopie auf der Remote-Seite erstellen.
Wenn Sie zwei identische Dateien haben, versucht rsync, beide zu kopieren. Der wichtigste Identifikator ist der Dateiname und nicht die Prüfsumme. (Ich habe das gerade auf meinem Laptop getestet!)
Es wäre jedoch interessant, rsync so zu integrieren, dass einige der von Ihnen erwähnten Dinge erledigt werden ...
Diese sind lesenswert:
Antwort4
Die Option --fuzzykönntetun Sie, was Sie suchen:
Aus der Manpage:
-y, --fuzzy
Diese Option weist rsync an, nach einer Basisdatei für jede fehlende Zieldatei zu suchen. Der aktuelle Algorithmus sucht im selben Verzeichnis wie die Zieldatei nach einer Datei mit identischer Größe und Änderungszeit oder einem ähnlichen Namen. Wenn eine solche Datei gefunden wird, versucht rsync mithilfe der Fuzzy-Basisdatei, die Übertragung zu beschleunigen.
Ist dies nicht der Fall, sollte jemand mit entsprechenden Programmierkenntnissen in der Lage sein, die Option ganz einfach so zu optimieren, dass sie sich wie beschrieben verhält – obwohl das wahrscheinlich nichts ist, woran Sie sich beteiligen möchten!