blog.nayma.pl


Dla miłośników WordPress, WooCommerce, HTML5, CSS3 oraz JS.

Podziel się


Tagi


Backup strony przy użyciu BASH i CRON

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.

Nayma.pl Dariusz Okoń
Dodane przez

Nayma.pl Dariusz Okoń

Komentarze