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.

Ohodnoťte jako ve škole:

Průměrná známka 1,60

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
Vitalia.cz: Tři sta kilogramů tuňáka obsahovalo histamin

Tři sta kilogramů tuňáka obsahovalo histamin

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

Lupa.cz: Zaplatíme ti, když ti seženeme práci

Zaplatíme ti, když ti seženeme práci

120na80.cz: Poznáte, který z léků je pravý?

Poznáte, který z léků je pravý?

Lupa.cz: Jak EET vidí ajťák aneb Drahá vražda UX

Jak EET vidí ajťák aneb Drahá vražda UX

DigiZone.cz: Konec geoblokace online médií?

Konec geoblokace online médií?

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

DigiZone.cz: Šlágr TV: pokuta 100 tisíc za on-line

Šlágr TV: pokuta 100 tisíc za on-line

120na80.cz: Jak si udržet zdravou vaginu

Jak si udržet zdravou vaginu

Podnikatel.cz: Proměny stavebnice Seva. Znáte ji?

Proměny stavebnice Seva. Znáte ji?

120na80.cz: Velký přehled: 7 očkování proti exotickým nemocem

Velký přehled: 7 očkování proti exotickým nemocem

DigiZone.cz: Mafra varuje před stíháním za pomluvu

Mafra varuje před stíháním za pomluvu

Podnikatel.cz: Myšlenky Henryho Forda. Berte je za své

Myšlenky Henryho Forda. Berte je za své

Root.cz: Zákon o hazardu je v rozporu s ústavou

Zákon o hazardu je v rozporu s ústavou

DigiZone.cz: UPC umí televizi sedm dní nazpět

UPC umí televizi sedm dní nazpět

120na80.cz: Co jí dělá? Sklerotizaci

Co jí dělá? Sklerotizaci

Vitalia.cz: Dnešní patolog o mrtvolu téměř nezavadí

Dnešní patolog o mrtvolu téměř nezavadí

120na80.cz: 10 nej přípravků na holení

10 nej přípravků na holení

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

Vitalia.cz: Muži kouří 24 cigaret denně, ženy o dost míň

Muži kouří 24 cigaret denně, ženy o dost míň