Tworzenie i przywracanie strony podczas jej budowania w Docker - 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 ↓
# Wykonaj kopię: ./kz.sh zapis
# Przywróć z kopii stronę: ./kz.sh odzyskaj
# Zobacz komendę do manualnego zapisania kopii: ./kz.sh zrzut
# Zobacz komendę do manualnej kopii: ./kz.sh odczytaj
 
# zmiennne
domena=""
 
kontener_baza=""
kontener_pliki=""
 
 
# stałe
data="$(date +%F)"
mysql="wordpress"
mysql_plik="kopia_zapasowa_$(date +%s)$(date +%s | base64).sql"
sciezka="/home/juzek/$domena/"
 
 
# operacja
czynnosc=$1
 
# co wykonać?
case $czynnosc in
    "zapis"|"z"|"Z") # wykonaj kopię
        # utworzenie katalogu
        i=0
        while [ -d "${data}_$i" ]; do
            ((i++))
        done
        ostatni="${data}_$i"
        mkdir $ostatni
 
        echo "Zrzut bazy"
        docker exec $kontener_baza /usr/bin/mysqldump -u$mysql --password=$mysql $mysql > $ostatni/$mysql_plik
 
        echo "Kopia →"
        docker run --rm --volumes-from $kontener_pliki -v $sciezka/$ostatni:/mnt instrumentisto/rsync-ssh rsync -a /var/www/html/ /mnt/
 
        baza=$ostatni/kopia_zapasowa_*.sql
 
        if [ -s $baza ]
        then
            echo "|" $ostatni "|" "OK"
        fi 
    ;;
    "odzyskaj"|"o"|"O") # przywróć kopię
        read -p "Potwierdz (t): " -n 1 -r
        if [[ $REPLY =~ ^[t]$ ]]
        then
        echo ""
 
        ostatni="$(ls -vd */ | tail -1)"
 
        echo "Kopia ←" $ostatni
        docker run --rm --volumes-from $kontener_pliki -v $sciezka/$ostatni:/mnt instrumentisto/rsync-ssh rsync -a --delete --exclude 'kopia_zapasowa_*.sql' /mnt/ /var/www/html/
 
        echo "Odzykanie bazy"
        cat $ostatni/kopia_zapasowa_*.sql | docker exec -i $kontener_baza /usr/bin/mysql -u$mysql --password=$mysql $mysql
        fi
    ;;
    "zrzut"|"zz"|"ZZ") # wyświetl komendę wykonywania kopii
        echo "Manualna komenda →"
        echo "rm -fr * && docker run --rm --volumes-from $kontener_pliki -v \$(pwd):/mnt instrumentisto/rsync-ssh rsync -a /var/www/html/ /mnt/ && docker exec $kontener_baza /usr/bin/mysqldump -u$mysql --password=$mysql $mysql > $mysql_plik"
    ;;
    "odczytaj"|"oo"|"OO") # wyświetl komendę przywracania kopii
        echo "Manualna komenda ←"
        echo "docker run --rm --volumes-from $kontener_pliki -v \$(pwd):/mnt instrumentisto/rsync-ssh rsync -a --delete --exclude 'kopia_zapasowa_*.sql' /mnt/ /var/www/html/ && cat kopia_zapasowa_*.sql | docker exec -i $kontener_baza /usr/bin/mysql -u$mysql --password=$mysql $mysql"
esac
Zastosowanie: 

Skrypt do tworzenia i przywracania kopii witryn podczas ich budowania w Docker

Wiedza: 
Praktyczna
Kategoria: