python 网站文件及数据库备份脚本-阿里云开发者社区

开发者社区> 科技探索者> 正文

python 网站文件及数据库备份脚本

简介:
+关注继续查看

初学python,试着写了一份python网站文件备份和数据库备份的脚本,功能是写出来了,但感觉还是不太适应,写得不太好,以后还要努力哈!backup.py读取backup.xml的信息,进行相关操作,至于为啥要把信息写在xml里,因为感觉用xml很酷,哈哈没啥的,学习麻,想用就用一下哈。

backup.xml:


  1. <?xml version="1.0"?> 
  2. <config> 
  3.         <backupdir>/backup/</backupdir> 
  4.         <dbbackup id="1"> 
  5.                 <host>192.168.1.100</host> 
  6.                 <user>root</user> 
  7.                 <passwd>123456</passwd> 
  8.                 <dbname>test1</dbname> 
  9.         </dbbackup> 
  10.         <dbbackup id="2"> 
  11.                 <host>192.168.1.101</host> 
  12.                 <user>root</user> 
  13.                 <passwd>123456</passwd> 
  14.                 <dbname>test2</dbname> 
  15.         </dbbackup> 
  16.         <webbackup id="1"> 
  17.                 <dir>/data/www</dir> 
  18.         </webbackup> 
  19. </config> 

backup.py:


  1. #!/usr/bin/env python  
  2.  
  3. from xml.dom import minidom  
  4. import time  
  5. import os  
  6. import re  
  7.  
  8. dom = minidom.parse('backup.xml')  
  9.  
  10. class readxml:  
  11.         def getText(self, node):  
  12.                 return node.childNodes[0].data  
  13.  
  14.         def getId(self, node, id):  
  15.                 return node.getAttribute(id)  
  16.  
  17.         def getGroupText(self, model):  
  18.                 dbinfo = {}  
  19.                 xml_groups = dom.getElementsByTagName(model)  
  20.                 for group in xml_groups:  
  21.                         groupid = self.getId(group, 'id')  
  22.                         dbinfo_one = {}  
  23.                         for node in group.childNodes:  
  24.                                 if node.nodeType == node.ELEMENT_NODE:  
  25.                                         dbinfo_one[node.nodeName] = self.getText(node)  
  26.                                         dbinfo[groupid] = dbinfo_one  
  27.                 return dbinfo  
  28.  
  29. class back:  
  30.         def webbackup(self, webgroup):  
  31.                 for i in webgroup:  
  32.                         filename = mydate + re.sub('/''_', webgroup.get(i).get('dir')) + ".tar.gz" 
  33.                         command = "tar zcvfp '%s' %s" % (today + os.sep + filename, webgroup.get(i).get('dir'))  
  34.                         os.system(command)  
  35.                           
  36.         def dbbackup(self, dbgroup):  
  37.                 mysqlpath="/usr/local/mysql/bin/mysqldump" 
  38.                 for i in dbgroup:  
  39.                         filename = today + os.sep + mydate + "_" + dbgroup.get(i).get('dbname') + ".sql.gz" 
  40.                         command = "%s --opt -u%s -p%s -h%s %s | gzip > %s" % (mysqlpath, dbgroup.get(i).get('user'), dbgroup.get(i).get('passwd'), dbgroup.get(i).get('host'), dbgroup.get(i).get('dbname'), filename)  
  41.                         os.system(command)  
  42.                                       
  43. xmlconfig = readxml()  
  44. backupdir = xmlconfig.getText(dom.getElementsByTagName('backupdir')[0])  
  45. dbbackup = xmlconfig.getGroupText('dbbackup')  
  46. webbackup = xmlconfig.getGroupText('webbackup')  
  47.  
  48. mydate = time.strftime('%Y%m%d')  
  49. today=backupdir + mydate  
  50. if not os.path.exists(today):  
  51.         os.makedirs(today)  
  52.  
  53. back().webbackup(webbackup)  
  54. back().dbbackup(dbbackup) 

 本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/891059如需转载请自行联系原作者


lihuipeng

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在open状态下恢复未备份的数据文件
        此文讲述如何恢复未备份的数据文件,在归档日志模式,如果dba增加了新的数据文件,当没有备份新的数据文件,那么该文件出现损坏时,可以恢复该数据文件。前提是 从建立新的数据文件到丢失为止的所有归档日志必须全部存在。
566 0
sqlserver导出带数据的脚本文件(下)
sqlserver导出带数据的脚本文件(下)
5 0
SSH 网站制作之文件上传
最近学习用SSH做网页,遇到了文件上传的一些知识,下面就总结总结。 1.下面是一个文件上传的JSP页面   其中,表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。
694 0
python读取matlab数据(.mat文件)
我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取matlab处理后的数据.mat文件。
103 0
推荐一个WINDOWS系统文件介绍的网站
http://www.cn.filename.info/文件名信息数据库: 病毒, 特洛伊人, 背后?文件名义上 _*.* (5) a*.* (129) b*.* (38) c*.
701 0
PHP中利用文件锁实现日志写入和网站接口访问等常见场景下的并发控制
针对并发环境下网站、日志文件写入产生的脏数据、更新丢失等情况的解决思路之一
2630 0
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
介绍MySQL的文本和图形数据类型: Text 类型: 数据类型:描述 ------------------------------------------------------ char(size):保存固定长度的字符串(可包含字母、数字以及特殊字符)。
997 0
5489
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载