Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Author: Anand Subramanian
- # Publisher: http://LinuXplained.com
- # 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
- #
- #############BEGIN EDIT AREA######################
- # BELOW ARE SOME REQUIRED SETTINGS. CONFIGURE THEM PROPERLY BEFORE USING
- # THE SCRIPT
- # DBHOSTNAME is the host name of the host that hosts yours MySQL database.
- # You can get this from GoDaddy. Just replace the entire contents after =
- # with your database host name.
- DBHOSTNAME=xxxxx.db.xxxxxxx.hostedresource.com
- # DBUSERNAME is the username to access the MySQL database. Just replace
- # the word databaseusername below with your username. No
- # quotes needed.
- DBUSERNAME=databaseusername
- # DBPASSWORD is the password to access the MySQL database. Just replace
- # the word databasepassword below with your password database. No
- # quotes needed.
- DBPASSWORD=databasepassword
- # DBNAME is the MySQL database that needs to be backed up. Typically, in
- # GoDaddy Linux Hosting this is the same as the DBUSERNAME
- DBNAME=databasename
- # Path of the folder where backups will be stored. $HOME/html will
- # automatically put you in the hosting accounts root folder. GoDaddy MySQL
- # databases are normally stored in the _db_backups folder within your base
- # hosting folder. If the folder does not exist create it before running the
- # script. You can also create a subfolder within _db_backups folder if you
- # would like to backup the database to a separate folder. Alternatively,
- # you can backup to an entirely different folder of your choice. Whatever
- # you choose to do, ensure that the path is correctly specified below.
- BACKUPFOLDER=$HOME/html/_db_backups/backupfolder
- # Should the script delete older files based on the conditions you set
- # below (Y or N - uppercase letters only). Choosing Y will maintain only
- # recent backups based on your settings below. Choosing N will keep all
- # the backups from the past.
- DELETEFILES=Y
- # Do daily backups Y or N? (one uppercase letter only)
- DAILYBACKUP=Y
- # Number of recent daily backups to keep. The default is 6 (Sun-Fri) with
- # Weekly backup on Sat.All previous backups will be deleted. This is
- # meaningless unless DAILYBACKUP is set to Y.
- NUMDAILYBACKUPS=6
- # Do weekly backups Y or N? (one uppercase letter only). Weekly backups
- # are done on Saturdays.
- WEEKLYBACKUP=Y
- # Number of recent weekly backups to keep. The default is 4. All previous
- # weekly backups will be deleted. This is meaningless unless WEEKLYBACKUP
- # is set to Y.
- NUMWEEKLYBACKUPS=4
- # Do monthly backups Y or N? (one uppercase letter only). Monthly backups
- # are done on the last day of the month.
- MONTHLYBACKUP=Y
- # Number of recent monthly backups to keep. The default is 2. All previous
- # monthly backups will be deleted. This is meaningless unless
- # MONTHLYBACKUP is set to Y.
- NUMMONTHLYBACKUPS=2
- #############END EDIT AREA######################
- #
- # DO NOT EDIT ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING.
- # WHILE YOU CAN EDIT IT TO CUSTOMIZE HOW THE SCRIPT WORKS, DOING SO CAN
- # BREAK THE FUNCTIONING OF THIS SCRIPT.
- #
- TODATE=$(date +%d)
- TOMORROW=`date +%d -d "1 day"`
- TODAY=$(date +%a)
- MONTH=$(date +%B)
- WEEK=$(date +%U)
- if [ $TODATE -gt $TOMORROW ] && [ "$MONTHLYBACKUP" == "Y" ]
- then
- /usr/bin/mysqldump -h $DBHOSTNAME -u $DBUSERNAME -p$DBPASSWORD $DBNAME | gzip > $BACKUPFOLDER/$DBNAME'_'`date '+%m-%d-%Y'`'_'$MONTH.sql.gz
- else
- if [ "$TODAY" == "Sat" ] && [ "$WEEKLYBACKUP" == "Y" ]
- then
- /usr/bin/mysqldump -h $DBHOSTNAME -u $DBUSERNAME -p$DBPASSWORD $DBNAME | gzip > $BACKUPFOLDER/$DBNAME'_'`date '+%m-%d-%Y'`'_'Week$WEEK.sql.gz
- else
- if [ "$DAILYBACKUP" == "Y" ]
- then
- /usr/bin/mysqldump -h $DBHOSTNAME -u $DBUSERNAME -p$DBPASSWORD $DBNAME | gzip > $BACKUPFOLDER/$DBNAME'_'`date '+%m-%d-%Y'`'_'$TODAY.sql.gz
- fi
- fi
- fi
- if [ "$DELETEFILES" == "Y" ]
- then
- NUMWEEKLY=$[$NUMWEEKLYBACKUPS*7]
- NUMMONTHLY=$[$NUMMONTHLYBACKUPS*31]
- find $BACKUPFOLDER/*Sun.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Mon.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Tue.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Wed.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Thu.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Fri.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Sat.sql.gz -type f -mtime +$NUMDAILYBACKUPS -delete 2> /dev/null
- find $BACKUPFOLDER/*Week*.sql.gz -type f -mtime +$NUMWEEKLY -delete 2> /dev/null
- find $BACKUPFOLDER/*January.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*February.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*March.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*April.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*May.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*June.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*July.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*August.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*September.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*October.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*November.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- find $BACKUPFOLDER/*December.sql.gz -type f -mtime +$NUMMONTHLY -delete 2> /dev/null
- fi
Add Comment
Please, Sign In to add comment