Jelenleg ez a script menti valamennyi szerverünket, egy /BACKUP alá mountolt iscsi-n keresztül megosztott könyvtárba.
Letöltés
#!/bin/bash
# Ellenorizzuk hogy letezik-e a config file
if [ -f /etc/bkp.conf ]; then source /etc/bkp.conf ; else echo /etc/bkp.conf not found; exit ;fi
DATE=`date +%Y-%m-%d`
#
#stat file beallitasa, backup utan ebbe kerulnek a hibak is.
#
STATFILE=/BACKUP/stat/$HOST.stat
rm $STATFILE
touch $STATFILE
#
# Beallitjuk a mentesi konyvtarat a config file alapjan
#
BACKUPDIR=/BACKUP/$HOST/
#
# A torlendo backup beallitasa config alapjan
#
LASTDATE=`date +%Y-%m-%d --date="$DAYS days ago"`
if [ -d /$BACKUPDIR/$LASTDATE ]; then rm -rf /$BACKUPDIR/$LASTDATE ; fi
echo $HOST >>/BACKUP/backuplog/$HOST-backup.log
date >>/BACKUP/backuplog/$HOST-backup.log
mkdir /$BACKUPDIR/$DATE
MDB=$BACKUPDIR/$DATE/mysql/
if [ "$EXCLUDE" != "" ]; then
tar -cjf /$BACKUPDIR/$DATE/backup.tar.bz2 --exclude=$EXCLUDE $DIRS
else
tar -cjf /$BACKUPDIR/$DATE/backup.tar.bz2 $DIRS
fi
STAT=$?
echo $STAT>>/BACKUP/backuplog/$HOST-backup.log
echo FS $STAT $DATE >>$STATFILE
if [ $MYSQLBACKUP = 0 ]; then
date >>/BACKUP/backuplog/$HOST-backup.log
exit ;
fi
#
# backup konyvtar a mysql-nek
#
mkdir /$BACKUPDIR/$DATE/mysql/
# Db-nkent csinalunk mentest az adatbazisrol, majd betomoritjuk
STAT=0
DBS="$(mysql -u$MYSQLUSER -p$MYSQLPASSWD -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$EXCLUDEDB" != "" ];
then
for i in $EXCLUDEDB
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$HOST.$NOW.gz"
mysqldump -u$MYSQLUSER -p$MYSQLPASSWD $db |bzip2 >$MDB/$db.sql.bz2
STAT=$?
echo $db $STAT>>/BACKUP/backuplog/$HOST-backup.log
echo DB $db $STAT>>$STATFILE
fi
done
date >>/BACKUP/backuplog/$HOST-backup.log
Itt talátlható a config file:
# Ha az sql-t is menteni akarjuk , akkor az ertek 1, ha nem akkor 0
MYSQLBACKUP=1
# celszeru valos hosztnevet beallitani, ha kozpontilag mentunk, hogy konnyebben tudjuk azonositani # a mentest, ebbe az alkonyvtarba teszi a menteseket
HOST=host.name.tld
# beallithatjuk hany napig orizze a backupot
DAYS=7
# mentesre varo konyvtarak felsorolasa
DIRS="/etc /var/www /home"
# olvasasi joggal rendelkezo sql user beallitasa (ha nem mentunk db-t akkor uresen hagyhato)
MYSQLUSER=backupuser
MYSQLPASSWD=backuppass
# amennyiben nem akarunk menteni bizonyos konyvtarakat, itt felsorolhatjuk
EXCLUDE="/home/luzer /home/senki"
# ugyanezt adatbazisokkal is megtehetjuk
EXCLUDEDB="tmpdb"
# a 2 utolso parameter teljes egeszeben elhagyhato
nagios script a mentések ellenőrzésére.
#!/bin/sh
PROGPATH=`echo | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
. $PROGPATH/utils.sh
# Dátumok beállítása
DATE=`date +%Y-%m-%d`
DATE1=`date +%Y-%m-%d --date="1 days ago"`
DATE2=`date +%Y-%m-%d --date="2 days ago"`
BACKUPPATH=/BACKUP/stat/stat
if [ -f $BACKUPPATH ]; then
EXIST=1;
else
echo ERROR: Statfile not found!;
exit $STATE_CRITICAL ;
fi;
LASTBK=`grep FS $BACKUPPATH | awk '{print }'`
STAT=`grep FS $BACKUPPATH | awk '{print }'`
#
# Itt beallithatjuk hany nap utan tekintjük WARNING illetve ERROR statusznak a mentas hianyat.
# Csak ERROR és WARNING eseten erdemes exit-elni, hogy lefuthasson a kovetkezo ellenorzes.
#
case "$LASTBK" in
$DATE)
# ma tortent mentes
;;
$DATE1)
# tegnap tortent mentes
;;
$DATE2)
# tegnapelott tortént mentes
;;
*)
echo "WARNING: Utolso mentes: $LASTBK";
exit $STATE_WARNING;
;;
esac
case "$STAT" in
0)
echo "OK: Utolso mentes: $LASTBK";
exit $STATE_OK;
;;
1)
echo "WARNING: Nyitott file-ok nem menthetoek";
exit $STATE_WARNING;
;;
*)
echo "ERROR: Nem tortent mentes!";
exit $STATE_CRITICAL ;
;;
esac