#!/bin/bash # "@(#)$Header: mm_backup.sh V1.0 - By: msimoni # ========================================================================= # Name : Michael Simoni # date : Fri Jul 16 17:44:41 EDT 2010 # Purpose: backup men&mice data ################################################################################ # CVS Information # $Source: /var/cvs/DNS/men_mice/mm/mm_backup.sh,v $ # $Author: msimoni $ # $Date: 2012/06/10 18:34:42 $ # $Id: mm_backup.sh,v 1.4 2012/06/10 18:34:42 msimoni Exp $ # $Revision: 1.4 $ ################################################################################ # @see The GNU Public License (GPL): http://www.opensource.org/licenses/gpl-license.php # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ################################################################################ # Notes: ################################################################################ # modify the environment variables to point to your backup directory # and your data directory. Also modify the exclude files if necessary. ############################################################################### # usage ############################################################################### usage() { cat <<-EOF $PROGNAME: -b backupdir EOF } ############################################################################### # make sure everything exist that is needed ############################################################################### check_env() { if [ ! -d $BACKUP_DIR ] then echo "WARNING: $BACKUP_DIR does not exist. Creating it." mkdir $BACKUP_DIR fi if [ ! -d $ARCHIVE_DIR ] then echo "WARNING: $ARCHIVE_DIR does not exist. Creating it." mkdir $ARCHIVE_DIR fi } ############################################################################### # Create log ############################################################################### create_log() { cat >>${CHANGE_LOG} <<-EOF TITLE : backup of Men&Mice data DATE : `date` PATH : `pwd` CHANGE_LOG : $CHANGE_LOG_MARKER EXCLUDE_FILE : $EXCLUDE_FILE BACKUPFILE : ${BACKUP_FILE}.gz LOGNAME : $LOGNAME USER : $USERNAME ------------------------------------------------------------------------------ processes: `/bin/ps -ef | grep named | /bin/grep -v $PROGNAME | grep -v grep` ------------------------------------------------------------------------------ Files excluded: `cat $EXCLUDE_FILE` ============================================================================== EOF } ############################################################################### # Create exclude file ############################################################################### create_exclude_file() { cat >$EXCLUDE_FILE <<-EOF ./OLD ./bak ./work ./proc ./dev EOF } ############################################################################### # Create backup ############################################################################### create_backup_TEST() { $MM_BIN/mm_util.pl -l 2 -m $MASTER -c $CENTRAL -u administrator -p $PASSWORD -b #only admin can execute a backup $MM_BIN/mm_util.pl -l 2 -m $MASTER -c $CENTRAL -u administrator -p $PASSWORD -r > $BACKUP_DIR/${PREFIX}_mm_records.txt $MM_BIN/mm_util.pl -l 2 -m $MASTER -c $CENTRAL -u administrator -p $PASSWORD -i > $BACKUP_DIR/${PREFIX}_mm_servers.txt $MM_BIN/mm_util.pl -l 2 -m $MASTER -c $CENTRAL -u administrator -p $PASSWORD -a > $BACKUP_DIR/${PREFIX}_mm_zones.txt # copy the database backup back to the backup servers. #scp -i id_rsa_nn user@server:pathtobackup $BACKUP_DIR/${PREFIX}_mmsuite.db.bak cd $BACKUP_DIR if [ "$PREFIX" = "" ] then echo "ERROR. PREFIX is empty." fi $TAR Xcf $EXCLUDE_FILE $BACKUP_FILE ./${PREFIX}_* if [ $? -ne 0 ] then RC=1 exit $RC fi $GZIP $BACKUP_FILE if [ $? -ne 0 ] then RC=2 exit $RC fi find $ARCHIVE_DIR -name "${PREFIX}_mm_backup*.gz" -mtime +14 -exec rm {} \; } ############################################################################### # Set up global Variables ############################################################################### RC=0 PROGNAME=$0 THEDATE=`date +%Y_%m_%d_%H%M%S` TAR=/bin/tar GZIP=/bin/gzip MM_BIN=/home/share/mm ARCHIVE_DIR=/home/share/mm/archive BACKUP_DIR=/home/share/mm/backups CHANGE_LOG=$BACKUP_DIR/change_log CHANGE_LOG_MARKER=$CHANGE_LOG EXCLUDE_FILE=/tmp/named_tar_exclude BACKUP_FILE=$ARCHIVE_DIR/mm_backup_${THEDATE}_tar PASSWORD=administrator #if [ $# -eq 0 ] #then # usage # exit #fi while getopts h?b:p: OPT do case $OPT in b) BACKUP_FILE=$OPTARG ;; p) PASSWORD=$OPTARG ;; h) usage ; exit 1 ;; ?) usage ; exit 1 ;; *) usage ; exit 1 ;; esac done shift $(($OPTIND - 1)) #echo "Remaining arguments are:\n" "$*" check_env create_exclude_file >$CHANGE_LOG PREFIX=TEST BACKUP_FILE=$ARCHIVE_DIR/${PREFIX}_mm_backup_${THEDATE}_tar MASTER=dumbo.int.zebulak.com CENTRAL=catty.int.zebulak.com create_log create_backup_${PREFIX} exit $RC