Backup script

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé.

tizenkettő + 14 =