#ovdje ce se pohraniti backup
backupdir="/root/backupnag2spx"
koji folder treba backup-ovati
BACK="/var/www/nag2spx"
#vrijeme backupa koji dolazi kao sufix arhiva
timestamp=date +%Y%m%d_%H%M%S
Pack
tar -czf ${backupdir}/nagios_${timestamp}.tar.gz $BACK
1.Backup folder mora existirati
2.script mora bit chmod +x
3.crontab mora biti podesen aka :
min sat itd … user gdje lezi script
30 * * * * root /root/backup1.sh
na haman identican nacin koji je naveo die7 (negdje sam i postavio skriptu na forumu) radim backup /var/lib/mysql, ali desilo mi se nakon jednog restore da su tabele bile read only cak i za root acc., ono sto mi je prvo palo na pamet, a sto sam jedino nasao i na gugelu kasnije, su bile permisije file-ova, ali sve je ok. Mucio sam se sa tim nekih pola sata, na kraju sam ubacio backup koji je radjen dan prije problematicnog i sve proslo bez problema. Pretpostavljam da je problem zato sto se vjerovatno desio upis tokom backup-a file-ova, a ne radim lock i flush
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo
na haman identican nacin koji je naveo die7 (negdje sam i postavio skriptu na forumu) radim backup /var/lib/mysql, ali desilo mi se nakon jednog restore da su tabele bile read only cak i za root acc., ono sto mi je prvo palo na pamet, a sto sam jedino nasao i na gugelu kasnije, su bile permisije file-ova, ali sve je ok. Mucio sam se sa tim nekih pola sata, na kraju sam ubacio backup koji je radjen dan prije problematicnog i sve proslo bez problema. Pretpostavljam da je problem zato sto se vjerovatno desio upis tokom backup-a file-ova, a ne radim lock i flush
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo :)[/quote]
pa izmislise ljudi mysqldump za te vrste backup Bo
Evo Scripta slican prvoj ova koristi rsync za lokalni backup i arhiviranje, naknadno brise files iz backup destinacije osim arhiva
#! /bin/sh
#Ovdje ce se pohraniti backup tj. arhiv
backupdir=“/root/cilj_kraj2”
#Koji folder treba backup-ovati tj. files u njemu
BACK=“/root/cilj_kraj”
#vrijeme backupa koji dolazi kao sufix arhiva
timestamp=date +%Y%m%d_%H%M%S
Rsync vrsi izjednacavanje fajlova
rsync -avz /root/izvor_folder/ /root/cilj_kraj
Arhiv program pakuje i komprimira backup folder sa vremenskim pecatom
tar -czf ${backupdir}/nagios_${timestamp}.tar.gz $BACK
#zatim se prelazi u backup folder i brise sve sem arhiva u slicaju da sta zaluta (optional)
cd /root/cilj_kraj2 | find /root/cilj_kraj2 ! -name *.gz -exec rm {} ;
kao sto ce neki primejetit ovaj script ima malu gresku a to je da backup folder cilj_kraj je kopija izvornog, tako da se ima 2x bakup jedan arhiv drugi folder, kad budem malo imao vremena pogledacu da se ls outpajpa u text fajl pa da se izvrsi diff na osnovu textfajla umjesto foldera
[quote=adis][quote=die7]pa mozes to odraditi localno sa rsync
rsync -avz dir1/ dir2[/quote]
Nije rsync za backupa, već za transfera podataka :-D[/quote]
lies,damn lies
rsync mozes korisiti i za backup, rijec je izjednacavanja fajlova jednog znaci izvornog foldera sa ciljnim, u ovom slucaj je rsync jos i bolji jer moze radiit to inkrementalno…za to treba samo malo maste Adise i kombinacija toolsa kao u primjeru gore…
U krajnoj liniji rsync se i može koristiti za sinhronizaciju/backup, eventualno rotating backup, ali za pravi inkrementalni backup trebaš nešto bolje.
Primjer: backup jedne veće datoteke, 3 dana izmjena, potrošnja disk prostora (uz pomoć skupova):
[code]S1 = A2 u A1 u A0
S2 = A2 u (A2 \ A1) u (A1 \ A0)
S1 - rotating backup (rsync)
S2 - differential/incremental backup (rdiff, neki SCM alati)
u - unija
\ - razlika[/code]
Isti princip koriste SCM alati za (efikasno) pakovanje istorije koda. Npr. za mercurial: http://www.selenic.com/mercurial/wiki/index.cgi/Revlog
Eventualno se za rsync još koriste hard linkovi da bi se smanjila potrošnja diska, ali ako se promjeni i bajt datoteke, rsync mora napraviti novu kopiju, dok *diff alati snimaju samo deltu/promjenu.
na haman identican nacin koji je naveo die7 (negdje sam i postavio skriptu na forumu) radim backup /var/lib/mysql, ali desilo mi se nakon jednog restore da su tabele bile read only cak i za root acc., ono sto mi je prvo palo na pamet, a sto sam jedino nasao i na gugelu kasnije, su bile permisije file-ova, ali sve je ok. Mucio sam se sa tim nekih pola sata, na kraju sam ubacio backup koji je radjen dan prije problematicnog i sve proslo bez problema. Pretpostavljam da je problem zato sto se vjerovatno desio upis tokom backup-a file-ova, a ne radim lock i flush
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo :)[/quote]
moras prekopirat i mysql binarne logove . zavisi koja ti je baza , npr ako si tako kopiro innodb bez logova , teeeeeesko ces se namucit da je ponovo pustis u “pogon” . kad kopiras bazu na taj nacin, onda logove sa njom obavezno .
[quote=maher_][quote=Bo]ako se nekome mozda desavalo
na haman identican nacin koji je naveo die7 (negdje sam i postavio skriptu na forumu) radim backup /var/lib/mysql, ali desilo mi se nakon jednog restore da su tabele bile read only cak i za root acc., ono sto mi je prvo palo na pamet, a sto sam jedino nasao i na gugelu kasnije, su bile permisije file-ova, ali sve je ok. Mucio sam se sa tim nekih pola sata, na kraju sam ubacio backup koji je radjen dan prije problematicnog i sve proslo bez problema. Pretpostavljam da je problem zato sto se vjerovatno desio upis tokom backup-a file-ova, a ne radim lock i flush
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo :)[/quote]
moras prekopirat i mysql binarne logove . zavisi koja ti je baza , npr ako si tako kopiro innodb bez logova , teeeeeesko ces se namucit da je ponovo pustis u “pogon” . kad kopiras bazu na taj nacin, onda logove sa njom obavezno .
btw. ja koristim rsnapshot za “backup”[/quote]
rsnapshot je divan, korisitm takodje za vece stvari
Ovo je varijacija skripte koja pravi inkrementalni backup i uploaduje ga na SMB share koristeći smbclient. Imam negdje i varijantu koja koristi ncftpput.
[code]#!/bin/sh
Neke varijable… podesite po zelji
BACKUPDIR=/backup
SRCDIR=/opt/server
SHARENAME=//10.102.18.200/public
ADMIN=vljubovic adresa pobrisana
FILENAME=zajednicki dio imena fajla npr. backup
SERVERSTOP=ovdje stavite naredbu koja zaustavlja rad servera
SERVERSTART=…
Dan za full backup - 7=nedjelja
DAYFORFULL=7
DATESTAMP=date +%Y%m%d
DOW=date +%u
error()
{
# Ovo je error rutina, koga interesuje imam negdje varijantu skripte koja salje poruku na mail, ali
# to bi cron trebalo da rjesava
echo $1
}
echo Backup started at date… $SERVERSTOP
if [[ $DOW = $DAYFORFULL ]] ; then
rm -f $BACKUPDIR/$FILENAME.snap
fi
tar czg $BACKUPDIR/$FILENAME.snap -f $BACKUPDIR/$FILENAME-$DATESTAMP.tar.gz --ignore-failed-read $SRCDIR &>/dev/null
if [[ $? == 0 ]] ; then
echo Tar finished, restarting server at date…
else
error "Tar failed"
exit
fi
$SERVERSTART
Upload
cd $BACKUPDIR
smbclient $SHARENAME -Nc “put $FILENAME-$DATESTAMP.tar.gz” &>/dev/null
if [[ $? == 0 ]] ; then
rm -f $BACKUPDIR/$FILENAME-$DATESTAMP.tar.gz
echo Backup finished successfully at date!
else
error "Smbclient failed"
fi