|
发表于 2009-7-3 20:55:09
|
显示全部楼层
MySQL备份并上传到FTP的shell脚本
#!/bin/bash
########################################################################
## Author:zhao mingfeng ##
## Date:2009-05-12 ##
## Copyright(c) 2009, zhaomf All Rights Reserved ##
########################################################################
# this shell aimed at 2 points:
# 1.use mysqldump backup mysql database bwisp to /backup/mysql.
# 2.upload /backup/mysql backup files to a delicated ftp address.
# before start this shell you should set privileges use chmod as fllows
# chmod 755ftp.sh
echo
echo "__________________________start_________________________"
################ use mysqldump backup mysql database bwisp ################
echo "$(date +%Y-%m-%d_%H:%M:%S)"
echo "++++++++++start using mysqldump backup mysql database +++++++++"
MyUSER="bwisp2" #usename
MyPASS="bwisp2" #password
MyHOST="192.168.168.4" #hostname of host ip
# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
TAR="$(which tar)"
GZIP="$(which gzip)"
TOUCH="$(which touch)"
CAT="$(which cat)"
# Backup Dest directory, change this if you have someother location
DEST="/backup"
# Main directory where backup will be stored
MBD="$DEST/mysql"
# Get hostname
HOST="$(hostname)"
# Get data in yyyy-mm-dd format
NOW="$(date +"%Y-%m-%d")"
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
# DO NOT BACKUP these databases
FANFAN="information_schema"
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$FANFAN" != "" ];
then
for i in $FANFAN
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$HOST.$NOW.gz"
# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gzip file in backup dir
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
fi
done
echo "$(date +%Y-%m-%d_%H:%M:%S)"
echo "+++++++++ finished dump mysql databases to $MBD +++++++++"
################## starting upload files to delicated ftp ##################
$TOUCH $MBD/ftp.cmd
FTP_CMD=$MBD/ftp.cmd
FTP=xxx.xxx.xxx.xxx
echo "$(date +%Y-%m-%d_%H:%M:%S)"
echo "+++++++++++++++ start uploading $MBD back files to ftp {FTP} +++++++++++++++++++++"
echo "open ${FTP}" > ${FTP_CMD}
echo "user xx xx" >> ${FTP_CMD}
echo "bin" >> ${FTP_CMD}
echo "hash" >> ${FTP_CMD}
echo "put $FILE /$db.$HOST.$NOW.gz" >> ${FTP_CMD}
echo "close" >> ${FTP_CMD}
echo "bye" >> ${FTP_CMD}
$CAT ${FTP_CMD} | ftp -n
rm ${FTP_CMD}
rm $FILE
echo "$(date +%Y-%m-%d_%H:%M:%S)"
echo "+++++++++++ finished upload files to ftp {FTP} +++++++++++++++"
echo "_______________________________end___________________________"
echo
################################## the end ################################## |
|