Hlavní navigace

Zálohujeme s rsnapshot

Zdeněk Hásek 21. 2. 2012

Každý z nás nejspíš někdy slyšel o zálohovacím nástroji rsync, my si dnes ukážeme práci s programem rsnapshot, který ke svému běhu rsync používá, ale zároveň umí i archivovat. Až se vám tedy někdy stane, že budete potřebovat soubor, který jste před 14 dny smazali, s rsnapshotem nebudete mít problém.

Představení

Rsnapshot je zálohovací utilita nejen pro automatizované inkrementální zálohování, která nám umožní obnovit daný soubor nebo i celý operační systém, který jsme zálohovali kdykoliv v minulosti.

Takováto vlastnost se může hodit třeba ve chvíli, když vás zákazník osloví, že si před týdnem smazal soubor a teď ho nutně potřebuje. Vám pak stačí ho jen správným nástrojem obnovit.

Co se skrývá pod kapotou

Rsnapshot je více méně sada skriptů napsaných v jazyce Perl, které využívají nástroje: rsync, OpenSSH, GNU cp, GNU du a BSD logger. Jak už bylo řečeno, rsnapshot používá rsync, stejně tedy jako u zálohy samotným rsyncem se při zálohování dat přenáší pouze rozdíly mezi soubory. Archivace je realizována za pomocí hardlinků, což se dá pokládat za základní výhodu i nevýhodu. Výhoda je, že se díky tomu přístupu šetří místo na disku a nevýhodou může být zpomalení filesystému.

Nastavujeme a lokálně zálohujeme

Rsnapshot je součástí většiny linuxových distribucí, viz výčet na domovské stránce projektu, podle něhož je testován na systémech Debian, Red Hat, Fedora, Solaris, Mac OS X, FreeBSD, OpenBSD, NetBSD a IRIX. Stačí tedy nainstalovat balíček rsnapshot cestou, kterou nabízí náš systém a můžeme směle nastavovat.

Z konfiguračního souboru /etc/rsnapshot.conf nás budou zajímat zejména tyto parametry:

interval    hourly  6
interval    daily   7
interval    weekly  4
interval    monthly 3
snapshot_root   /mnt/backup/
backup  /etc/   localhost/
backup  /home/  localhost/
backup  /var/   localhost/
exclude /var/log/ localhost/

Popis parametrů

  • interval – první hodnota určuje název adresáře a zároveň spouštěcí parametr, druhá hodnota říká, kolik záloh chceme nechat, hodnoty jsou počítané od nuly
  • snapshot_root – adresář, do kterého se bude zálohovat
  • backup – adresář, který chceme zálohovat v našem případě /etc/, druhý parametr udává název adresáře za snapshot_root
  • exclude – vynechané adresáře, opačně funguje parametr include

Pří zadávání hodnot do konfiguračního souboru dbejte na to, aby „volný prostor“ mezi backup /etc/ localhost/ nebyla mezera, ale tabulátor. Pro rsnapshot to totiž není totéž. Správnost syntaxe se dá ověřit příkazem: rsnapshot configtest. Když vám tento příkaz vypíše: „Syntax OK“, zbývá už jen pustit rsnapshot v testovacím režimu rsnapshot -t hourly , který jen vypíše, co zamýšlí dělat.

Další věc, na které byste si mohli vylámat zuby, jsou intervaly a jejich pořadí. Pokud máte nastavený interval hourly jako první a zavoláte kupříkladu daily, nic se nestane a při spuštění stejného příkazu s testovacím parametrem -t vám rsnapshot odpoví:

/mnt/backup/localhost/hourly.6 not present (yet), nothing to copy

Což se stane, protože rsnapshot počítá s tím, že už proběhly všechny předešlé zálohy hourly a chce z nich většinu nalinkovat a přenášet jen to, co se změnilo. Pokud tedy chcete používat kupříkladu jen denní zálohy, bude potřeba interval hourly v konfiguraci zakomentovat.

