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?
Vitalia.cz: Ostružiny jsou dobré na mužskou potenci

Ostružiny jsou dobré na mužskou potenci

Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

Vitalia.cz: Pepsi Cola mění sirup za cukr

Pepsi Cola mění sirup za cukr

Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

120na80.cz: Tipy pro odvodnění organismu

Tipy pro odvodnění organismu

Podnikatel.cz: Fotogalerie: Jesenka už má skoro 50 let

Fotogalerie: Jesenka už má skoro 50 let

Lupa.cz: Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

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

Ceny PHM v Evropě. Finty na úspory

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Vitalia.cz: Tohle je Břicháč Tom, co zhubnul 27 kg

Tohle je Břicháč Tom, co zhubnul 27 kg

DigiZone.cz: Markíza HD a Dajto? U Digi TV asi minulost

Markíza HD a Dajto? U Digi TV asi minulost

Vitalia.cz: Bio vejce nepoznají ani veterináři

Bio vejce nepoznají ani veterináři

Podnikatel.cz: Selhala pokladna k EET. Kdo zaplatí pokutu?

Selhala pokladna k EET. Kdo zaplatí pokutu?

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

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

Podnikatel.cz: Italské těstoviny nebyly k mání, tak je začal vyrábět

Italské těstoviny nebyly k mání, tak je začal vyrábět

Lupa.cz: Největší torrentový web KickassTorrents padl

Největší torrentový web KickassTorrents padl

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

Lupa.cz: eIDAS: Nepřehnali jsme to s výjimkami?

eIDAS: Nepřehnali jsme to s výjimkami?

DigiZone.cz: Oživení ekonomiky by mělo navýšit reklamu

Oživení ekonomiky by mělo navýšit reklamu