Archívumforgatás

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.

NFS archívumok forgatása

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.

Szalagos meghajtók

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
[Megjegyzés]

Az alapértelmezett eszköznév SCSI szalagos meghajtó esetén a /dev/st0. Ehelyett a rendszerének megfelelő eszközútvonalat használja.

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