注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

simonzhang个人观点

http://www.simonzhang.net 镜像地址

 
 
 

日志

 
 

导出mysql 上传到ftp备份  

2011-03-25 14:25:05|  分类: python备忘 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
     导出mysql的库上传到ftp服务器备份,上传完毕删除本地文件。用crontab定时运行。用shell也很容以实现,毕竟在学习python,练习一下。

#!/usr/bin/env python
#-*- coding: utf-8 -*-
# -------------------------------------------------------------------------------
# Filename:    Back mysql
# Revision:    1.0
# Date:        2010-03-24
# Author:      simon-zzm
# Email:       simon-zzm@163.com
# Description:
# -------------------------------------------------------------------------------
import os,time,sys
from ftplib import FTP
import datetime

###################设置参数
mysql_user='root'
mysql_pass='123456'
mysql_comm='/usr/local/mysql/bin/mysqldump'
mysql_data=['test_a','test_b']  ###可以填写多个库
mysql_local_path='/usr/local/checksystem/'
ftp_ip='x.x.x.x'
ftp_user='ftpuser'
ftp_pass='test'
admin_mail='simon-zzm@163.com'
###################开始运行
#导出的文件为gz的压缩文件,命名格式为ip地址、库名、导出日期组成。
###获得当前时间
get_time_now=time.strftime('%Y-%m-%d')
###获得本机IP地址
ip = os.popen("/sbin/ifconfig | grep 'inet addr' | awk '{print $2}'").read()
get_local_ip = ip[ip.find(':')+1:ip.find('\n')]
for i in mysql_data:
    ###拼成包名
    mysql_back_name=mysql_local_path+get_local_ip+'_'+i+'_'+get_time_now+'.gz'
    ###拼成导出命令
    gzip_command = "%s -u%s -p%s --opt %s |gzip >%s" %(mysql_comm,mysql_user,mysql_pass,i,mysql_back_name)
    ###导出并判断是否成功
    if os.system(gzip_command)==0:
        print 'Back Successful'
        ###导出成功上传到ftp服务器
        ftp=FTP()
        ftp.set_debuglevel(2)
        ftp.connect(ftp_ip,'21')
        ftp.login(ftp_user,ftp_pass)
        file_handler = open(mysql_back_name,'rb')
        bufsize = 1024
        ftp.storbinary('STOR %s' % os.path.basename(mysql_back_name),file_handler,bufsize)
        ftp.set_debuglevel(0)
        file_handler.close()
        ftp.quit()   
        print 'up load over!'   
        ###偷个懒使用linux命令将本地文件删掉。
        os.popen("/usr/bin/find "+mysql_local_path+"* -name *\.gz -exec rm -rf {} \; ")
    else:
        print 'false'
        ###如果导出失败,给管理员发个信,偷个懒使用linux命令解决。
        mail_url="/bin/mail -s "+get_local_ip+"back fail "+admin_mail+"</usr/local/checksystem/back_mail.txt"
        os.popen(mail_url)
  评论这张
 
阅读(485)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017