
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.