Pokročilé zálohování s Rsync

Milan Bárta 30. 7. 2007

Ze všech stran stále slýcháme, že nejlepší způsob, jak se vyhnout nečekané ztrátě dat, je zálohovat, zálohovat a ještě jednou zálohovat. A proto se dnes podíváme na to, jak s pomocí propracovaného nástroje rsync provádět zálohy s mnoha rozsáhlými možnostmi. Jak se přesně používá? K čemu se hodí nejlépe?

Co je to rsync?

Rsync je aplikace pro unixové systémy, která dokáže synchronizovat soubory a složky z jednoho umístění do jiného. Přitom, pokud je to možné, minimalizuje objem přenášených dat pomocí delta encodingu.

Rsync by měl být s největší pravděpodobností součástí výchozí instalace vaší distribuce. Pokud tomu tak není, nainstalujte ho z balíčku pro vaši distribuci nebo použijte zdrojové kódy z webové stránky projektu k sestavení.

Výhody rsync

Rsync má např. oproti klasickému nástroji z balíku GNU utilit cp několik výhod. Tou nejvýraznější je pravděpodobně optimalizace velikosti přenášených dat. Rsync k tomuto používá speciální algoritmus, vyvinutý australským programátorem Andrewem Tridgellem, který zefektivní přenos struktury (jako např. souboru) přes komunikační linku, když má cílový počítač již jinou verzi stejné struktury. Platí to však také pro lokální kopírování. Stručně a srozumitelně řečeno: rsync, pokud je to možné, nekopíruje celé soubory, ale jen rozdíly mezi nimi. Z toho samozřejmě plyne, že se celý proces kopírování značně urychlí.

Další výhody rsync jsou např. zachování oprávnění a vlastnické informace souborů, kopírování symbolických odkazů, atd. Při přenosu je také možné zapnout kompresi dat, což je výhodné zejména při zálohování přes síť.

Základy práce s rsync

Základní syntaxe rsync je jednoduchá: rsync [volby] A B, kde A je zdrojový adresář (soubor) a B je cílový adresář (soubor). Pokud tedy chcete zálohovat adresář se svými dokumenty z domovského adresáře na jiný disk, použijte příkaz podobný tomuto:

$ rsync -av /home/uzivatel/dokumenty /mnt/zaloha/

V příkladu jsem použil dvě volby. Volba -a zajistí to, že rsync bude pracovat v archivačním módu. To znamená, že u kopírovaných souborů zachová oprávnění a vlastnické informace, zkopíruje symbolické odkazy, soubory zařízení, atd. Volba -v, jak je zvykem, nastavuje množství vypisovaných informací. Lze ji použít až třikrát, kdy -v vypisuje jen několik základních informací o prováděných činnostech, volba -vv poskytne o něco více informací a -vvv vás detailně informuje o všech činnostech, které rsync právě provádí, i když pak už výpis není tak přehledný.

Další důležitou volbou je zajisté --exclude. Představte si, že zálohujete svůj /etc adresář. Nechcete ale do zálohy zařazovat např. soubory s koncovkou bak. Použijete tedy příkaz

$ rsync -av --exclude="*.bak" /etc /mnt/zalohy/

Ten zajistí, že tyto soubory budou ze zálohovacího procesu vyřazeny.

Lokální záloha

S rsync můžete samozřejmě provádět lokální zálohy. Zálohy mohou být ukládány např. na externí disk, flash disk, ale také do adresáře na obyčejném oddílu pevného disku. Rsync ale kvůli svému přístupu ke kopírování dat není vhodný pro ukládání na zařízení s magnetickým lineárním zápisem. K tomu se spíš hodí nástroje dump nebo tar, které zajistí, že se k datům bude přistupovat lineárně.

Řekněme, že si chci zálohovat fotky z dovolené z adresáře /mnt/data/fotky-dovolena/ na svůj externí disk. Provedu to příkazem, který jsme si již vysvětlovali:

$ rsync -av /mnt/data/fotky-dovolena /mnt/sda1/

Potom ale přijedou známí, kteří se mnou byli na dovolené, a dovezou svoje fotky. Některé jejich se mi líbí více, a proto jejich fotky přidám do své složky a některé moje smažu. Znovu chci zálohovat na svůj externí disk. Kdybych použil stejný příkaz jako posledně, nové fotky od známých by se přidaly k mým starším, ale ty, které jsem smazal, by tam zůstaly také. Kvůli těmto situacím rsync obsahuje volbu --delete, která zajistí, že se z cílové složky odstraní soubory, které již ve zdrojové složce neexistují. Pak příkaz bude vypadat nějak takto:

$ rsync -av --delete /mnt/data/fotky-dovolena /mnt/sda1/

Tuto volbu ale používejte velice opatrně. S její pomocí lze smazat gigabajty dat během několika vteřin, čehož byste mohli později litovat. Raději nejdříve celý proces zálohy spusťte s volbou --dry-run, díky které zjistíte, jak bude záloha probíhat, aniž by se jakékoliv soubory někam kopírovaly, přesouvaly nebo se mazaly.

Pro obnovení dat ze zálohy neexistuje žádný speciální příkaz. Stačí jenom prohodit cílovou a zdrojovou složku v příkazu rsync. Dobře si zde rozmyslete použití volby --delete. Ta by mohla způsobit ztrátu některých dat vytvořených po posledním zálohování. Pokud je to možné, tato data odděleně zálohujte a po obnovení ze zálohy je znovu zařaďte.

