Created
June 1, 2012 23:10
-
-
Save compermisos/2855683 to your computer and use it in GitHub Desktop.
backup mysql db's "table a table"
This file contains hidden or 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 | |
# MySQL backup script Table based | |
# Copyright (c) 2012 Jesus Christian Cruz Acono <[email protected]> | |
# This script is licensed under GNU GPL version 2.0 or above | |
# --------------------------------------------------------------------- | |
######################### | |
######TO BE MODIFIED##### | |
### System Setup ### | |
BACKUP=YOUR_LOCAL_BACKUP_DIR | |
### MySQL Setup ### | |
MUSER="MYSQL_USER" | |
MPASS="MYSQL_USER_PASSWORD" | |
MHOST="localhost" | |
######DO NOT MAKE MODIFICATION BELOW##### | |
######################################### | |
### Binaries ### | |
TAR="$(which tar)" | |
GZIP="$(which gzip)" | |
MYSQL="$(which mysql)" | |
MYSQLDUMP="$(which mysqldump)" | |
### Today + hour in 24h format ### | |
YEAR$(date +"%Y") | |
MONTH$(date +"%M") | |
DAY=$(date +"%d") | |
HOUR=$(date +"%H") | |
### Create hourly dir ### | |
mkdir $BACKUP/$YEAR | |
mkdir $BACKUP/$YEAR/$MONTH | |
mkdir $BACKUP/$YEAR/$MONTH/$DAY | |
mkdir $BACKUP/$YEAR/$MONTH/$DAY/$HOUR | |
### Get all databases name ### | |
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" | |
for db in $DBS | |
do | |
### Create dir for each databases, backup tables in individual files ### | |
mkdir $BACKUP/live/$db | |
mkdir $BACKUP/tracked/$db | |
for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`; | |
do | |
FILE=$BACKUP/live/$db/$i.sql | |
echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i > $FILE | |
cp $FILE $BACKUP/tracked/$db | |
$GZIP -9 -f $FILE | |
done | |
ARCHIVE=$BACKUP/$YEAR/$MONTH/$DAY/$HOUR/$db.tar.gz | |
ARCHIVED=$BACKUP/live/$db | |
$TAR -cvf $ARCHIVE $ARCHIVED | |
rm -rf $BACKUP/live/$db/*.gz | |
cd $BACKUP/tracked/$db | |
#git commit -a -m "commit changes of the $DAY at $HOUR hour" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment