BackupNinja

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
89. sor: 89. sor:
 
=== Action file-ok ===
 
=== Action file-ok ===
   
Ezek a konfigurációs file-jai a különböző backup programoknak. Az rdiff-backup, a mysql, a postgresql, és a levelek mentésére szolgáló maildir file szintaxisát mutatom be röviden.
+
Ezek a konfigurációs file-jai a különböző backup programoknak. Az rdiff-backup, a mysql, és a levelek mentésére szolgáló maildir file szintaxisát mutatom be röviden.
   
 
==== MySQL ====
 
==== MySQL ====
   
A konfigurációs file suffix-ja a ".mysql". A következő változókat lehet definiálni ebben:
+
A konfigurációs file suffix-a a ".mysql". A következő változókat lehet definiálni ebben:
   
 
dbusername,dbpassword,dbhost,databases,backupdir,compress # Ezeket nem részletezném,
 
dbusername,dbpassword,dbhost,databases,backupdir,compress # Ezeket nem részletezném,
101. sor: 101. sor:
 
sqldump # yes esetén a mysqldump[http://www.manpagez.com/man/1/mysqldump/] programot használja a backup készítéséhez, ami egy
 
sqldump # yes esetén a mysqldump[http://www.manpagez.com/man/1/mysqldump/] programot használja a backup készítéséhez, ami egy
 
sql scriptként készít mentést az adatbázisról.
 
sql scriptként készít mentést az adatbázisról.
  +
  +
==== Levelek ====
  +
  +
A levelek backupolásáért felelős config file suffix-a ".maildir". A konfigurációs fileban a következő változóknak adhatunk értéket:
  +
  +
keepdaily,keepweekly,keepmonthly # Azt lehet ezekkel megadni, hogy a napi,heti, havi mentésekből
  +
hányat tartson meg.
  +
srcdir # A maildir helye
  +
desthost,destdir,destuser # Milyen hoszt milyen könyvtárába, és milyen userként mentjük a leveleket.
  +
  +
Ennek a handler-je rsync-el menti a megfelelő könyvtárakat.
  +
  +
==== rdiff-backup ====
  +
  +
A suffix itt ".rdiff". Ez a konfigurációs file kicsit bonyolultabb az előzőeknél. Két szekciója van. A szekciók "[szekciónév]"-el kezdődnek, és egy következő szekcióig, vagy a file végéig tartanak. A [source] szekció változói a következők:
  +
  +
type # Ebből most cask a local támogatott, gondolom ezáltal a más gépek közötti rdiff vezérlése nem.
  +
keep # Ez az ridff-backup "--remove-older-than" flaghez tartozó változójának ad értéket napokban
  +
mérve. Ez vezérli azt, hogy maximálisan milyen régi backup-okat tartsunk meg.
  +
include # Ebből több is lehet, és mindegyik egy sima "--include" változójának felel meg.
  +
exclude # Az előzőhöz hasonló
  +
  +
A [dest] szekció változói:
  +
  +
type # Ebben az esetbe remote, és local is lehet.
  +
host # Ez az a host ahova backupolni fogunk
  +
directory # A könyvtár ahova a backup-olás menni fog.
  +
user # Ezen usernév alatt történik a backupolás.
  +
  +
Az opciók könnyen megfeleltethetőek rdiff-backup parancsoknak, de a lehetséges parancsok csak egy szűk részhalmazát fedik le. Írhatók viszont az action file-okhoz saját handler-ek is, de akár az rdiff-hez tartozó default handler-t is kiegészíthetjük, hogy több parancssori opciót lehessen vele állítani.
  +
  +
=== Hogyan használjuk? ===
  +
  +
