Skip to content
Csiki Ferenc edited this page May 26, 2014 · 6 revisions

A script működése

A script nem saját ötlet alapján készült, forrás: Rob Flickengen: Linux bevetés közben (Linux Server Hacks).

A script-et a szerver gépen kell, pl. a cron-ból futtatni. Sorba veszi a mentendő kliens gépeket, és egy rsync hívással készít másolatot a fájlrendszerükről. Ahhoz, hogy a szerver hozzáférjen a kliens fájlrendszeréhez, a szükséges root jogokkal szüksége van a szervernek egy SSL kulcsra.

A script a mentett adatokat nem tömöríti, a forrással azonos formában ment. A helytakarékosság a régebbi verziók mentési stílusánál jelentkezik, mivel a változatlan fájlokról csak egy hard link van a régebbi verziók esetén. A scriptek csak a mentést támogatják, a visszaállítást ez a csomag nem tartalmazza.

A környezet előkészítése

Első lépésként másoljuk be a három scriptet pl. a /usr/local/sbin könyvtárba, tegyük futtathatóvá, és persze legyen a PATH-on a /usr/local/sbin könyvtár.

Néhány, a működéshez szükséges adat tárolására a /var/lib/backup könyvtár szolgál, ezt is hozzuk létre.

A mentések a /srv/backup/ könyvtárba történnek, hozzuk létre a /srv/backup könyvtárat. (A scriptek elején a mentés helyét a "DIR=/srv/backup" sor átírásával megváltoztathatjuk.)

Az aktuális mentés, egy a mentett rendszerrel azonos nevű könyvtárba történik, a régebbi változatok pedig a x, A_x_, és B_x_ kiterjesztést kapják, ahol x egy 1 és 8 közötti szám.

Nem kötelező, de praktikus a mentett rendszerek címét és nevét felvenni a /etc/hosts fájlba. Mivel biztosítanunk kell, hogy a mentő szerver hozzáférjen a mentendő rendszerhez, ezért a szerveren létre kell hoznunk egy SSH ügyfélkulcsot. Adjuk ki root felhasználóként a következő parancsot:

ssh-keygen -t rsa

A létrejött két fájlból az egyiket: .ssh/id_rsa.pub fájlt át kell másolnunk a mentendő rendszer /root/.ssh könyvtárába authorized_keys néven, illetve ha ez a fájl már létezik, akkor hozzá kell fűzni (cat).

Ezután próbáljuk ki, hogy jelszó nélkül az ssh-val be tudunk lépni a mentendő rendszerre root-ként, jelszó megadása nélkül. Ha nem módisítsuk úgy az sshd beállításait, hogy ezt megtehessük.

Létre kell hoznunk egy szöveges fájlt a /var/lib/backup könyvtárban exclude-host névvel, ahol a host a mentett rendszer neve. Ebben a fájlban kell felsorolni azon könyvtárak nevét, melyeket nem szeretnénk menteni, pl.:

/proc
/sys
/tmp
/var/tmp
/media
/mnt
/var/lock
/var/run
/var/spool/squid
/var/log/*.[123456789]*
/var/log/*/*.[123456789]*
/.*

Végül futtatnunk kell a backup_host_init.sh scriptet paraméterként megadva a mentendő rendszer nevét. Ezzel létrehozzuk az első mentésünket. A mentő script (backup.sh) feltételezi, hogy egy mentésünk már van a rendszerről (pontosabban, azokat a hosztokat menti, amiről talál legalább egy régebbi mentést). Mivel ez a script a teljes mentett adatmennyiséget átutaztatja a hálózaton, jóval nagyobb erőforrás igényű, mint a már csak a változásokat kezelő script, ezért számítsunk rá, hogy nagyobb rendszereknél ez sok időt fog igénybe venni.

A mentések folyamata

A növekményes mentéseket a backup.sh és a backup backup_host.sh script páros végzi. A backup.sh scriptet a cron segítségével hívhatjuk (root felhasználóként) a mentési stratégiánknak megfelelő időpontokban. A backup.sh sorra veszi azokat a rendszereket, amikről talál egy már mentett példányt, a legutolsó és a régebbi mentett példányokat a később vázolt módon görgeti, majd az aktuális példányt az rsync hívásával szinkronizálja.