U Listingu je prikazan bash skript za kreiranje razervne kopije baze (MySQL) koji ima za cilj da:
(1) izvrši njen damping;
(2) da je smesti na određenu lokaciju na Web serveru;
(3) da izvrši kompresiju baze;
(4) pošalje bazu kao atachment putem elektronske pošte;
(5) ukloni uskladištenu bazu sa Web servera i
(6) pošalje obaveštenje putem mail-a o uspešnosti procesa.
Bash skrpt treba koristiti paralelno sa CRON JOB-om u unapred definisanom intervalu.
#!/bin/sh
# Kopiranje vrednosti datuma u promenljivu $datum.
datum=$(date '+%d-%m-%Y@%H:%M')
# Definisanje varijable početka procesa bakupovanja MySQL baze kako bi se na kraju skripte izračunala razlika,
# odnosno vremena potrebnog za izvršenje ove skripte.
pocetno=`date +%s`
# Određivanje početnog vremena potrebnog za backupovanje baze.
A="$(date +%d.%m.%Y)"
B="$(date +%H:%M:%S)"
#Damping baze.
mysqldump -u ime_korisnika_baze -plozinka_baze naziv_baze | gzip > /tmp/direktorijum/backupovana_baza_$datum.sql.gz
#Ukoliko se odabere /tmp direktorijum, a u okviru njega doda novi, istom treba dodeliti odgovarajuća prava pristupa.
#NAPOMENA - svako resetovanje servera će ukoliniti naknadno dodati folder unutar tmp-a.
# Baza je beckup-ovana u:
C="$(date +%d.%m.%Y)"
D="$(date +%H:%M:%S)"
# Slanje rezervne kopije baze u vidu atachment-a na e-mail adresu.
echo "Rezultat redovnog arhiviranja baze" | mutt -a "/tmp/direktorijum/backupovana_baza_$datum.sql.gz" -s "Arhiviranje MySQL baze" -- email@domen.rs
# Za priključivanje atachment-a, na Linux-ovom Web serveru uslužni program MUTT mora da bude pokrenut (sudo apt-get install mutt).
# Pošto je baza prosleđena na n-ti broj e-mail adresa, bezbedno je da ista bude uklonjena iz temp-a.
E="Uklanjanje privremene kopije..."
rm /tmp/direktorijum/backupovana_baza_$datum.sql.gz
F="Baza je uspešno ukolnjena sa privremene lokacije."
# Beleženje završetka procesa backupovanja.
zavrsno=`date +%s`
# Računanje razlike (oduzimanjem početnog vremena i trenutka kada je skript izvršen uspešno).
ukupno=$((pocetno-zavrsno))
# Prosleđivanje Frendly obaveštenja u HTML formatu sa UTF-8 encoding-om za podršku ćiriličnih / latiničnih karaktera bez atachment-a,
# ostalim korisnicima sistema koji nisu administratori o uspešnosti procesa.
# Poslednji deo skripte neće funkcionisati pravlino ukoliko na Web serveru nije konfigurisan mail za slanje pošte sa komandne linije.
# Proveriti POSTFIX - > sudo apt-get install postfix
# Voditi računa o tome da uklanjanjem postfix-a po nužnij potrebi se ujedno uklanja i Logwatch, pa unapred kopirati sva
# konfiguraciona podešavanja i izmene u radu ovog programa.
echo "<h3>Rezultat backup procesa</h3><hr><p>Formiranje rezervne kopije baze je u toku...</p><p>Proces je pokrenut: ${A}. godine u ${B}.</p><p>Proces arhiviranja je uspešno okončan: ${C}. godine u ${D}.</p><p>${E}</p><p>${F}</p><p>Vreme izvršenja:${ukupno} sek.</p><hr>"| mailx -s "$(echo "CRON - redovno arhiviranje MySQL baze\nContent-Type: text/html; charset=UTF-8")" email@domen.rs