Laden Sie mit rsync nur den geänderten Teil der Datei hoch

Laden Sie mit rsync nur den geänderten Teil der Datei hoch

Ich studiere rsync, um Remote- und lokale Ordner in Windows zu synchronisieren (mit cwrsync). Ich bin mir nicht sicher, ob es möglich ist, nur einen Teil der Änderungen hochzuladen?

Ich habe beispielsweise eine 100 MB große Datei. Ich lade sie zunächst mit dem Befehl hoch:

rsync -a /source/path/ /dest/path/

Dann werde ich einige Änderungen an dieser Datei vornehmen. Wenn ich denselben Befehl erneut ausführe, wird die gesamte 100 MB große Datei erneut hochgeladen. Wie kann ich stattdessen die während des Hochladens an dieser Datei vorgenommenen Änderungen anhängen?

Antwort1

Was Sie brauchen, ist die --inplaceOption.

Ich empfehle Ihnen dringend, den entsprechenden Teil vonrsync-Handbuchund verstehen, was diese Option bedeutet:

--an Ort und StelleDiese Option ändert die Art und Weise, wie rsync eine Datei überträgt, wenn ihre Daten aktualisiert werden müssen: Anstelle der Standardmethode, bei der eine neue Kopie der Datei erstellt und nach Abschluss an den richtigen Platz verschoben wird, schreibt rsync die aktualisierten Daten direkt in die Zieldatei.

Dies hat mehrere Auswirkungen:

  • Hardlinks werden nicht unterbrochen. Das heißt, die neuen Daten sind über weitere Hardlinks zur Zieldatei sichtbar. Darüber hinaus führt der Versuch, unterschiedliche Quelldateien in eine mehrfach verknüpfte Zieldatei zu kopieren, zu einem „Tauziehen“, bei dem sich die Zieldaten hin und her ändern.
  • Im Einsatz befindliche Binärdateien können nicht aktualisiert werden (entweder verhindert das Betriebssystem dies oder Binärdateien, die versuchen, ihre Daten auszulagern, weisen ein Problem auf oder stürzen ab).
  • Die Daten der Datei befinden sich während der Übertragung in einem inkonsistenten Zustand und bleiben in diesem Zustand, wenn die Übertragung unterbrochen wird oder ein Update fehlschlägt.
  • Eine Datei, in die rsync nicht schreiben kann, kann nicht aktualisiert werden. Während ein Superuser jede Datei aktualisieren kann, muss einem normalen Benutzer Schreibberechtigung zum Öffnen der Datei erteilt werden, damit der Schreibvorgang erfolgreich ist.
  • Die Effizienz des Delta-Transfer-Algorithmus von rsync kann reduziert werden, wenn einige Daten in der Zieldatei überschrieben werden, bevor sie an eine spätere Position in der Datei kopiert werden können. Dies gilt nicht, wenn Sie --backup, da rsync intelligent genug ist, die Sicherungsdatei als Basisdatei für die Übertragung zu verwenden.

ACHTUNG: Sie sollten diese Option nicht zum Aktualisieren von Dateien verwenden, auf die andere zugreifen. Seien Sie also vorsichtig, wenn Sie diese Option zum Erstellen einer Kopie verwenden.

Diese Option ist nützlich für die Übertragung großer Dateien mit blockbasierten Änderungen oder angehängten Daten sowie auf Systemen, die festplattengebunden und nicht netzwerkgebunden sind. Sie kann auch dazu beitragen, dass ein Copy-on-Write-Dateisystem-Snapshot nicht den gesamten Inhalt einer Datei mit nur geringfügigen Änderungen verfälscht.

Die Option impliziert--teilweise(da eine unterbrochene Übertragung die Datei nicht löscht), sondern kollidiert mit--partial-dirUnd --delay-updatesVor rsync 2.6.4--an Ort und Stellewar auch unvereinbar mit--compare-destUnd--link-dest.

Möglicherweise sind Sie auch an der Option interessiert, --appendnur --append-verifyDateien zu vergrößern.

Antwort2

Sie verwenden rsync, um von einem Verzeichnis in ein anderes Verzeichnis zu kopieren - Die Option--ganze Dateigilt dann:

-W, --whole-fileMit dieser Option wird der Delta-Transfer-Algorithmus von rsync nicht verwendet, sondern die gesamte Datei wird so gesendet, wie sie ist. Die Übertragung kann schneller sein, wenn diese Option verwendet wird, wenn die Bandbreite zwischen Quell- und Zielcomputer höher ist als die Bandbreite zur Festplatte (insbesondere, wenn die „Festplatte“ tatsächlich ein vernetztes Dateisystem ist).Dies ist die Standardeinstellung, wenn sowohl die Quelle als auch das Ziel als lokale Pfade angegeben sind, jedoch nur, wenn keine Option zum Stapelschreiben aktiviert ist.

Sie müssen rsync auf einer Seite im Daemon-Modus starten, um den Rsync-Algorithmus mit Delta-Übertragungen auszulösen.

verwandte Informationen