Portál AbcLinuxu, 1. května 2025 10:44
Taky vás štve, že rsync nepozná, že se soubor pouze přejmenoval anebo přesunul, a tak ho prostě na destinaci ignoruje/smaže (podle toho zda uvedete --delete
) a začne ho znova přenášet ze zdroje? Existuje na to lék.
Tím lékem je postup popsaný na moderncaveman.org. Je tam patch pro rsync 3.0.9, což sice není poslední verze (to je 3.0.10), ale přidaná hodnota je tak velká, že to je zanedbatelné.
Aby to celé nefungovalo pouze lokálně, musíte logicky provozovat patchovanou verzi rsyncu na obou systémech - na zdrojovém i cílovém, jinak dostanete chybu:
rsync: on remote machine: --detect-renamed: unknown option rsync error: syntax or usage error (code 1) at main.c(1554) [server=3.1.0]protože vzdálený rsync nezná přepínač, který patch přidává. Takže, jak na to?
wget http://www.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz wget http://www.samba.org/ftp/rsync/src/rsync-patches-3.0.9.tar.gz tar zxvf rsync-3.0.9.tar.gz tar zxvf rsync-patches-3.0.9.tar.gz cd rsync-3.0.9 wget 'https://bugzilla.samba.org/attachment.cgi?id=7435' -O patches/detect-renamed.diff patch -p0 <patches/detect-renamed.diff patch -p1 <patches/detect-renamed-lax.diff ./configure makePokud nechcete instalovat (jakože nechcete, protože nejste chlíváci), tak vás bude zajímat binárka
rsync
, která vznikla v aktuálním adresáři. Ta s přepínači --detect-renamed --delete-delay
podporuje požadovanou magii.
Takže pokud si třeba někam zálohujete fotky pomocí:
rsync -rv --delete ~/pics/ remote:/backup/pics/tak až upravený rsync nahodíte na obou strojích, tak můžete zkusit
rsync -rv --detect-renamed --delete-delay ~/pics/ remote:/backup/pics/Když uvedete -v dvakrát (-vv), vypíše vám rsync info o tom co přejmenoval. S přepínačem
--progress
u velkých souborů vidíte, že jsou zpracovávány rychlostí čtení z disku a nikoliv rychlostí přenosu dat ze zdrojového stroje, protože je potřeba jenom spočítat jejich checksum.
V prvním komentáři dodávám ebuild pro Gentoo a v reakci na něj je pak k nalezení PKGBUILD, protože používám pár strojů s Archem. A ještě .deb pro Debian Wheezy (stable) x86_64.
PS: v budoucnu asi zkusím portovat upravený detect-renamed patch pro 3.0.9, aby fungoval s aktuálním rsyncem, protože přece jen není ideální provozovat staré verze software. Mohl bych to zkusit navrhnout do Gentoo jako feature podmíněnou USE-flagem.
Tiskni
Sdílej:
echo '>net-misc/rsync-3.0.9-r99' >> /etc/portage/package.mask
/etc/pacman.conf
je potřeba přidat rsync do proměnné IgnorePkg
, aby jej pacman neaktualizoval.
aptitude hold rsync
.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.