Tworzenie i przywracanie strony podczas jej budowania w Docker - skrypt bash

[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
[/bash]

Zastosowanie: 

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

Wiedza: 
Praktyczna
Kategoria: