blog.nayma.pl


Dla miłośników HTML5, CSS3, JS, WordPress oraz systemu macOS

Dariusz Nayma.pl
Autor Wpisu

Podziel się


Tagi


SeoHost.pl

Backup strony przy użyciu BASH i CRON

Dariusz Nayma.plDariusz Nayma.pl

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.

Komentarze