Tworzenie i przywracanie strony podczas jej budowania - skrypt bash

#!/bin/bash
 
# Skrypt do tworzenia i przywracania kopii witryn podczas ich budowania.
# Skrypt ma za zadanie wykonanie kopii zapasowej strony w danym momencie.
# Jeśli dalsza budowa strony nie powiedzie się, możesz przywrócić działającą kopię strony.
# Obsługa ↓
# Zapisz kopię: ./kz.sh zapis
# Odtwórz kopię: ./kz.sh odzysk
# Zobacz komendę do manualnego zapisania kopii: ./kz.sh zrzut
# Zobacz komendę do manualnej kopii: ./kz.sh odrzut
 
# zmiennne
ssh_haslo=""
ssh_port=""
ssh_nazwa=""
ssh_host=""
ssh_sciezka=""
mysql_host=""
mysql_juzek=""
mysql_baza=""
mysql_haslo=""
 
# stałe
mysql_plik="kopia_zapasowa_$(date +%s)$(date +%s | base64).sql"
data="$(date +%F)"
strona="strona"
 
# dobór: hasła i portu SSH ; hosta MySQL
if [ -z $ssh_haslo ]
then
    ssh_haslo="brak_hasła"
fi
 
if [ -z $ssh_port ]
then
    ssh_port="22"
fi
 
if [ -z $mysql_host ]
then
    mysql_host="localhost"
fi
 
# operacja
czynnosc=$1
 
# co wykonać?
case $czynnosc in
    "zapis"|"z"|"Z") # wykonaj kopię
        # utworzenie katalogu
        i=0
        while [ -d "${strona}_${data}_$i" ]; do
            ((i++))
        done
        ostatni="${strona}_${data}_$i"
        mkdir $ostatni
 
        echo "Usunięcie bazy"
        sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host "rm -f $ssh_sciezka/kopia_zapasowa_*.sql"
 
        echo "Zrzut bazy"
        sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host "cd $ssh_sciezka && mysqldump --no-tablespaces -h$mysql_host -u$mysql_juzek -p$mysql_haslo $mysql_baza > $mysql_plik"
 
        echo "Kopia →"
        sshpass -p $ssh_haslo rsync -azz -e "ssh -p $ssh_port" $ssh_nazwa@$ssh_host:$ssh_sciezka/ $ostatni
 
        echo "Usunięcie bazy"
        sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host "rm -f $ssh_sciezka/kopia_zapasowa_*.sql"
 
        if [ -e $ostatni/kopia_zapasowa_*.sql ]
        then
            echo "|" $ostatni "|" "OK"
        fi     
    ;;
    "odzysk"|"o"|"O") # przywróć kopię
        ostatni="$(ls | sort -n | tail -1)"
 
        echo "Kopia ←" $ostatni
        sshpass -p $ssh_haslo rsync -azz --delete $ostatni/ -e "ssh -p $ssh_port" $ssh_nazwa@$ssh_host:$ssh_sciezka/
 
        echo "Odzykanie bazy"
        sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host "cd $ssh_sciezka && mysql -h$mysql_host -u$mysql_juzek -p$mysql_haslo $mysql_baza < kopia_zapasowa_*.sql"
 
        echo "Usunięcie bazy"
        sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host "rm -f $ssh_sciezka/kopia_zapasowa_*.sql"
    ;;
    "zrzut") # wyświetl komendę wykonywania kopii
        echo "Manualna komenda →"
        echo "sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host 'rm -f $ssh_sciezka/kopia_zapasowa_*.sql' ; sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host 'cd $ssh_sciezka && mysqldump --no-tablespaces -h$mysql_host -u$mysql_juzek -p$mysql_haslo $mysql_baza > kopia_zapasowa_\$(date +%s)\$(date +%s | base64).sql' && sshpass -p $ssh_haslo rsync -azz --delete -e 'ssh -p $ssh_port' $ssh_nazwa@$ssh_host:$ssh_sciezka/ . ; sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host 'rm -f $ssh_sciezka/kopia_zapasowa_*.sql'"
    ;;
    "odrzut") # wyświetl komendę przywracania kopii
        echo "Manualna komenda ←"
        echo "sshpass -p $ssh_haslo rsync -azz . -e 'ssh -p $ssh_port' $ssh_nazwa@$ssh_host:$ssh_sciezka/ && sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host 'cd $ssh_sciezka && mysql -h$mysql_host -u$mysql_juzek -p$mysql_haslo $mysql_baza < kopia_zapasowa_*.sql' ; sshpass -p $ssh_haslo ssh -p $ssh_port $ssh_nazwa@$ssh_host 'rm -f $ssh_sciezka/kopia_zapasowa_*.sql'"
esac
Zastosowanie: 

Skrypt do tworzenia i przywracania kopii witryn podczas ich budowania.

Wiedza: 
Praktyczna
Kategoria: