rsync-Zeitvergleich - wie genau ist der Vergleich der geänderten Zeiten?

rsync-Zeitvergleich - wie genau ist der Vergleich der geänderten Zeiten?

Ich führe einige Synchronisierungen mit rsync durch und verwende dazu:

rsync --rLvv --times --size-only 

Für meine erste Synchronisierung. Meine Idee ist jetzt, Folgendes zu verwenden:

rsync --rLvv --times

Zum Synchronisieren von Dateien mit einer neuen Änderungszeit. Mein Problem ist, dass ich nach dem ersten rsync die folgenden Änderungszeiten bei den synchronisierten Dateien sehe:

Fernbedienung$ stat 6080_04_big.mp4
  Datei: `6080_04_big.mp4'
  Größe: 258788267 Blöcke: 505448 IO Block: 4096 reguläre Datei
Gerät: 903h/2307d Inode: 862897 Links: 1
Zugriff: (0644/-rw-r--r--) Uid: ( 2000/ht) Gid: ( 2000/ cust)
Zugriff: 13.08.2010 10:46:20.000000000 -0700
Geändert: 2010-08-12 17:55:08.000000000 -0700
Änderung: 2010-08-13 10:46:20.205721673 -0700
lokales$ stat 6080_04_big.mp4
  Datei: `6080_04_big.mp4'
  Größe: 258788267 Blöcke: 505448 IO Block: 4096 reguläre Datei
Gerät: 902h/2306d Inode: 136015 Links: 1
Zugriff: (0664/-rw-rw-r--) Uid: ( 506/ admin) Gid: ( 506/ admin)
Zugriff: 12.08.2010 20:55:01.482104000 -0400
Ändern: 2010-08-12 20:55:08.468122000 -0400
Änderung: 2010-08-12 21:15:06.952810711 -0400

Die Änderungszeit ist „effektiv“ gleich, aber nur auf die Sekunde genau. Wie ist die Auflösung des Vergleichs hier? Es scheint, dass alles, was bis auf die Sekunde gleich ist, als gleich angesehen wird, aber ich kann keine Dokumente finden, die dies spezifizieren. Weiß das jemand spontan?

Antwort1

Hier beantworte ich meine eigene Frage:

rsync verwendet den Aufruf utime(), der die Änderungszeit einer Datei auf eine Auflösung von 1 Sekunde einstellt. Dateien, die bis auf die Sekunde genau gleich sind, werden also für den Zeitvergleichsteil der Prüfungen von rsync als gleich angesehen.

Antwort2

aus dem rsync-Dokument (rsync.1.md):

0.  `--modify-window=NUM`, `-@`

    When comparing two timestamps, rsync treats the timestamps as being equal
    if they differ by no more than the modify-window value.  The default is 0,
    which matches just integer seconds.  If you specify a negative value (and
    the receiver is at least version 3.1.3) then nanoseconds will also be taken
    into account.  Specifying 1 is useful for copies to/from MS Windows FAT
    filesystems, because FAT represents times with a 2-second resolution
    (allowing times to differ from the original by up to 1 second).

    If you want all your transfers to default to comparing nanoseconds, you can
    create a `~/.popt` file and put these lines in it:

    >     rsync alias -a -a@-1
    >     rsync alias -t -t@-1

    With that as the default, you'd need to specify `--modify-window=0` (aka
    `-@0`) to override it and ignore nanoseconds, e.g. if you're copying
    between ext3 and ext4, or if the receiving rsync is older than 3.1.3.

verwandte Informationen