Mali ali funcionalni backup script

#! /bin/sh

#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

ima li neko testiranu diff backup scriptu ?

Imam ja… ali ne trenutno :slight_smile: poslaću je večeras.

ako se nekome mozda desavalo :slight_smile:

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 :smiley:
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo :slight_smile:

rdiff-backup host::src_dir host2::dest_dir

Za backupe baza nema druge nego koristiti backup alate koji dođu uz bazu.

pa mozes to odraditi localno sa rsync

rsync -avz dir1/ dir2

[quote=Bo]ako se nekome mozda desavalo :slight_smile:

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 :smiley:
Kasnije sam dobio sugestiju dump-a te kreiranja baze ponovo :)[/quote]
pa izmislise ljudi mysqldump za te vrste backup Bo :slight_smile:

[quote=die7]pa mozes to odraditi localno sa rsync

rsync -avz dir1/ dir2[/quote]
Nije rsync za backupa, već za transfera podataka :smiley:

evo ovako nesto na osnovu one prve

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 :slight_smile:

[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 :slight_smile:

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 :slight_smile: i kombinacija toolsa kao u primjeru gore…

Pogledaj malo na http://en.wikipedia.org/wiki/Rsync dio “Variations”

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.

[quote=Bo]ako se nekome mozda desavalo :slight_smile:

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 :smiley:
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=maher_][quote=Bo]ako se nekome mozda desavalo :slight_smile:

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 :smiley:
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

dump-ovanje mi je pravilo probleme sa nekoliko stvari, a ovaj rsnapshot cu morati malo da pregledam, po onome sto navode je zanimljivo resenje.

i nadje li ga?

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

kraj[/code]