Kopia bezpieczeństwa jest podstawą w użytkowaniu jakiegokolwiek systemu z rodziny Linux. Doszedłem do wniosku że najlepiej takie rzeczy wymusić robiąc backup chronologiczny na systemie w nocy i w pełni zautomatyzowanie. Wiem że istnieje wiele narzędzi takie jak np. Bacula które są napisane specjalnie do tego celu ale w sumie nie ma to jak swoje :P….
Aby skrypt działał będziemy musieli mieć dostęp do maszyny jako root, dostęp do jakiegoś serwera za pośrednictwem ftp-a oraz oczywiście klienta ftp (sugeruje lftp). Skrypt jest napisany do tworzenia kopii bezpieczeństwa poczty,bazy danych mysql, serwera httpd, użytkownika w /home/user oraz oczywiście katalogu /etc, jeżeli nie chcemy backupów tylu usług wystarczy wstawić komentarze w odpowiednie linie . Kolejną funkcją skryptu jest trzymanie stworzonych kopii na zdalnym serwerze 7 dni oraz 4 dni na lokalnej maszynie. Oczywiście też do zmiany w kodzie…
A więc skrypt:
#!/bin/bash
#Ustawienia
#miejsce gdzie bedziemy trzymac backupy
backup=/backup
#Katalogi ktore chcemy backupowac
etc="/etc"
userzy="/home/user"
www="/var/www/"
baza="/var/lib/mysql"
poczta="/var/mail/"
katalog="katalog_na_ftpie/"
#Pobieranie daty
aktualnadata=`date +%Y-%m-%d`
maszyna=`hostname`
czyszczenie=`date -d "7 days ago" +%Y-%m-%d`
czyszczenie_lokalne=`date -d "4 days ago" +%Y-%m-%d`
#Tworzenie backupu
#ETC
tar -zcf $backup/etc-$aktualnadata-$maszyna.tar.gz $etc
#Userzy
tar -zcf $backup/users-$aktualnadata-$maszyna.tar.gz $userzy
#Www
tar -zcf $backup/www-$aktualnadata-$maszyna.tar.gz $www
#Baza
tar -zcf $backup/baza-$aktualnadata-$maszyna.tar.gz $baza
#Poczta
tar -zcf $backup/poczta-$aktualnadata-$maszyna.tar.gz $poczta
#Ewentualna wysylka gdzies na ftpa (wymagany lftp na maszynie) (!!!nalezy zmienic!!!)
lftp -p 787 -u User,"haselko" 1.2.3.4 << EOS2
cd $katalog
put $backup/etc-$aktualnadata-$maszyna.tar.gz
rm etc-$czyszczenie-$maszyna.tar.gz
put $backup/users-$aktualnadata-$maszyna.tar.gz
rm users-$czyszczenie-$maszyna.tar.gz
put $backup/www-$aktualnadata-$maszyna.tar.gz
rm www-$czyszczenie-$maszyna.tar.gz
put $backup/baza-$aktualnadata-$maszyna.tar.gz
rm baza-$czyszczenie-$maszyna.tar.gz
put $backup/poczta-$aktualnadata-$maszyna.tar.gz
rm poczta-$czyszczenie-$maszyna.tar.gz
bye
EOS2
#Usuwanie_starszych
rm $backup/etc-$czyszczenie_lokalne-$maszyna.tar.gz
rm $backup/userzy-$czyszczenie_lokalne-$maszyna.tar.gz
rm $backup/www-$czyszczenie_lokalne-$maszyna.tar.gz
rm $backup/baza-$czyszczenie_lokalne-$maszyna.tar.gz
rm $backup/poczta-$czyszczenie_lokalne-$maszyna.tar.gz
Najlepiej stworzyć katalog /backup i umieścić w nim zawartość skryptu pod nazwą backup.sh.
Pozostaje jedynie uruchomić to w /etc/crontab np.
* 3 * * * root /backup/backup
Uzyskaliśmy w ten sposób codzienny, chronologiczny backup katalogów wykonywany o 3 w nocy.