A „Shell-parancsfájlok” szakaszban található shell-parancsfájl csak hét különböző archívum létrehozását teszi lehetővé. Ha a kiszolgáló adatai nem változnak gyakran, akkor ez elég lehet. Ha azonban a kiszolgáló nagy adatmennyiséget kezel, sokkal robusztusabb forgatási sémát kell használni.
Ebben a szakaszban a shell-parancsfájlt kibővítjük, és nagyapa-apa-fiú forgatási sémát (havi-heti-napi) valósítunk meg:
-
A forgatás napi mentést készít vasárnaptól péntekig.
-
Szombaton heti mentés készül, havonta négy heti mentést biztosítva.
-
A havi mentés a hónap első napján készül, kéthavi mentést forgatva a hónap párossága vagy páratlansága alapján.
Az új parancsfájl a következő:
#!/bin/bash #################################### # # NFS-csatolásra biztonsági mentést készítő parancsfájl # nagyapa-apa-fiú forgatással. # #################################### # Mit kell menteni. backup_files="/home /var/spool/mail /etc /root /boot /opt" # Hová kell menteni. dest="/mnt/backup" # Változók beállítása az archívum fájlnevéhez. day=$(date +%A) hostname=$(hostname -s) # A hónap hetének (1-4) meghatározása. day_num=$(date +%d) if (( $day_num <= 7 )); then week_file="$hostname-week1.tgz" elif (( $day_num > 7 && $day_num <= 14 )); then week_file="$hostname-week2.tgz" elif (( $day_num > 14 && $day_num <= 21 )); then week_file="$hostname-week3.tgz" elif (( $day_num > 21 && $day_num < 32 )); then week_file="$hostname-week4.tgz" fi # A hónap páros vagy páratlan. month_num=$(date +%m) month=$(expr $month_num % 2) if [ $month -eq 0 ]; then month_file="$hostname-month2.tgz" else month_file="$hostname-month1.tgz" fi # Archívumfájl nevének létrehozása. if [ $day_num == 1 ]; then archive_file=$month_file elif [ $day != "Saturday" ]; then archive_file="$hostname-$day.tgz" else archive_file=$week_file fi # Kezdési állapotüzenet kiírása. echo "$backup_files mentése ide: $dest/$archive_file" date echo # A fájlok mentése a tar segítségével. tar czf $dest/$archive_file $backup_files # Befejezési állapotüzenet kiírása. echo echo "A mentés kész" date # A fájlok részletes felsorolása a $dest könyvtárban a fájlméretek ellenőrzéséhez. ls -lh $dest/
A parancsfájl a „Parancsfájl végrehajtása” szakaszban leírt módon hajtható végre.
A biztonsági mentés adathordozóit a katasztrófák eshetősége miatt ajánlott a géptől fizikailag messze tárolni. A példában a mentés adathordozója egy NFS-megosztást biztosító másik kiszolgáló. Az NFS-kiszolgáló mozgatása semmi esetre sem lenne praktikus. A kapcsolat sebességétől függően egy lehetőség az archívumfájl átmásolása WAN kapcsolaton egy másik helyen lévő kiszolgálóra.
Másik lehetőség az archívumfájl külső merevlemezre másolása, amely elszállítható. Mivel a külső merevlemezek ára folyamatosan csökken, költséghatékony lehet két meghajtó használata minden archívumszinthez. Ez lehetővé teszi, hogy az egyik külső meghajtó a mentendő kiszolgálóhoz legyen csatlakoztatva, míg a másik egy biztonságos távoli helyen van.
A kiszolgálóhoz csatlakoztatott szalagos meghajtó is használható NFS-megosztás helyett. A szalagos meghajtó használata egyszerűsíti az archívumforgatást, valamint az adathordozó távoli helyre szállítását is.
Szalagos meghajtó használatakor a parancsfájl fájlnévre vonatkozó részei nem szükségesek, mivel a dátum közvetlenül kerül elküldésre a szalagos eszköznek. Csak néhány, a szalagot kezelő parancsra van szükség, ehhez a cpio csomag által tartalmazott mt nevű mágnesszalag-vezérlő segédprogramot használjuk.
A szalagos meghajtó használatához módosított shell-parancsfájl:
#!/bin/bash #################################### # # Szalagra biztonsági mentést készítő parancsfájl # #################################### # Mit kell menteni. backup_files="/home /var/spool/mail /etc /root /boot /opt" # Hová kell menteni. dest="/dev/st0" # Kezdési állapotüzenet kiírása. echo "$backup_files mentése ide: $dest/$archive_file" date echo # A szalag biztosan legyen visszatekerve. mt -f $dest rewind # A fájlok mentése a tar segítségével. tar czf $dest $backup_files # Visszatekerés és a szalag kiadása. mt -f $dest rewoffl # Befejezési állapotüzenet kiírása. echo echo "A mentés kész" date
Az alapértelmezett eszköznév SCSI szalagos meghajtó esetén a |
A szalagos meghajtóról való helyreállítás alapvetően ugyanaz, mint a fájlból történő. Egyszerűen tekerje vissza a szalagot, és a fájlútvonal helyett használja az eszközútvonalat. Az /etc/hosts
fájl visszaállítása például a /tmp/etc/hosts
helyre:
mt -f /dev/st0 rewind tar -xzf /dev/st0 -C /tmp etc/hosts