Backup plików i katalogów pod linuxem.

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.

Ten wpis został opublikowany w kategorii Bash, LInux, Skrypty. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.