Jeżeli ktoś z Was dysponuje dedykowanym serwerem i chciałby cyklicznie wykonywać backup plików i bazy danych bądź chciałby zabezpieczać dane ze swojego komputera – rozwiązaniem może być skrypt uruchamiany poprzez Cron’a. Rozwiązanie to jest skuteczne w przypadku systemów Linux. Nasz przykład będzie opierał się o system FreeBSD.
W pierwszej kolejności opiszmy schemat działania. W kolejnych krokach wygląda to w sposób następujący:
- utworzenie katalogu tymczasowego w którego nazwie będzie dzisiejsza data
- utworzenie wewnątrz katalogu tymczasowego katalogu na pliki i oddzielnego na dump bazy danych
- utworzenie backupu bazy danych i zapisanie w naszej lokalizacji
- utworzenie backupu plików w naszej lokalizacji
- usunięcie ewentualnych plików SVN
- spakowanie wszystkiego do formatu tar.gz
- wysłanie informacji o utworzeniu kopii na naszego maila
- czyszczenie plików tymczasowych
- zakończenie skryptu
Na podstawie tego schematu możemy utworzyć niezbędny kod.
#!/bin/sh
# utworzenie zmiennej wykorzystanej do budowania ścieżki
BACKUP_DIR=backup_"`/bin/data +%d_%m_%Y`"
# utworzenie katalogu tymczasowego z datą
/bin/mkdir /usr/home/uzytkownik/$BACKUP_DIR
# utworzenie katalogu na pliki wewnątrz katalogu tymczasowego
/bin/mkdir /usr/home/uzytkownik/$BACKUP_DIR/www
# utworzenie backupu bazy danych
/usr/local/bin/mysqldump -u user -phaslo nazwa_bazy > /usr/home/uzytkownik/$BACKUP_DIR/dump.sql
# backup plików
/bin/cp -rf /sciezka/katalog_z_plikami/* /usr/home/uzytkownik/$BACKUP_DIR/www/
# usuniecie plików SVN jeżeli takie istnieją
/bin/rm -rf `/usr/bin/find /usr/home/uzytkownik/$BACKUP_DIR/www/ -type d -name .svn`
# spakowanie wszystkiego do pliku tar.gz
/usr/bin/tar -zcvf /usr/home/uzytkownik/$BACKUP_DIR.tar.gz /usr/home/uzytkownik/$BACKUP_DIR/*
# utworzenie tresci maila o stworzeniu backupu
/usr/bin/touch /usr/home/uzytkownik/$BACKUP_DIR/mail.txt && /bin/echo "NASZA TREŚĆ WIADOMOŚCI">/usr/home/uzytkownik/$BACKUP_DIR/mail.txt
# wysyłka wiadomości
/usr/bin/mail -s "tytul wiadomosci" "adresat@domena.pl" # usuniecie katalogu tymczasowego
/bin/rm -rf /usr/home/uzytkownik/$BACKUP_DIR
# zakończenie skryptu
exit
Skrypt tez zapisujemy pod dowolną nazwą a następnie przyznajemy mu prawa wykonywania 0777 i możemy już uruchamiać.
Należy zwrócić uwagę na ścieżki poleceń i plików – muszą one być ścieżkami bezwzględnymi. Mogą one również różnić się od tu podanych, które obowiązują w FreeBSD.
Jeżeli chcemy, możemy również plik ten uruchamiać poprzez crona np komendą:
1 1 * * * root cd /usr/home/uzytkownik && ./nasz_plik.sh