Wstęp
W przypadku strony opartej np o CMS WordPress mamy sporo wtyczek i narzędzi do tworzenia backupu plików i bazy danych. Co jednak jeśli korzystamy z Ghost ? Możemy sami stworzyć prosty skrypt bashowy, który będzie automatycznie robił za nas kopie bazy danych i plików oraz pakował je do archiwum.
Piszemy skrypt
Skrypt jest stosunkowo prosty i sprowadza się do stworzenia podstawowej konfiguracji, gdzie podajemy dane bazy danych, folder z naszym Ghost oraz folder gdzie mają być tworzone backupy. Następnie robimy dump bazy danych, później pakujemy pliki i tworzymy archiwum z nimi a na końcu usuniemy starsze backupy niż 60 dni.
#!/bin/bash
# Konfiguracja
user="nazwa_uzytkownika"
password="haslo"
host="host"
db_name="nazwa_bazy"
backup_path="backups"
date=$(date +"%d-%b-%Y")
umask 177
file="$backup_path/nazwa-pliku-$date.tar.gz"
folder="websites/katalog-strony/"
# Sprawdź czy folder do backup istnieje, jeśli nie to stwórz go
if [ ! -e $backup_path ];
then
mkdir -p $backup_path;
fi
# Skopiuj bazę danych do pliku SQL
echo "Kopiuję baze danych do pliku sql..."
mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
# Zrób backup katalogu
echo "Robię backup plików... To może potrwać dłuższą chwilę..."
tar cpzf $file $folder
# Usuwanie plików starszych niż 60 dni
echo "Usuwam pliki starsze niż 60 dni..."
find $backup_path/* -mtime +60 -exec rm {} \;
printf '\nSukces! Backup wykonany poprawnie.\n'
Ok. teraz możemy dodać sobie alias do naszego bash żeby móc w prosty sposób wywoływać polecenie do stworzenia backupu. W tym celu dopisujemy do naszego pliku .bashrc
:
alias backupblog="sh /home/nazwa-uzytkownika/backupb.sh"
Aby wszystko robiło się automatycznie posłużymy się serwerowym CRON. Dopisujemy więc:
* 23 * * 1 sh /home/nazwa-uzytkownika/backupb.sh > /dev/null
Ten zapis oznacza, że każdego pierwszego dnia tygodnia o 23:00 będzie robiony backup. Oczywiście możemy sobie ustawić tak naprawdę dowolnie CRON według naszych preferencji.
W kolejnej części postaram się rozbudować ten skrypt o dodatkową obsługę wysyłania backup poprzez FTP na zupełnie inny serwer.