Backup websites and MySQL database on a linux webserver

Posted on 03/08/10 No Comments

One of the servers my company has, runs CentOS with plesk 8 on it. Unfortunately there isn’t any easy way to backup all the sites and databases on the server, so I created a nice simple script to do just that.



currentDate=`date '+%Y%m%d'`
mkdir $backupFolder$currentDate

cd $backupFolder$currentDate

for i in `ls "$activeFolder"`; do
	if [ -d $activeFolder$i ]
		echo "zipping: $i"
		tar czf $i.tar.gz $activeFolder$i

# Create mysql backup folder
mkdir MySQL

# Go to backup folder
cd MySQL

# get a list of all databases
databases=`mysql --user=$dbUser --password=$dbPassword -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

# dump each database in turn
for db in $databases; do
    echo "Dumping database: $db"
    mysqldump --force --opt --user=$dbUser --password=$dbPassword --database $db > "$db.sql"

# Go to backup folder
cd $backupFolder$currentDate

# zip sql files
tar czf MySQL.tar.gz MySQL

# remove mysql backup folder
rm MySQL -rf

# Send e-mail notification
mail -s "Backup Is ready $currentDate" < /dev/null

If you use this script, I suggest you run it once a week in off peak time (4-5am), and keep backups of your MySQL database daily.

Post a Comment

Your email is never published or shared. Required fields are marked *