- 论坛徽章:
- 0
|
根据网上的一段脚本,修改了下, 自动备份mysql 服务器上的指定数据库。 备份功能没问题,但是ftp异地备份不知道该如何写循环, 请高手指教。
#!/bin/bash
#Digitalchina mysql autobackup shell
#write by wangyc@digitalchina.com
dbuser=root
dbpasswd=11223344
dbserver=localhost
DBS="db1,db2"
dbopt=--opt
backupdir=/dbbackup/
copytoftp=0
ftpserver=
ftpuser=
ftppasswd=
keepdays=10
logfile=/var/log/mysqlbackup.log
logtmp=/var/log/mybackup.tmp
#====================================================================
if [ ! -d $backupdir ]
then
echo "$backupdir is not exist, then make ..." >> $logfile
mkdir -p $backupdir
fi
echo "start====================================>">>$logfile
echo "Beginning backup `date '+%F %T'`" >>$logfile
echo "Delete $keepdays days ago files ..." >>$logfile
for db in $DBS
do
find $backupdir -name $db* -mtime +$keepdays -fls $logtmp -exec rm {} \;
echo "Deleted Backup file is :">>$logfile
cat $logtmp >>$logfile
done
echo "Delete old file Success!" >>$logfile
if [ -f $backupdir$newfile ]
then
echo "$newfile backup exist, backup stop ..." >>$logfile
else
for db in $DBS
do
dumpfilename=$db`date +%F`.sql
newfile=$db-`date +%F`.tar.gz
if [ -z $dbpasswd ]
then
mysqldump -u$dbuser -h$dbserver $dbopt $db >$dumpfilename
else
mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $db >$dumpfilename
fi
tar czvf $backupdir$newfile $dumpfilename >>$logfile 2>&1
echo "$backupdir$newfile Backup Success!" >>$logfile
rm -fr $dumpfilename
done
if [ $copytoftp = 1 ]; then
if [ -z $ftpserver ];then
echo "Ftp Server not set,Copy to Ftp Failed ..." >>$logfile
exit 1
elif [ -z $ftpuser ];then
echo "Ftp user not set, Copy to Ftp Failed ..." >>$logfile
exit 2
elif [ -z $ftppasswd ]; then
echo "Ftp password not set, Copy to Ftp Failed ..." >>$logfile
exit 3
else
echo "Start copy to Ftp server ...." >> $logfile
ftp -n<<eof
open $ftpserver
user $ftpuser $ftppasswd
lcd $backupdir
hash
prompt
put $newfile 这里不知道该怎么写循环
close
bye
eof
fi
fi
echo "End=======================================">>$logfile
fi |
|