Jelenleg ez a script menti valamennyi szerverünket, egy /BACKUP alá mountolt iscsi-n keresztül megosztott könyvtárba.
#!/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