Nedávno jsem potřeboval aktualizovat ISO obraz RC verze Ubuntu a nechtělo se mi jej stahovat celý znovu. Hledal jsem proto postup, který by mi umožnil aktualizaci. Použil jsem rsync.
Když jsem nedávno připravoval článek o novém Ubuntu 9.04 Jaunty Jackalope, stáhl jsem si nejnovější vývojářskou verzi, kterou jsem pak testoval. Napsat takový článek je totiž běh na delší trať, znamená to instalaci, pořizování videí, obrázků, testování různých částí a podobně a proto je třeba stahovat a pracovat s předstihem.
Později jsem ale potřeboval ostrou verzi Jaunty kvůli instalaci na notebook mé švagrové. Když už jsem měl na disku podobný ISO obraz, nechtělo se mi celé médium stahovat znovu. Přestože je to z dnešního pohledu nějakých nepatrných 700 MB, není nutné za všech okolností vytěžovat servery.
Hledal jsem proto způsob, jak obraz jen „aktualizovat“. Logické mi přitom přišlo použití nástroje rsync, který umí kontrolovat bloky souboru na obou stranách (u klienta a serveru) a poslat jen změny. Skutečně to funguje, protože velké množství zrcadel Ubuntu provozuje také rsync server, takže je možno je takto využít.
Samotná akce je potom poměrně snadná. Stačí lokální ISO soubor přejmenovat tak, aby se jmenoval naprosto stejně, jako soubor nový, tedy ten, který „budeme stahovat“.
$ mv ubuntu-9.04-rc-desktop-i386.iso ubuntu-9.04-desktop-i386.iso
Pak stačí jen zvolit příslušný server a nechat rsync
, aby provedl synchronizaci:
$ rsync -zhhP rsync://ucho.ignum.cz/ubuntu-releases/.pool/ubuntu-9.04-desktop-i386.iso .
Začne stahování a stáhne se opravdu jen to, co se změnilo. Pak doporučuji ještě stáhnout z některého zrcadla MD5SUMS a podívat se, jestli sedí kontrolní součty. Mimochodem stejný postup doporučuji i v případě, že se vám klasickým způsobem nepodaří stáhnout nepoškozené ISO. Nemusíte tahat znovu, jen si ho necháte pomocí rsync
opravit.
Nějaké tipy a triky
Hledat správný mirror a cestu ke konkrétnímu souboru, nemusí být vždycky sranda. Doporučuji začít na seznamu CD zrcadel a najít si český server podporující rsync. Na něm začněte hledat ISO.
Pokud chcete vylistovat adresář, stačí zavolat
$ rsync rsync://server.neco.cz/
Tedy bez konkrétního souboru. Příkaz vám vypíše adresář. Poslední (a vážný) problém nastává u symlinků. Rsync je standardně nastaven tak, že vám symlink nestáhne a dozvíte se jen, že skipping non-regular file
. Doporučuji pak přidat parametr --links
, který vám řekne, kam vede onen link (kterých jsou Ubuntu mirrory plné!) a který soubor máte skutečně stahovat.
Všimněte si v příkladu výše, správný soubor byl v podadresáři .pool
(ano, s tečkou). Kdo by ho tam hledal? Já ne a poradil až právě symlink. Symlink od reálného souboru poznáte tak, že má na serveru jen pár bajtů, namísto očekávaných 700 MB. Ve výpisu adresáře vám to rsync jasně řekne.
Tak hezkou rsynchronizaci…
[4] Já myslím, že to Stano pochopil velmi dobře. Naráží na to, na co se ptá hodně lidí, včetně mě: proč nevycházejí průběžné opravy vydání jednotlivých Ubuntu. Aneb když si stáhnu konkrétní verzi za tři měsíce od vydání, přijede mi po instalaci 200 MB aktualizací. Kdyby se ISO obraz jednou týdně přebalil (nemusela by se ani posunout verze) a přidaly by se do něj opravy, bylo by to pro nového stahovače podstatně příjemnější.
[6] 8.04 vysla i v 8.04.1 a 8.04.2 verzi, takze uz to Canonical pomalu i dela, ale nemuzou si dovolit ten image prebalovat casto, protoze to vyzaduje dalsi testovani.
I kdyz podle mne by klidne mohli davat na ty servery nejaky "unstable" image ktery by vzdy obsahoval prave posledni stable + vsechny oficialni updates, hned jak vyjdou, moc ho nepropagovat a dat k nemu upozorneni ze neni testovany. Sve "zakazniky" by si takovy image urcite nasel, ale obycejni uzivatele by obvykle skoncili nejdriv u "stable".
6: osobne by som bol velmi rad, keby vychadzalo aj ubuntu 8.10.1, 9.04.1 atd... no toto je len pri LTS vydaniach. no co, stava sa... nic nie je dokonale :)
tu su riesenim neoficialne vydania. nie je problem zobrat ubuntu, nahodit aktualizacie, pridat a odobrat nejake programy a hotovo.
Inak Petr, ponukam pre Roota urobit po par mesiacoch aktualizovane neoficialne Ubuntu 9.04.1. co povies? :)
[10] Nesouhlasím. Když si nainstaluji systém z originálního (a otestovaného) média a hned se mi čtvrtina balíků přeplácne aktualizacemi, taky mi nikdo výslednou podobu netestuje. Jde tady jenom o opravy chyb, které se stejně vypouštějí do světa a uživatelům instalují. Čili při přebalování ISO obrazu by nebylo třeba testovat o nic víc, než teď. A ani by se nemuselo měnit číslo verze, uživatele se instalace z novějšího obrazu dotkne jen tím, že mu přijede podstatně méně aktualizací - technicky je to ale pořád stejná verze systému (= všech balíků).
Ti co touzi mit hned aktualni instalaci ubuntu, at si stahnou MiniISO a instaluji ze site, viz muj blog- http://www.abclinuxu.cz/blog/RapMan/2009/4/netradicni-instalace-ubuntu
What about ZSYNC? (Client side RSYNC...)
zsync -i ubuntu-9.04-rc-desktop-i386.iso http://psl.ic.cz/zsync/ubuntu-9.04-desktop-i386.iso.zsync
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 112 291×
Přečteno 89 765×
Přečteno 73 160×
Přečteno 58 108×
Přečteno 54 434×