Created
July 28, 2014 14:43
-
-
Save sahilseth/98e47fd863f8496cfcb5 to your computer and use it in GitHub Desktop.
panel backup script from Richard Ferreira
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
#---------------------------------------------------------------- | |
# Daily Backup Routine - Backup and Sync to Dropbox | |
# This script creates a backup using today's date, then deleted | |
# any backups made 3 days ago. If run every day it will ensure | |
# you have a week's worth of backups of your MySQL databases and | |
# zPanel web directories. | |
# | |
# Uses whatever Dropbox account is running on the server. | |
# | |
# Written by Richard Ferreira for the backup of zPanel websites. | |
# Contact me - richard[at]beetle001.com | |
#---------------------------------------------------------------- | |
# | |
# Before we get started, we should set some parameters. We'll need these for later. | |
# The webserver's datafiles: | |
WEBDIR="/var/zpanel/hostdata/" | |
# Where do we want the backup to go? (SET THIS - IT'S A TEMP FOLDER) | |
BACKUP="/root/backup" | |
# Where is our dropbox folder? (SET THIS TO YOUR ABSOLUTE BACKUP PATH) | |
DROPBOX="/root/Dropbox/Backups | |
# What do we want our date to look like? | |
NOW=$(date +"%d-%m-%Y") | |
# We need to know the date 3 days ago to purge any backups that were made 3 days ago. | |
# This ensures we don't keep unnecessarily old backups. | |
# It doesn't matter if it skips one every now and then - we'll just have to check manually from time to time. | |
# If you want to keep more days backups, change the "3 days ago" to "x days ago" | |
DAYSAGO=$(date --date="3 days ago" +"%d-%m-%Y") | |
# What should our file backup look like? | |
WEBFILE="webdirs-full-$NOW.tar.gz" | |
# Our MySQL Login information and some paths (we'll use 'which' to make sure we get them): | |
SQLUSER="root" | |
# Don't forget to change the root password here! | |
SQLPASS="put your root sql password zpanel gave you here" | |
SQLHOST="localhost" | |
MYSQL="$(which mysql)" | |
MYSQLDUMP="$(which mysqldump)" | |
GZIP="$(which gzip)" | |
# | |
# Let's just, for sanity's sake, make sure our temp backup folder exists. | |
mkdir $BACKUP | |
# DON'T EDIT ANYTHING BELOW THIS LINE | |
#---------------------------------------------------------------- | |
# Now let's start! | |
# Let's get the databases that we want to backup. | |
DBS="$($MYSQL -u $SQLUSER -h $SQLHOST -p$SQLPASS -Bse 'show databases')" | |
# Now let's dump them to .sql files and put them in our backup directory. | |
for db in $DBS | |
do | |
FILE=$BACKUP/mysql-$db.$NOW.gz | |
$MYSQLDUMP -u $SQLUSER -h $SQLHOST -p$SQLPASS $db | $GZIP -9 > $FILE | |
done | |
# | |
# Let's shove the whole webserver directory into a tarball and throw that in with the sql files: | |
tar -zcvf /root/backup/$WEBFILE $WEBDIR | |
# That's all done - we should put the backups on Copy by putting them into our Copy folder. | |
# First let's make a folder for today. | |
mkdir $DROPBOX/$NOW | |
# Copy our backups into it. | |
cp -R $BACKUP/* $DROPBOX/Asterix/$NOW | |
# We can delete the backup we made 3 days ago from Copy now. | |
rm -rf $DROPBOX/$DAYSAGO | |
# And clear out the temporary director for next time. | |
rm $BACKUP/* | |
# Job well done! | |
# Have a beer and relax! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment