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

