Rsync kopiert nur geänderte Dateien; ignoriert Zeitstempel von Dateiänderungen

Rsync kopiert nur geänderte Dateien; ignoriert Zeitstempel von Dateiänderungen

Kann ich rsync unter den folgenden Bedingungen zum Laufen bringen?

if len(f1) != len(f2) then rsync
if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync

Die nächste --checksumOption ist??


Antwort1

Aus der Manpage entnommen rsync:

Beschreibung

Rsync ist ein schnelles und außerordentlich vielseitiges Tool zum Kopieren von Dateien. Es kann lokal, von/zu einem anderen Host über eine beliebige Remote-Shell oder von/zu einem Remote-Rsync-Daemon kopieren. Es bietet eine große Anzahl von Optionen, die jeden Aspekt seines Verhaltens steuern und eine sehr flexible Spezifikation der zu kopierenden Dateimenge ermöglichen. Es ist bekannt für seinen Delta-Transfer-Algorithmus, der die über das Netzwerk gesendete Datenmenge reduziert, indem nur die Unterschiede zwischen den Quelldateien und den im Ziel vorhandenen Dateien gesendet werden. Rsync wird häufig für Backups und Spiegelungen sowie als verbesserter Kopierbefehl für den alltäglichen Gebrauch verwendet.

Rsync findet Dateien, die übertragen werden müssen, mit einem lqquick checkrq-Algorithmus (standardmäßig), dersucht nach Dateien, deren Größe oder deren letzte Änderungszeitpunkt sich geändert hat.Alle Änderungen an den anderen beibehaltenen Attributen (wie durch Optionen angefordert) werden direkt an der Zieldatei vorgenommen, wenn die Schnellprüfung ergibt, dass die Daten der Datei nicht aktualisiert werden müssen.

Das Standardverhalten, wie wir in der Beschreibung sehen können, ist:

  • Kopiertool, das lokal oder remote funktioniert
  • Viele Optionen
  • Standardmäßiger Delta-Transfer-Algorithmus, der nur unterschiedliche Dateisätze überträgt, um die Netzwerknutzung zu reduzieren
  • Weit verbreitetes Tool für Spiegelung und Backups
  • Checkrq-Algorithmus, der unter Bedingung 1 das Gewünschte tut: if len(f1) != len(f2) then rsync
  • Wenn keine Optionen übergeben werden, ist das Ziel das zu beeinflussende Ziel.

Jetzt müssen Sie nur noch nach Optionen suchen, die mit der Prüfsumme zusammenhängen. Suche in den Handbüchern:

-c, --checksum
   This changes the way rsync checks if the files have been changed and are in
   need of a transfer. Without this option, rsync uses a lqquick checkrq that
   (by default) checks if each file's size and time of last modification match
   between the sender and receiver. This option changes this to compare a 128-
   bit checksum for each file that has a matching size. Generating the checksums
   means that both sides will expend a lot of disk I/O reading all the data in
   the files in the transfer (and this is prior to any reading that will be
   done to transfer changed files), so this can slow things down significantly.

Die Beschreibung von --checksumist genau das, was Sie wollen if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync. Es wird eine 128-Bit-Prüfsumme für jede Datei mit passender Größe erstellt.

Aber seien Sie vorsichtig, denn diese Option wird je nach Situation Ihren I/O erheblich erhöhen.

verwandte Informationen