Portál AbcLinuxu, 27. dubna 2024 05:05

rsync, který pozná přejmenované a přesunuté soubory

1.6.2014 21:16 | Přečteno: 1973× | Tipy | Výběrový blog | poslední úprava: 3.6.2014 07:27

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
make
Pokud 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.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (4) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

David Watzke avatar 1.6.2014 21:18 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované soubory
Odpovědět | Sbalit | Link | Blokovat | Admin
Příloha:
V příloze gentoo ebuild připraven pro rozbalení v rootu overlaye. Je potřeba zamaskovat nové verze rsyncu, aby se použila ta správná (na stable gentoo to teď bude fungovat i bez toho).

Něco jako:
echo '>net-misc/rsync-3.0.9-r99' >> /etc/portage/package.mask
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 2.6.2014 07:03 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované soubory
Příloha:
A zde v příloze ještě slibovaný PKGBUILD pro Arch. V /etc/pacman.conf je potřeba přidat rsync do proměnné IgnorePkg, aby jej pacman neaktualizoval.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Nicky726 avatar 14.6.2014 13:36 Nicky726 | skóre: 56 | blog: Nicky726
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované soubory
Díkes, trochu jsem upravil a hodil na AUR.

Toto se hodí, neb s fotkama během zpracování celkem šoupu, a když jsem nedávno posílal změny ze své ADSL, bylo to na celou noc, přitom řada operací bylo vlastně přesunutí souboru.
Enjoy the detours. There you’ll find the things more important than what you want. (Hunter x Hunter)
David Watzke avatar 2.6.2014 07:44 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované soubory
Příloha:
Ještě balík pro debian wheezy (stable) @ amd64. Pouze jsem mu zvednul revizi. Pro zabránění aktualizaci (v budoucnu, prozatím žádná není) by mělo stačit pod rootem pustit aptitude hold rsync.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
1.6.2014 21:20 jarmil
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované soubory
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkný, pěkný, pěkný.
2.6.2014 06:06 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Proč patch není začleněn?
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdá se, že lidi ze samby tahle funkce moc nepálí (chyby 2294, 8847).
David Watzke avatar 2.6.2014 07:06 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Proč patch není začleněn?
Bohužel je to tak, moc to nechápu, protože je to geniální feature.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.6.2014 17:29 kolcon | skóre: 15 | blog: kolcon
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované a přesunuté soubory
Odpovědět | Sbalit | Link | Blokovat | Admin
presne tohle umi unison, ktery rsync pouziva pro prenosy...
3.6.2014 16:35 DIK
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované a přesunuté soubory
Odpovědět | Sbalit | Link | Blokovat | Admin
Super, často jsem v duchu nadával, že to rsync neumí... ještě tak najít pěkné udržované repo pro Centos, ale to už bych chtěl asi moc :-) DIK
David Watzke avatar 3.6.2014 18:44 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované a přesunuté soubory
Ode mě asi jo, protože CentOS používám akorát v práci a tam tuhle vlastnost rsyncu nepotřebujeme. Ale může vytvořit někdo jiný :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
jose17 avatar 6.6.2014 20:50 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: rsync, který pozná přejmenované a přesunuté soubory
Odpovědět | Sbalit | Link | Blokovat | Admin
este keby to tak vedelo duplicity, prip. rdiff-backup..
Ja vim, on vi, ty nano!

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.