Wednesday, March 14, 2007

rpmsync

rpmsync je bezvadná věc, používám ho na stahování aktualizací pro Mandrivu 2007 a pro udržování zrcadla Mandriva Cookeru (vývojové větve Mandrivy).




Funguje to tak, že si nejdřív stáhne seznam souborů na serveru a podle nich pak přejmenuje místní soubory. A potom nad tím spustí klasický rsync.
Tj. například rpmsync-1.6-1mdv2007.0.noarch.rpm (který mám na disku), přejmenuje na rpmsync-1.7-1mdv2007.0.noarch.rpm (který je na serveru) a pak už stahuje jen části, v nichž se tyto soubory liší.
Dvakrát denně cronem spouštím



rpmsync --delete-limit -vH --exclude-from=/home/hajma/exclude.lst \
rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/devel/cooker/i586/ \
/dokumenty/Mandrivalinux-devel/cooker/i586/



--delete-limit je moje vlastní úprava, inspirovaná smazáním celého zrcadla při změně adresářové struktury. Zas až tak rychlé připojení nemám, tak mě to docela mrzelo.


--exclude-from obsahuje seznam souborů, které aktualizovat nechci, protože vím 100%, že je nepotřebuji a zbytečně zdržují. Obsahuje věci jako
*-l10n-fr-*
*-l10n-ja-*
...
*openoffice*

Na závěr vyplivne rpmsync (resp. rsync, že) zprávu:
Number of files: 15425
Number of files transferred: 153
Total file size: 15648376564 bytes
Total transferred file size: 304897518 bytes
Literal data: 203004952 bytes
Matched data: 101915361 bytes
File list size: 820591
File list generation time: 6.755 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 241216
Total bytes received: 191504554
sent 241216 bytes  received 191504554 bytes  80077.58 bytes/sec
total size is 15648376564  speedup is 81.61

to znamená, že místo 290 MB jsem stahoval pouze 183 MB a navíc získal asi 20 minut, a to se vyplatí.
Kdyby se to podařilo nějak přiohnout, aby se stahovaly jen soubory, které jsou potřeba, dala by se tak i nahradit absence deltarpm, které se v Mandrivě chvíli ohřálo a nejspíš tam ještě nějakou dobu nebude.