免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1555 | 回复: 2
打印 上一主题 下一主题

一段备份数据库,并异地ftp 备份的脚本,求指正。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-23 11:09 |只看该作者 |倒序浏览
根据网上的一段脚本,修改了下, 自动备份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

论坛徽章:
4
白银圣斗士
日期:2015-11-24 10:40:40技术图书徽章
日期:2015-11-26 13:47:47平安夜徽章
日期:2015-12-26 00:06:30技术图书徽章
日期:2016-07-19 13:54:03
2 [报告]
发表于 2009-07-23 12:42 |只看该作者
mput....?

论坛徽章:
0
3 [报告]
发表于 2009-07-29 11:34 |只看该作者
好用,谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP