Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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

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?

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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 /ho­me.

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?

       

Školení: Django framework: Struktura a základy vývoje (nejen) webových aplikací

Django je vyspělý webový framework napsaný v jazyce Python, který podporuje extrémně rychlý vývoj společně s dodržováním principů dobrého návrhu. Snaží se co nejvíce automatizovat a drží se principu DRY (z anglického Don't Repeat Yourself — neopakuj se).

  • Instalace potřebného softwaru
  • Programování v Pythonu: příkazy, funkce, datové typy, moduly, objekty, výjimky
  • Struktura aplikace v Djangu
  • Typické záležitosti webových aplikací: Napojení na databázi, zpracování vstupu od uživatele, přihlášení či generování dynamického obsahu.
  • Implementace principu MVC: modely, pohledy (views) a šablony
  • Seznámení s užitečnými komponenty frameworku Django
  • Šikovné praktiky

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,99

Přehled názorů

rsnapshot/rdiff
whoever 30. 7. 2007 00:23
Nový
rdiff-backup
Miroslav Rudisin 30. 7. 2007 00:26
Nový
└ 
Re: rdiff-backup
Žoržo 30. 7. 2007 01:50
Nový
 
├ 
Re: rdiff-backup
anonymní uživatel 30. 7. 2007 09:29
Nový
 
└ 
Re: rdiff-backup
tommy 1. 8. 2007 13:24
Nový
rsync pro lokalni cesty
anonymní uživatel 30. 7. 2007 07:23
Nový
DVD-RAM
بطرس 30. 7. 2007 07:54
Nový
└ 
Re: DVD-RAM
miiicho 30. 7. 2007 11:59
Nový
 
├ 
Re: DVD-RAM
Michal Růžička 30. 7. 2007 14:31
Nový
 
│
└ 
Re: DVD-RAM
miiicho 30. 7. 2007 15:52
Nový
 
│
 
└ 
Re: DVD-RAM
Stanislav Brabec 30. 7. 2007 17:24
Nový
 
└ 
Re: DVD-RAM
anonymní uživatel 30. 7. 2007 15:28
Nový
Kde jsem takový článek už viděl?
Lama 30. 7. 2007 08:53
Nový
Bacula
Tom 30. 7. 2007 09:00
Nový
Super, dobry clanok
Sancho 30. 7. 2007 09:03
Nový
pro nás líné
marek 30. 7. 2007 09:59
Nový
rsync pouzivam na Ronje
Clock 30. 7. 2007 10:02
Nový
└ 
Re: rsync pouzivam na Ronje
pkm 1. 8. 2007 13:05
Nový
rsync pouzivam na Ronje
Clock 30. 7. 2007 10:22
Nový
pdumpfs
MeDon 30. 7. 2007 10:33
Nový
Binarni data???
Ondra 30. 7. 2007 10:55
Nový
├ 
Re: Binarni data???
Fik 30. 7. 2007 14:19
Nový
└ 
Re: Binarni data???
neldor 31. 7. 2007 00:40
Nový
zaloha celeho serveru
Hlada 30. 7. 2007 10:59
Nový
HDUP2
Pavel Trubl 30. 7. 2007 11:57
Nový
rsync na menici se data
rom 30. 7. 2007 12:13
Nový
├ 
Re: rsync na menici se data
dave 30. 7. 2007 12:35
Nový
│
└ 
Re: rsync na menici se data
Messa 30. 7. 2007 17:26
Nový
└ 
Re: rsync na menici se data
neldor 31. 7. 2007 00:43
Nový
BackupPC
patrik.ovx 30. 7. 2007 12:59
Nový
FTP
qaws 30. 7. 2007 13:28
Nový
├ 
Re: FTP
Michal Růžička 30. 7. 2007 14:43
Nový
└ 
Re: FTP
Palo 30. 7. 2007 14:49
Nový
 
└ 
Re: FTP
anonymní uživatel 30. 7. 2007 15:01
Nový
rsync & ftp
dan 30. 7. 2007 13:42
Nový
└ 
Re: rsync & ftp
Messa 30. 7. 2007 19:09
Nový
 
├ 
Re: rsync & ftp
wtf ?! 30. 7. 2007 23:44
Nový
 
├ 
Re: rsync & ftp
Sniff 31. 7. 2007 09:45
Nový
 
└ 
Re: rsync & ftp
anonymní uživatel 1. 8. 2007 22:56
Nový
 
 
└ 
Re: rsync & ftp
kretQ 12. 10. 2007 20:11
Nový
psaní scriptů pro automatizaci rsyncu
vencas 2. 8. 2007 16:04
Nový
lftp
ramez 24. 10. 2008 16:50
Nový
kodovani z win klientu na rsyncd
Dejf 27. 11. 2008 17:12
Nový
Ne fotky z adresáře, ale adresář s fotkami
Ash 8. 1. 2010 09:30
Nový
Opět zavádějící
Ash 8. 1. 2010 09:36
Nový
RSync backup s Windows
Lukii 30. 12. 2010 15:54
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem