Rotácia archívov

  Shell skript v časti  Shell skripty vytvára iba sedem archívov.  Na serveri, kde sa údaje nemenia príliš často, to postačuje, no ak je na serveri väčšie množstvo dát, je rozumnejšie použiť inú schému.

Rotácia NFS archívov

V tejto časti skript upravíme tak, aby implementoval schému dedo-otec-syn (mesiac-týždeň-deň):

  • Rotácia vytvorí dennú zálohu pre pondelok až sobotu.

  • V nedeľu vytvorí týždennú zálohu tak, že za mesiac budeme mať štyri zálohy.

  • Mesačná záloha sa vytvorí prvý deň v mesiaci a budú vytvárané dva archívy podľa toho, či je mesiac párny alebo nepárny.

Tu je skript:

#!/bin/bash
####################################
#
# Skript na vytvorenie zálohy na vzdialenom disku
# s použitím schémy dedo-otec-syn.
#
####################################

# Čo sa bude zálohovať.
backup_files="/home /var/spool/mail /etc /root /boot /opt"

# Kam sa bude zálohovať.
dest="/mnt/backup"

# Nastavenie premenných, z ktorých sa vytvorí meno archívu.
day=$(date +%A)
hostname=$(hostname -s)

# zistí číslo týždňa v mesiaci 1-4.
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

# Zistí či je mesiac párny alebo nepárny.
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

# Vytvorí meno archívu.
if [ $day_num == 1 ]; then
archive_file=$month_file
elif [ $day != "Saturday" ]; then
archive_file="$hostname-$day.tgz"
else
archive_file=$week_file
fi

# Vypíše správu o začatí operácie.
echo "Zálohujem $backup_files do $dest/$archive_file"
date
echo

# Vytvorí archív pomocou nástroja tar.
tar czf $dest⁄$archive_file $backup_files

# Vypíše správu o dokončení operácie.
echo
echo "Záloha bola vytvorená"
date

# Detailný výpis cieľového priečinka $dest aby sa dala overiť veľkosť archívu.
ls -lh $dest/

Skript môžeme spustiť rovnakými spôsobmi ako v časti Shell skripty.

Dobrým zvykom je odložiť médium so zálohou na bezpečné miesto. V našom prípade shell skriptu je záložným médiom iný počítač, ktorý poskytuje priečinok zdieľaný pomocou NFS systému. Umiestnenie NFS servera na iné umiestnenie bude pravdepodobne nepraktické. V závislosti od toho, aké máme pripojenie, môžeme prostredníctvom siete WAN archívy prekopírovať na server, ktorý je na inom mieste.

Iná možnosť je skopírovanie archívu na externé médium, ktoré je možné vybrať z počítača a umiestniť ho na bezpečné miesto. Vďaka tomu, že cena mechaník stále klesá, môžeme použiť dve mechaniky. To nám umožní mať jednu mechaniku pripojenú k serveru so zálohami a jednu na inom mieste.

Pásková mechanika

Páskovú mechaniku pripojenú k serveru môžeme použiť miesto zdieľaného priečinka cez NFS. Použitie páskovej mechaniky zjednodušuje rotáciu archívov a tiež umožňuje uchovávať záložné médium v bezpečí.

Pri použití páskovej mechaniky nie je potrebná časť skriptu, ktorá vytvára meno archívu, pretože sa údaje odošlú priamo na páskovú mechaniku. Pribudne však niekoľko príkazov, ktoré pracujú s páskou. Tieto príkazy sa vykonávajú pomocou nástroja na prácu s magnetickou páskou mt, ktorý je súčasťou balíka cpio.

Tu je upravený shell skript pre páskovú mechaniku:

#!/bin/bash
####################################
#
# Zálohovanie na páskovú mechaniku.
#
####################################

# Čo sa bude zálohovať
backup_files="/home /var/spool/mail /etc /root /boot /opt"

# Kam sa bude zálohovať.
dest="/dev/st0"

# Vypíše správu o začatí operácie.
echo "Zálohujem $backup_files do $dest"
date
echo

# Uistí sa že je páska previnutá.
mt -f $dest rewind

# Vytvorí archív pomocou nástroja tar.
tar czf $dest $backup_files

# Previnie pásku a vysunie ju
mt -f $dest rewoffl

# Vypíše správu o dokončení operácie.
echo
echo "Záloha bola vytvorená"
date

[Note]

Predvolené označenie páskovej mechaniky SCSI je /dev/st0. Použite označenie platné pre váš systém.

Údaje z páskovej mechaniky obnovíme rovnako ako keby sme ich obnovovali z bežného archívu. Jednoducho previnieme pásku a použijeme miesto cesty k súboru označenie zariadenia. Ak napríklad chceme obnoviť súbor /etc/hosts do /tmp/etc/hosts, zadáme:

mt -f /dev/st0 rewind
tar -xzf /dev/st0 -C /tmp etc/hosts