Backup bazy danych

A to przykładowy skrypt który robi kopię danych z /etc i /home na podmontowany dysk serwera o nazwie "pokrzywa":

Na początek sprawdzamy, czy dysk jest podmontowany. Jeśli nie, czekamy 5 sekund, bo może serwer dopiero się uruchamia po awarii zasilania i sprawdzamy ponownie.

Jeśli nadal dysk nie jest podmontowany, rezygnujemy z backupu, żeby nie przepełnić lokalnego filesystemu.

Jeśli dysk sieciowy jest podmontowany, tworzymy nazwę pliku z kopią zawierającą aktualną datę, wykonujemy kopię komendą tar, przenosimy ją na podmontowany dysk sieciowy:

mount |grep -q pokrzywa || mount -a
sleep 5
mount |grep -q pokrzywa &&
{
cd /home/automaty
NAZWA=home_etc`date +%d%m%Y`.gz
echo poczatek `date` $NAZWA>>log
tar -czf $NAZWA /home/* /etc/* --exclude /home/automaty
mv $NAZWA /pokrzywa/kopie_irys >/dev/null 2>&1
echo koniec `date` $NAZWA>>log
echo __________________________ >>log
echo
}

Aby nasze dyski nie zapychały się starymi kopiami, codziennie uruchamiamy skrypt, który kasuje kopie starsze niż 10 dni:

cd /home/kopie
find . -mtime +10  -name "*.gz" -exec rm -f {} \;

Robimy to programem cron, to przykładowe wpisy w pliku /etc/crontab:

01 01 * * * root /home/automaty/kasuj_stare
55 02 * * * root /home/automaty/dump_danych 

Codziennie w nocy o godzinie 01:01 kasowane są stare kopie, a o godzinie 02:55 robiona jest najnowsza kopia.