A backupninja installáláskor a /etc/cron.d-ben hoz létre egy óránként egyszer lefutó job-ot. Ha ssh-t szeretnénk használni mondjuk az rdiff-backup-al, akkor a legegyszerűbb megoldás, ha sshfs-t[http://fuse.sourceforge.net/sshfs.html] használunk. Ez egy FUSE-ra épülő virtuális filerendszer, amivel transzparensen tudjuk kezelni egy másik host filerendszerét egy ssh kapcsolaton keresztül. Ez lokálisan egy könyvtárként jelenik meg.

A lap 2009. december 10., 21:18-kori változata


A backupninja egy konfigurációs felületet nyújt több különböző backup megoldás fölé. Jelen dokumentum az rdiff-backup-al vett konfigurációját taglalja.


Tartalomjegyzék

1 Telepítés, és előfeltételek

Debian alatt a következőképpen lehet telepíteni:

apt-get install rdiff-backup backupninja

Az rdiff-backup elég sok disztribúcióban megtalálható így ezt a megfelelő módon lehet telepíteni, a backupninja-t pedig a forrást[1] letöltve, és kitömörítve a

./configure
make
sudo make install

hármassal telepíthetünk.

2 Rdiff-backup

Az rdiff-backup egy inkrementális, és teljes mentéseket is támogató program.

2.1 Mentés

A /home könyvtárat a /backup-ba a következőképpen backupolhatjuk:

rdiff-backup /home /backup

Ez alapesetben a /backup könyvtárba másolja a file-okat a /home könyvtárból, és létrehoz egy rdiff-backup-data könyvtárat, amiben a metaadatokat tárolja. Ennek eredményeként a backup könyvtárból akér cp-vel is visszamásolhatjuk az adott fileokat.

Természetesen lehet más hosztra is menteni, sőt akár két hoszt között is lehet vezérelni egy mentést egyetlen rdiff-backup paranccsal a következőképpen:

rdiff-backup user1@host1::/home user2@host2::/backup

A "-b" kapcsolóval lehet kikényszeríteni a teljes mentést.

2.2 Visszaállítás

A visszaállításra két lehetőségünk van. Az egyik, hogy megadunk egy időtartamot. Ez egy minimumot jelent a backup korára. A következőképpen használhatjuk ezt:

rdiff-backup -r 3D host::/backup /home

A 3D három napot jelent. Ebben az esetben, ha van egy 2, és egy 4 napos mentésünk, akkor a 4 nappal ezelőtti állapot lesz visszaállítva.

A másik visszaállítási mód, hogy pontosan megmondjuk, hogy egy adott file melyik állapotát akarjuk visszaállítani. Egy példa erre:

rdiff-backup host::/backup/rdiff-backup-data/increments/file.2003-03-05T12:21:41-07:00.diff.gz /home/file

2.3 Szűrés

A programnak sokféle szűrő flagje van. Ezek az include, és exclude flagek kategóriájába esnek. Arra lehet használni ezeket, hogy adott szűrőnek megfelelő file-okat bevegyünk a mentésbe, vagy éppen kihagyjunk belőle. Néhány exclude flag, és funkciója a teljesség igénye nélkül:

--exclude <shell minta> # Ez egy tetszőleges shell mintára illeszt,
 és azt kihagyja a mentésből
--exclude-fifos # Az elérési utakon található fifokat nem menti. Hasonló létezik 
socket-re, dev file-ra, és egyéb speciális file-okra is.
--exclude-regexp <reguláris kifejezés> # a Reguláris kifejezésre illeszkedő file-ok nem 
lesznek mentve
--exclude-filelist <filelista.txt> # Ez parseolja a filelista.txt file-t, és minden sorát 
egy filenévként értelmezve úgy viselkedik, mintha mindegyikre kiadtuk volna 
a --exclude filenév parancsot.

Akárhány szűrő parancsot ki lehet adni, de egy adott file-ra a legelső illeszkedő fog vonatkozni

További információ a szűrők, és az időformátumok részletes leírása található a program man oldalán[2] található.

3 Backupninja

A backupninja lényegében egy konfiguráció wrapper különböző backup programok egységes kezeléséhez.

Adott egy fő konfigurációs file, ami default esetben a /etc/backupninja.conf. Ebben a következő változók szerepelnek:

loglevel # Értéke 1, és 5 között lehet, és minél nagyobb a szám annál több dolgot logol
reportemail # Az az email cím, ahova sikeres backup, vagy probléma esetén email-t kell küldeni.
reportsuccess # yes, vagy no lehet az értéke, és yes esetén küld levelet a 
reportemail-es címre sikeres backup esetén
reportwarning # Értéke szintén yes/no lehet, és akkor küld email-t, ha volt valami 
probléma a mentéssel.
logfile # Értéke a logfile helye.
scriptdirectory # Értéke a backupninja script-jeit tartalmazó könyvtár neve.

A különböző backup-okat vezérlő configfile-ok default-ból a /etc/backup.d könyvtárban vannak, és a suffix-ük dönti el, hogy hogyan értelmeződnek. A file-okat a karakterek rendezési sorrendje szerint dolgozza fel a backupninja, így ha a sorrend fontos akkor ajánlott a sysvinit-hez hasonló file-elnevezési konvenciót használni. Ezeket a file-okat action file-oknak hívják. Minden action file-ban értelmeződik a következő változó:

when = friday at 10:30 # Azaz a mentés minden péntek délelőtt 10:30-kor kezdődjön

Ebből a változóból több is szerepelhet. Ekkor minden időpontban történik mentés. Ha nincs specifikálva ez a változó, akkor minden nap éjjel egykor fog végrehajtódni a mentés. A formátum a dokumentációból nekem nem volt teljesen világos, de 10-nél kisebb számok esetén nullát kell írni eléjük.

3.1 Action file-ok

Ezek a konfigurációs file-jai a különböző backup programoknak. Az rdiff-backup, a mysql, és a levelek mentésére szolgáló maildir file szintaxisát mutatom be röviden.

3.1.1 MySQL

A konfigurációs file suffix-a a ".mysql". A következő változókat lehet definiálni ebben:

dbusername,dbpassword,dbhost,databases,backupdir,compress # Ezeket nem részletezném, 
mivel intuíciónk nem csal.
hotcopy # yes esetén a mysqlhotcopy[3] programot használja mentésre, ami az adatbázis 
bináris file-jairól készít másolatot.
sqldump # yes esetén a mysqldump[4] programot használja a backup készítéséhez, ami egy 
sql scriptként készít mentést az adatbázisról.

3.1.2 Levelek

A levelek backupolásáért felelős config file suffix-a ".maildir". A konfigurációs fileban a következő változóknak adhatunk értéket:

keepdaily,keepweekly,keepmonthly # Azt lehet ezekkel megadni, hogy a napi,heti, havi mentésekből 
hányat tartson meg.
srcdir # A maildir helye
desthost,destdir,destuser # Milyen hoszt milyen könyvtárába, és milyen userként mentjük a leveleket.

Ennek a handler-je rsync-el menti a megfelelő könyvtárakat.

3.1.3 rdiff-backup

A suffix itt ".rdiff". Ez a konfigurációs file kicsit bonyolultabb az előzőeknél. Két szekciója van. A szekciók "[szekciónév]"-el kezdődnek, és egy következő szekcióig, vagy a file végéig tartanak. A [source] szekció változói a következők:

type # Ebből most cask a local támogatott, gondolom ezáltal a más gépek közötti rdiff vezérlése nem.
keep # Ez az ridff-backup "--remove-older-than" flaghez tartozó változójának ad értéket napokban
mérve. Ez vezérli azt, hogy maximálisan milyen régi backup-okat tartsunk meg.
include # Ebből több is lehet, és mindegyik egy sima "--include" változójának felel meg.
exclude # Az előzőhöz hasonló

A [dest] szekció változói:

type # Ebben az esetbe remote, és local is lehet.
host # Ez az a host ahova backupolni fogunk
directory # A könyvtár ahova a backup-olás menni fog.
user # Ezen usernév alatt történik a backupolás.

Az opciók könnyen megfeleltethetőek rdiff-backup parancsoknak, de a lehetséges parancsok csak egy szűk részhalmazát fedik le. Írhatók viszont az action file-okhoz saját handler-ek is, de akár az rdiff-hez tartozó default handler-t is kiegészíthetjük, hogy több parancssori opciót lehessen vele állítani.

3.2 Hogyan használjuk?

A backupninja installáláskor a /etc/cron.d-ben hoz létre egy óránként egyszer lefutó job-ot. Ha ssh-t szeretnénk használni mondjuk az rdiff-backup-al, akkor a legegyszerűbb megoldás, ha sshfs-t[5] használunk. Ez egy FUSE-ra épülő virtuális filerendszer, amivel transzparensen tudjuk kezelni egy másik host filerendszerét egy ssh kapcsolaton keresztül. Ez lokálisan egy könyvtárként jelenik meg.

Személyes eszközök