I like using the latest option but it makes a physical copy. I have modified the code a little so it will only create a symbolic link to the latest file rather than double the space required.
Replace everything after this line:
# Compression function plus latest copy
With this code:
SUFFIX=""compression(){if["$COMP"="gzip"];thengzip-f"$1"echoechoBackupInformationfor"$1"gzip-l"$1.gz"SUFFIX=".gz"elif["$COMP"="bzip2"];thenechoCompressioninformationfor"$1.bz2"bzip2-f-v$12>&1SUFFIX=".bz2"elseecho"No compression option set, check advanced settings"fi#if [ "$LATEST" = "yes" ]; then# cp $1$SUFFIX "$BACKUPDIR/latest/"#fi if["$LATEST"="yes"];thenln-s$1$SUFFIX"$BACKUPDIR/latest/$2$SUFFIX"fireturn0}# Run command before we beginif["$PREBACKUP"]thenecho======================================================================echo"Prebackup command output."echoeval$PREBACKUPechoecho======================================================================echofiif["$SEPDIR"="yes"];then# Check if CREATE DATABSE should be included in Dumpif["$CREATE_DATABASE"="no"];thenOPT="$OPT --no-create-db"elseOPT="$OPT --databases"fielseOPT="$OPT --databases"fi# Hostname for LOG informationif["$DBHOST"="localhost"];thenHOST=`hostname`if["$SOCKET"];thenOPT="$OPT --socket=$SOCKET"fielseHOST=$DBHOSTfi# If backing up all DBs on the serverif["$DBNAMES"="all"];thenDBNAMES="`mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST --batch --skip-column-names -e "showdatabases"| sed 's/ /%/g'`"# If DBs are excludedforexcludein$DBEXCLUDEdoDBNAMES=`echo $DBNAMES | sed "s/\b$exclude\b//g"`doneMDBNAMES=$DBNAMESfiecho======================================================================echoAutoMySQLBackupVER$VERechohttp://sourceforge.net/projects/automysqlbackup/echoechoBackupofDatabaseServer-$HOSTecho======================================================================# Test is seperate DB backups are requiredif["$SEPDIR"="yes"];thenechoBackupStartTime`date`echo======================================================================# Monthly Full Backup of all Databasesif[$DOM="01"];thenforMDBin$MDBNAMESdo# Prepare $DB for usingMDB="`echo $MDB | sed 's/%/ /g'`"if[!-e"$BACKUPDIR/monthly/$MDB"]# Check Monthly DB Directory exists.thenmkdir-p"$BACKUPDIR/monthly/$MDB"fiechoMonthlyBackupof$MDB...dbdump"$MDB""$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql"compression"$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql""${MDB}_$DATE.$M.$MDB.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.sql$SUFFIX"echo----------------------------------------------------------------------donefiforDBin$DBNAMESdo# Prepare $DB for usingDB="`echo $DB | sed 's/%/ /g'`"# Create Seperate directory for each DBif[!-e"$BACKUPDIR/daily/$DB"]# Check Daily DB Directory exists.thenmkdir-p"$BACKUPDIR/daily/$DB"fiif[!-e"$BACKUPDIR/weekly/$DB"]# Check Weekly DB Directory exists.thenmkdir-p"$BACKUPDIR/weekly/$DB"fi# Weekly Backupif[$DNOW=$DOWEEKLY];thenechoWeeklyBackupofDatabase\($DB\)echoRotating5weeksBackups...if["$W"-le05];thenREMW=`expr 48 + $W`elif["$W"-lt15];thenREMW=0`expr $W - 5`elseREMW=`expr $W - 5`fievalrm-fv"$BACKUPDIR/weekly/$DB_week.$REMW.*"echodbdump"$DB""$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql"compression"$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql""${DB}_week.$W.$DATE.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql$SUFFIX"echo----------------------------------------------------------------------# Daily BackupelseechoDailyBackupofDatabase\($DB\)echoRotatinglastweeksBackup...evalrm-fv"$BACKUPDIR/daily/$DB/*.$DOW.sql.*"echodbdump"$DB""$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql"compression"$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql""${DB}_$DATE.$DOW.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.sql$SUFFIX"echo----------------------------------------------------------------------fidoneechoBackupEnd`date`echo======================================================================else# One backup file for all DBsechoBackupStart`date`echo======================================================================# Monthly Full Backup of all Databasesif[$DOM="01"];thenechoMonthlyfullBackupof\($MDBNAMES\)...dbdump"$MDBNAMES""$BACKUPDIR/monthly/$DATE.$M.all-databases.sql"compression"$BACKUPDIR/monthly/$DATE.$M.all-databases.sql""$DATE.$M.all-databases.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$DATE.$M.all-databases.sql$SUFFIX"echo----------------------------------------------------------------------fi# Weekly Backupif[$DNOW=$DOWEEKLY];thenechoWeeklyBackupofDatabases\($DBNAMES\)echoechoRotating5weeksBackups...if["$W"-le05];thenREMW=`expr 48 + $W`elif["$W"-lt15];thenREMW=0`expr $W - 5`elseREMW=`expr $W - 5`fievalrm-fv"$BACKUPDIR/weekly/week.$REMW.*"echodbdump"$DBNAMES""$BACKUPDIR/weekly/week.$W.$DATE.sql"compression"$BACKUPDIR/weekly/week.$W.$DATE.sql"" week.$W.$DATE.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/week.$W.$DATE.sql$SUFFIX"echo----------------------------------------------------------------------# Daily BackupelseechoDailyBackupofDatabases\($DBNAMES\)echoechoRotatinglastweeksBackup...evalrm-fv"$BACKUPDIR/daily/*.$DOW.sql.*"echodbdump"$DBNAMES""$BACKUPDIR/daily/$DATE.$DOW.sql"compression"$BACKUPDIR/daily/$DATE.$DOW.sql""$DATE.$DOW.sql"BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DATE.$DOW.sql$SUFFIX"echo----------------------------------------------------------------------fiechoBackupEndTime`date`echo======================================================================fiechoTotaldiskspaceusedforbackupstorage..echoSize-Locationecho`du -hs "$BACKUPDIR"`echoecho======================================================================echoIfyoufindAutoMySQLBackupvaluablepleasemakeadonationatechohttp://sourceforge.net/project/project_donations.php?group_id=101066echo======================================================================# Run command when we're doneif["$POSTBACKUP"]thenecho======================================================================echo"Postbackup command output."echoeval$POSTBACKUPechoecho======================================================================fi#Clean up IO redirectionexec1>&66>&-# Restore stdout and close file descriptor #6.exec1>&77>&-# Restore stdout and close file descriptor #7.if["$MAILCONTENT"="files"]thenif[-s"$LOGERR"]then# Include error log if is larger than zero.BACKUPFILES="$BACKUPFILES $LOGERR"ERRORNOTE="WARNING: Error Reported - "fi#Get backup sizeATTSIZE=`du -c $BACKUPFILES | grep "[[:digit:][:space:]]total$" |sed s/\s*total//`if[$MAXATTSIZE-ge$ATTSIZE]thenBACKUPFILES=`echo "$BACKUPFILES" | sed -e "s# # -a #g"`#enable multiple attachmentsmutt-s"$ERRORNOTE MySQL Backup Log and SQL Files for $HOST - $DATE"$BACKUPFILES$MAILADDR<$LOGFILE#send via muttelsecat"$LOGFILE"|mail-s"WARNING! - MySQL Backup exceeds set maximum attachment size on $HOST - $DATE"$MAILADDRfielif["$MAILCONTENT"="log"]thencat"$LOGFILE"|mail-s"MySQL Backup Log for $HOST - $DATE"$MAILADDRif[-s"$LOGERR"]thencat"$LOGERR"|mail-s"ERRORS REPORTED: MySQL Backup error Log for $HOST - $DATE"$MAILADDRfielif["$MAILCONTENT"="quiet"]thenif[-s"$LOGERR"]thencat"$LOGERR"|mail-s"ERRORS REPORTED: MySQL Backup error Log for $HOST - $DATE"$MAILADDRcat"$LOGFILE"|mail-s"MySQL Backup Log for $HOST - $DATE"$MAILADDRfielseif[-s"$LOGERR"]thencat"$LOGFILE"echoecho"###### WARNING ######"echo"Errors reported during AutoMySQLBackup execution.. Backup failed"echo"Error log below.."cat"$LOGERR"elsecat"$LOGFILE"fifiif[-s"$LOGERR"]thenSTATUS=1elseSTATUS=0fi# Clean up Logfileevalrm-f"$LOGFILE"evalrm-f"$LOGERR"exit$STATUS
Very useful script!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I like using the latest option but it makes a physical copy. I have modified the code a little so it will only create a symbolic link to the latest file rather than double the space required.
Replace everything after this line:
# Compression function plus latest copy
With this code:
Very useful script!