Cykliczny backup serwera

Konfiguracja serwerów, usług, itp.
Kamcio
Posty: 35
Rejestracja: 17 maja 2007, 13:09

Cykliczny backup serwera

Post autor: Kamcio »

Witajcie,

wprawdzie znalazlem kilka tematow nt. robienia kopii zapasowych, jednakze nie odpowiedzialy one w 100% na moje pytania.
Otoz mam sobie serwer, na ktorym jest apache, mysql, postfix. Poszukuje jakis program, ktory by automatycznie robil raz w tygodniu backupy calego twardego dysku, tzn. ze jak padnie mi np. twardy dysk to "jedynie" bede musial tym programem przegrac na dany dysk kopie zapasowa i wszystko bedzie po staremu (cos ala Norton Ghost dla Windowsa).
Pliki chcialbym aby byly zapisywane na innym komputerze w lokalnej sieci.
Gdyby dany program po dokonaniu kopii wylaczal/restetowal komputer to dopiero bylbym zadowolony :-)

Z gory dziekuje Wam za pomoc
kuchar
Posty: 19
Rejestracja: 25 czerwca 2006, 22:39

Post autor: kuchar »

jakiś prosty skrypcik z rsync powinien wystarczyć
gorson
Beginner
Posty: 115
Rejestracja: 23 września 2007, 14:36

Post autor: gorson »

Kamcio
Posty: 35
Rejestracja: 17 maja 2007, 13:09

Post autor: Kamcio »

Dzieki Gorson,

a mozecie mi pomoc i powiedziec jaka mam podac sciezke jesli kopia zapasowa ma byc zapisywana na innym komputerze o IP 192.168.0.20 w katalogu backup?
thalcave
Junior Member
Posty: 526
Rejestracja: 03 maja 2007, 19:57
Lokalizacja: gdynia

Post autor: thalcave »

Kamcio, możesz pierw zapisać backup na lokalnym kompie
a potem skryptem poniższym przenieść plik:

Kod: Zaznacz cały

#!/bin/bash
scp ~/plik.backupu user@192.168.0.20:/backup/
rm ~/plik.backupu
Ale na tym komputerze 192.168.0.20 musisz mieć ssh zainstalowane.
Kamcio
Posty: 35
Rejestracja: 17 maja 2007, 13:09

Post autor: Kamcio »

Tylko ze ten komputer Thalcave to NAS... jak juz to moglbym przez ftp, ssh odpada.
chyl-o
Junior Member
Posty: 621
Rejestracja: 24 maja 2006, 21:06
Lokalizacja: Lublin

Post autor: chyl-o »

Mało eleganckie, ale nie mam czasu poprawić. Działa, bo robię tym kopie zapasowe baz danych i wysyłam na oddzielny serwer backupa:

Kod: Zaznacz cały

# Tworzenie kopii zapasowej baz:

# Aktualna data
month=`date +%m`
day=`date +%d`
year=`date +%y`

user="nazwaUsera"
lokalnyFTP="/var/www/web3/html/logi"

echo -e "Kopiuje bazy, prosze czekac...\n"
`cp -R /var/lib/mysql ./`

echo -e "Pakuje bazy, prosze czekac...\n"
`tar -c mysql > mysql.tar`

echo -e "Kompresuje bazy, prosze czekac...\n"
`gzip -cv mysql.tar > mysql.$day.$month.$year.tar.gz`

# Nazwa aktualnej bazy
aktualnaKopia="mysql.$day.$month.$year.tar.gz"

# Ustawianie praw dostepu( odkomentowac jesli konieczne i ustawic odpowiedniego uzytkownika w zmiennej user )
# echo -e "Ustawiam prawa dostepu\n"
# `chown $user:$user $aktualnaKopia`

# Przenoszenie kopii na lokalny serwer ftp( odkomentowac jesli konieczne, lub zmienic mv na cp jesli ma byc wykonane kopiowanie na lokalny ftp )
#echo -e "Przenosze kopie na lokalny serwer ftp...\n"
#`mv $aktualnaKopia $lokalnyFTP/`
#`cp $aktualnaKopia $lokalnyFTP/`

# To na koncu jest i nie uzywac tych opcji!!!
#echo "Usuwam niepotrzebne pliki..."
#`rm -fr mysql mysql.tar`

# odczyt z pliku

exec 6<backupConfig
i=0
# No ta linijke zostawiam zeby straszyc swoje dzieci, k***** jak mozna przypisac do zmiennej wartosc ktora jeszcze nie jest nawet zdefiniowana... ?
# doUsuniecia=${tab[0]}

# Troche duzo tych petli, ale to w nastepnej wersji poprawie...
while read -u 6 dane
do
        tab[$i]=$dane
        i=$((i+1))
done

i=-1
doUsuniecia=${tab[0]}

for x in ${tab[@]}
do
        i=$((i+1))
        temp[$i]=$x
done

i=$((i+1))
temp[$i]=$aktualnaKopia

exec 6<&-

# zamiana i zapis

exec 6>backupConfig

i=-1
j=0

for x in ${tab[@]}
do
        i=$((i+1))
        j=$((j+1))
        tab[$i]=${temp[$j]}
done

i=-1

for x in ${tab[@]}
do
        echo "$x" >> backupConfig
        echo "$x "
done

exec 6<&-

# Po wykonaniu operacji plikowych mozna zabrac sie za usuwanie i uploadowanie tego co trzeba
# na zdalny serwer ftp. Co nas interesuje jest juz w zmiennych $aktualnaKopia oraz $doUsuniecia
# Najpierw usuwamy najstarszy plik, nastepnie uploadujemy najnowsza kopie. to na dole to debug
# echo -e "$doUsuniecia <- ten plik ma usunac \n"
{
        echo -e "USER user\nPASS haslo\nCWD katalogKopii\nDELE $doUsuniecia\n"
        echo "QUIT"
} | nc serwerBackupHost 21

# Uploadowanie odpowiedniego pliku
echo -e "Lacze sie z ftp...\n";
`ncftpput -u user -p haslo serwerBackup(host) /bazy $aktualnaKopia`

# Na koniec usuwanie niepotrzebnych plikow( mysql, mysql.tar, mysql.tar.gz, ta najstarsza kopia )
echo -e "Sprzatam po sobie...\n"
`rm -fr mysql mysql.tar $doUsuniecia`
I backupConfig(nazwy plikow do podmieniania ):

Kod: Zaznacz cały

mysql.29.09.07.tar.gz
mysql.30.09.07.tar.gz
mysql.01.10.07.tar.gz
Mam nadzieję że się przyda, do robienia kopii oddzielnych katalogów analogicznie.
loleq
Posty: 66
Rejestracja: 25 czerwca 2006, 21:59
Lokalizacja: Szczecin

Post autor: loleq »

Zastanowiłbym się nad dd i AoE.
ODPOWIEDZ