Když se nám vše povedlo, stačí spustit samotnou zálohu: vybereme si třeba interval hourly: rsnapshot hourly, tedy naše záloha bude v /mnt/backup/localhost/, tato cesta vznikla složením parametrů: snapshot_root a backup. Protože u intervalu hourly máme parametr 7, budou nám vznikat takové adresáře se zálohami:

hourly.0  hourly.1  hourly.2  hourly.3  hourly.4  hourly.5  hourly.6

Při osmé a další záloze se bude archiv automaticky promazávat, nejmladší záloha je vždy označena nulou.

Vzdálené zálohování přes SSH

Protože jsme si v úvodu uvedli modelovou situaci se zálohou serveru, slušelo by se teď ukázat, jak se taková záloha provádí. Rsnapshot funguje vzdáleně přes SSH, pro automatizované zálohování je potřeba mít vytvořenou dvojici SSH klíčů, o jejichž tvorbě jsme už psali v rámci seriálu o OpenSSH. Co se týče konfigurace rsnapshotu, zde stačí odkomentovat a nastavit tyto parametry:

cmd_ssh /usr/bin/ssh
ssh_args        -p 22 -i /cesta/k/ssh/klici

Aby se to nepletlo, mezi 22 a -i je mezera a nikoliv tabulátor. Nyní můžeme opět zavolat naší trojici příkazů: rsnapshot configtest, rsnapshot -t hourly, rsnapshot hourly a máme zálohováno.

Chyby a možné problémy

Zálohování jsem testoval na Fedoře 16 a na CentOS 6. Na Fedoře jsem se s žádným problémem nesetkal, ale CentOS mi při příkazu rsnapshot configtest vyhazoval chybu:

ERROR: /etc/rsnapshot.conf on line 117:
ERROR: logfile /var/log/rsnapshot

Řešení bylo naštěstí triviální, stačilo jít na řádek 117 v konfiguračním souboru a umazat mezeru mezi parametry logfile /var/log/ a nahradit ji tabulátorem.

Více záloh na jednom stroji

Řešení zde popisované, je dělané pouze pro zálohování jednoho serveru. V případě, že chcete mít jeden univerzální zálohovací stroj, který bude na sebe zálohovat serverů více, stačí si jen rozkopírovat konfigurační soubor a v cronu pak volat rsnapshot například takto:

rsnapshot -c /etc/rsnapshot.conf-server1 hourly, rsnapshot -c /etc/rsnapshot.conf-server2 hourly

Porovnání s Rdiff-backup

Rdiff-backup, o kterém se tu už také psalo, má s rsnapshotem společnou jednu věc – jde o nadstavbu nad programem rsync. Nicméně zdání podobnosti může klamat, protože každý z nich svou práci dělá tak trochu po svém. V závěru tedy uvedu jen pár základních rozdílů mezi nimi.

Rdiff-backup

  • psán v jazyce Python
  • archivace: rozdílové soubory si ponechá v podadresáři rdiff-backup-data
  • komprimuje
  • záloha se obnovuje přes příkaz
  • je potřeba, aby byl nainstalovaný i na vzdáleném počítači

Rsnapshot

  • psán v jazyce Perl
  • archivace: přes hardlinky
  • nekomprimuje
  • záloha je přímo „vidět“, není potřeba ji nijak obnovovat
  • stačí když je nainstalovaný na stroji, který zálohuje

Srovnání nemá a ani by nemělo mít vítěze, je už jen na vás, který nástroj vám lépe padne do ruky a který budete používat.

Našli jste v článku chybu?

28. 2. 2012 18:08

abc (neregistrovaný)

Jen pro upresneni, jiste se to muze nekomu hodit

Ano, zaloha se obnovuje prikazem, ale jen starsi zalohy. Posledni zaloha je v podstate kopie zalohovanych dat, kterou muzeme proste zkopirovat. Rozdily predchozich verzi jsou v podadresari rdiff-backup.

27. 2. 2012 19:34

michal (neregistrovaný)

Synchronizaci celeho disku bych resil jako RAID1 s bitmapou. Kdysi jsem takhle zalohoval disk na notebooku, druhy disk v raidu byl iSCSI image na stolnim pocitaci.

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí