BackupNinja
28. sor: | 28. sor: | ||
rdiff-backup /home /backup |
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. |
+ | 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 file-okat. |
− | 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: |
+ | Lehet más hosztra is menteni. Ebben az esetben viszont egy rdiff-backup-nak kell szerver módban futnia a másik oldalon. Ezt az "rdiff-backup --server" parancs futtatásával érhetjük el. Nyilván érdemes erre valami init scriptet írni, ha az adott gépet mentések tárolására használjuk. Egy másik hosztra a következő paranccsal menthetünk: |
− | rdiff-backup user1@host1::/home user2@host2::/backup |
+ | rdiff-backup /home user@host::/backup |
+ | |||
+ | Ez ssh fölött végzi a másolást. Egy további opció, hogy akár két gép között is levezérelhetjük a mentést. Ezt a következőképpen tehetjük: |
||
+ | |||
+ | rdiff-backup user@fromhost::/home user2@tohost::/backup |
||
A "-b" kapcsolóval lehet kikényszeríteni a teljes mentést. |
A "-b" kapcsolóval lehet kikényszeríteni a teljes mentést. |
||
=== A backup könyvtár szerkezete === |
=== A backup könyvtár szerkezete === |
||
+ | |||
+ | A backup könyvtár legfelső szintjén találhatóak a mentett file-ok, és könyvtárak. Mindig a legújabb verziók tárolódnak ezen a szinten. Az inkrementális mentés reverse diff-ekkel valósul meg, azaz egy file régebbi verzióját ezek visszatranszformálásával nyerhetjük. Másrészt minden backup könyvtárban található egy rdiff-backup-data nevű könyvtár, amiben a metaadatok tárolódnak. Ennek a szerkezete a következő: |
||
+ | |||
+ | backup.log # Ez az rdiff-backup adott backup directory-jához tartozó logfile-ja |
||
+ | error_log.<datum>.data # Az adott <datum>-kori mentés hibái |
||
+ | file_statistics.<datum>.data.gz # Ez az adott mentéskor a backup file-jainak változásáról készít statisztikát. Bővebben erről később. |
||
+ | increments/<filenev eleresi uttal>.<datum>.diff.gz # Az adott file adott mentéshez tartozó reverse diff-je. |
||
+ | increments/<filenev eleresi uttal>.<datum>.missing # Azt jelzi, hogy az adott időpontbeli mentésnél az adott file még nem létezett. |
||
+ | increments.<datum>.dir # Nem jöttem rá, hogy ez mit tárol |
||
+ | mirror_metadata.<datum>.diff.gz # Ebben a file <datum> mentési idejű állapotának metaadatai kerülnek. Bővebben erről később. |
||
+ | session_statistics.<datum>.data # Ebben az adott mentésről tárol statisztikai adatokat. Bővebben erről később. |
||
+ | |||
+ | A <datum> formátuma a következő |
||
+ | |||
+ | <év>-<hónap>-<nap>T<óra>:<perc>:<másodperc>+<óra>:<perc> |
||
+ | |||
+ | Itt a második óra, és perc az időzónát jelöli. Bővebben erről a [http://www.w3.org/TR/NOTE-datetime.html specifikáció] oldalán. |
||
+ | |||
+ | Egy file_statistics file tartalma a következőképpen néz ki: |
||
+ | |||
+ | === 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 |
||
+ | |||
+ | === 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 [http://rdiff-backup.nongnu.org/rdiff-backup.1.html man oldalán] található. |
||
+ | |||
+ | == 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. |
||
+ | |||
+ | === 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. |
||
+ | |||
+ | ==== 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 [http://linux.die.net/man/1/mysqlhotcopy mysqlhotcopy] programot használja mentésre, ami az adatbázis |
||
+ | bináris file-jairól készít másolatot. |
||
+ | sqldump # yes esetén a [http://www.manpagez.com/man/1/mysqldump/ 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. |
||
+ | |||
+ | ==== 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 [http://fuse.sourceforge.net/sshfs.html sshfs]-t 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 12., 13:11-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 file-okat.
Lehet más hosztra is menteni. Ebben az esetben viszont egy rdiff-backup-nak kell szerver módban futnia a másik oldalon. Ezt az "rdiff-backup --server" parancs futtatásával érhetjük el. Nyilván érdemes erre valami init scriptet írni, ha az adott gépet mentések tárolására használjuk. Egy másik hosztra a következő paranccsal menthetünk:
rdiff-backup /home user@host::/backup
Ez ssh fölött végzi a másolást. Egy további opció, hogy akár két gép között is levezérelhetjük a mentést. Ezt a következőképpen tehetjük:
rdiff-backup user@fromhost::/home user2@tohost::/backup
A "-b" kapcsolóval lehet kikényszeríteni a teljes mentést.
2.2 A backup könyvtár szerkezete
A backup könyvtár legfelső szintjén találhatóak a mentett file-ok, és könyvtárak. Mindig a legújabb verziók tárolódnak ezen a szinten. Az inkrementális mentés reverse diff-ekkel valósul meg, azaz egy file régebbi verzióját ezek visszatranszformálásával nyerhetjük. Másrészt minden backup könyvtárban található egy rdiff-backup-data nevű könyvtár, amiben a metaadatok tárolódnak. Ennek a szerkezete a következő:
backup.log # Ez az rdiff-backup adott backup directory-jához tartozó logfile-ja error_log.<datum>.data # Az adott <datum>-kori mentés hibái file_statistics.<datum>.data.gz # Ez az adott mentéskor a backup file-jainak változásáról készít statisztikát. Bővebben erről később. increments/<filenev eleresi uttal>.<datum>.diff.gz # Az adott file adott mentéshez tartozó reverse diff-je. increments/<filenev eleresi uttal>.<datum>.missing # Azt jelzi, hogy az adott időpontbeli mentésnél az adott file még nem létezett. increments.<datum>.dir # Nem jöttem rá, hogy ez mit tárol mirror_metadata.<datum>.diff.gz # Ebben a file <datum> mentési idejű állapotának metaadatai kerülnek. Bővebben erről később. session_statistics.<datum>.data # Ebben az adott mentésről tárol statisztikai adatokat. Bővebben erről később.
A <datum> formátuma a következő
<év>-<hónap>-<nap>T<óra>:<perc>:<másodperc>+<óra>:<perc>
Itt a második óra, és perc az időzónát jelöli. Bővebben erről a specifikáció oldalán.
Egy file_statistics file tartalma a következőképpen néz ki:
2.3 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.4 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 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 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 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 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.