Při psaní cesty složky, kterou hodláte zálohovat, dávejte pozor na koncové lomítko. Rsync totiž jeho přítomnost a nepřítomnost chápe rozdílně. Pokud ho nenapíšete, kopíruje se zadaná složka i s jejím obsahem. Příkaz by vypadal takto:

$ rsync -av /home /mnt/zaloha

Pokud ale lomítko na konci cesty zadáte, rsync zkopíruje pouze obsah složky. Následující příkaz bez koncového lomítka:

$ rsync -av /home/ /mnt/zaloha/

tedy zkopíruje do složky /mnt/zaloha pouze složky jednotlivých uživatelů, kdežto rsync -av /home /mnt/zaloha/ je zkopíruje i s adresářem /home.

Vzdálená záloha

Co když budete chtít kopírovat svá data přes síť na vzdálený počítač? S rsync to není žádný problém. Rsync jako výchozí možnost nabízí přenos dat mezi dvěma počítači přes daemona rsyncd. Ten je sice rychlý, ale přenášená data nešifruje. Proto se podíváme na to, jak data posílat pomocí SSH (zabezpečeného shellu), který sice není tak rychlý jako rsyncd, ale vaše data se s jeho pomocí přenáší zašifrovaná, takže nikdo nepovolaný nemůže zjistit, jaké informace přenášíte.

Příkaz, který k přenosu použijeme může být podobný tomuto:

$ rsync -ave ssh --delete /mnt/data/fotky-dovolena user@remotehost.cz:/mnt/data/

Pokud chcete vědět jak rychle přenos probíhá a za jak dlouho proces skončí, přidejte k příkazu volbu --progress. To je vhodné, pokud proces zálohování spouštíte ručně a kontrolujete jeho průběh. Pokud se ale spouští zálohování automaticky (viz níže), není tato volba potřeba. Data můžete samozřejmě také kopírovat zpět. Třeba takto:

$ rsync -ave ssh user@remotehost.cz:/mnt/data/fotky-dovolena /mnt/data/

Pokud disponujete pomalým připojením nebo prostě chcete ušetřit nějaké ty bajty, měli byste zapnout volbu --compress nebo kratší -z. S touto volbou bude rsync komprimovat přenášené soubory a tím redukovat množství dat přenášených po síti. Míru koprese lze nastavit pomocí volby --compress-level=NUM. Za NUM dosadíte celé číslo, nula vypne kompresi.

Automatizace

Řekněme, že chcete vytvářet denní zálohy celého kořenového adresáře. To by znamenalo každý den nejlépe ve stejnou dobu spouštět stále stejný příkaz, který by to obstaral. Koho by to ale bavilo, že? Naštěstí existují různé automatizační nástroje a jedním z nich je také cron. Jak tedy pomocí cronu nastavit automatické každodenní zálohy? Začneme editací crontab. Jako root spustíme příkaz crontab -e a přidáme následující řádku:

00 23 * * * rsync -av --delete / /mnt/zalohy/denni

Díky ní se každý den přesně ve 23:00 spustí zadaný příkaz. Pokud jste náročnější a jednořádkový příkaz vám nestačí, není problém napsat si skript, který pak bude cron spouštět.

Doufám, že jste se z článku dozvěděli něco nového a že (pokud ještě pravidelně nezálohujete) jste poznali, že to nemusí být vůbec složité. Stačí tomu na začátku chvíli věnovat a pak už se o nic nemusíte starat, vše probíhá automaticky. Použití programu popsané v tomto článku by mělo stačit na vytváření plnohodnotných záloh. Pokud ale máte zájem podrobněji zkoumat rozsáhlé možnosti tohoto programu, odkážu vás na manuálové stránky rsync nebo webové stránky projektu. Na závěr bych vám chtěl popřát co nejméně nečekaných výpadků a ztrát dat.

Anketa

Jak zálohujete data?

Našli jste v článku chybu?
Podnikatel.cz: OSA zdražuje poplatky. Zaplatíte o polovinu víc

OSA zdražuje poplatky. Zaplatíte o polovinu víc

Lupa.cz: Co vzal čas: internetové kavárny a herny

Co vzal čas: internetové kavárny a herny

Podnikatel.cz: Podnikají v Česku s Japonskem za zády

Podnikají v Česku s Japonskem za zády

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Vitalia.cz: Rybí tatarák – z lososa i z kapra

Rybí tatarák – z lososa i z kapra

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Vitalia.cz: Je bílý kokos fakt tak úžasný? Ano, je!

Je bílý kokos fakt tak úžasný? Ano, je!

Podnikatel.cz: Youtuber? Za 15 tisíc dělat nebude

Youtuber? Za 15 tisíc dělat nebude

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

DigiZone.cz: Ultra HD: TV vysílání budoucnosti

Ultra HD: TV vysílání budoucnosti

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

DigiZone.cz: Test TV Samsung UE49K6372SU

Test TV Samsung UE49K6372SU

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

Vitalia.cz: Domácí limonády: Někde ovoce, jinde šťáva za pade

Domácí limonády: Někde ovoce, jinde šťáva za pade

Root.cz: Xiaomi má vlastní notebook podobný Macu

Xiaomi má vlastní notebook podobný Macu

DigiZone.cz: ČTÚ zveřejnil aktualizovaný D-Book

ČTÚ zveřejnil aktualizovaný D-Book

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá