Zvykl jsem si u rsync v remote zálohovacích skriptech používat parametr
--append-verify, jednak pro navázání po případnym přerušení spojení, ale taky aby v takových případech nezůstaly v destinaci ležet skryty nedokončeny fragmenty.
Jenže teď sem si všiml, že se v určité situaci nechová, jak bych čekal.
Pokud se nějaký soubor nepřenesl úplně, v pořádku, naváže se.
Pokud se nějaký soubor změnil a zvětšil se, celkem v pořádku, rsync provede kontrolu obsahu, všimně si změny a přenese ho znova (akorát při tom huláká varování, i když to měl čekat, když má zdroj novější timestamp).
ALE: Pokud se soubor změní, s tím že se jeho velikost nezmění nebo se zmenší, tak ho rsync nepřenese
(přestože má novější timestamp)
Když odstraním parametr
--append-verify, tak vše probíhá normálně a změna se nasynchronizuje.
Nejradši bych, aby rsync zároveň navazoval (s kontrolou dosavadního obsahu), ale taky zároveň nerezignoval na kontrolu timestampu, což teď zjevně dělá. Zatím asi jako workaround ho po dokončení s
--append-verify zavolám znova bez něj...
Používám rsync 3.1.0
Vypadá to teda, že ten parametr se má používat jenom po přerušenym spojení, a ne běžně, protože pak ignoruje timestampy. Ale i tak je to problém, pokud při přerušenym přenosu nedošla řada na nějaky další soubory a cíl nebyl prázdnej, tak už je s tím appendem bude posuzovat jinak (IMO špatně).
Je to očekávané chování, nebo bug? (Kdyžtak nareportuju). Osobně bych předpokládal, že i s
--append-verify, pokud si všimne že má zdroj novější timestamp, tak normálně změněný soubor přenese. Obyčejnej
--append se chová podobně, akorát samozřejmě selže i v případě zvětšení - na novější timestamp na zdroji ale kašle úplně stejně.
Demonstrace:
Tom@HP-ProBook-TK~/temp/rsync_append> mkdir src && mkdir dest && echo aaa > src/a.txt
Tom@HP-ProBook-TK~/temp/rsync_append> rsync -a -v -h --append-verify src/ dest/
sending incremental file list
a.txt
sent 122 bytes received 35 bytes 314.00 bytes/sec
total size is 4 speedup is 0.03
Tom@HP-ProBook-TK~/temp/rsync_append> cat src/a.txt dest/a.txt
aaa
aaa
Tom@HP-ProBook-TK~/temp/rsync_append> echo aba > src/a.txt
Tom@HP-ProBook-TK~/temp/rsync_append> rsync -a -v -h --append-verify src/ dest/
sending incremental file list
sent 74 bytes received 12 bytes 172.00 bytes/sec
total size is 4 speedup is 0.05
Tom@HP-ProBook-TK~/temp/rsync_append> cat src/a.txt dest/a.txt
aba
aaa
Tom@HP-ProBook-TK~/temp/rsync_append> rsync -a -v -h src/ dest/
sending incremental file list
a.txt
sent 125 bytes received 35 bytes 320.00 bytes/sec
total size is 4 speedup is 0.03
Tom@HP-ProBook-TK~/temp/rsync_append> cat src/a.txt dest/a.txt
aba
aba
Tom@HP-ProBook-TK~/temp/rsync_append> echo abaa > src/a.txt
Tom@HP-ProBook-TK~/temp/rsync_append> rsync -a -v -h --append-verify src/ dest/
sending incremental file list
a.txt
WARNING: a.txt failed verification -- update retained (will try again).
a.txt
sent 177 bytes received 156 bytes 666.00 bytes/sec
total size is 5 speedup is 0.02
Tom@HP-ProBook-TK~/temp/rsync_append> cat src/a.txt dest/a.txt
abaa
abaa