Linux dokumentacija

  • Automatizovano dumping-ovanje i slanje MySQL baze putem mail-a

    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

    Publikovano je:  29. 07. 2015.