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

2023-05-16

初学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) 

 

转载于:https://blog.51cto.com/lihuipeng/891059

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 网站文件及数据库备份脚本 的相关文章

随机推荐

  • Ubuntu12.04LTS安装好后是空白桌面的解决步骤

    安装完毕启动后 xff0c 明显慢的要死 xff0c 登陆后竟然是一个空白的桌面环境 xff0c Ctrl 43 Alt 43 T 根本没有任何反应 唯一的反应就是右键能够创建文件和文档 同时打开的窗口没有最大化 xff0c 最小化及关闭按
  • could not execute menu item系统找不到指定的文件

    Wamp3 0 6 64bit xff0c 系统任务栏图标 xff0c 左键 xff0c Apache菜单 xff0c httpd conf xff0c 报错 could not execute menu item 系统找不到指定的文件 根
  • 这么好用的U盘数据恢复软件,推荐!

    U盘受到了用户不同程度的青睐 xff0c 可以将临时要用的数据输入到U盘中 但是U盘在使用过程中 xff0c 也会出现一些突发情况 xff0c 让用户措手不及 xff0c 其中最常见的就属数据丢失 数据丢失的原因包括多种 xff0c 误删除
  • node+微信小程序实现商城案例

    说明 xff1a 1 本人也是初次完整使用小程序 xff0c 如有BUG或者不足的地方请在Issues或者本文下方留言 xff0c 作者会尽快修改 xff0c 谢谢 xff01 2 本项目适合初学者或者准备自学小程序的伙伴 小程序功能 xf
  • SpringBoot使用fastjson的JsonField注解序列化Bigdecimal

    代码 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt project xmlns 61 34 http maven apache org POM 4 0 0 34 xmln
  • 网盘告急 亚信安全Safesync让企业级数据存储吃下“定心丸”

    近日 xff0c 两条重磅消息登上新闻头条 xff1a 一则是360云盘由于无法解决盗版侵权等问题 xff0c 将于2017年2月1日起关闭云盘 xff1b 另一则是百度遭到渔具店老板 撞库 xff0c 50万账号被盗后又遭转卖 xff0c
  • android内存泄漏分析的一种方式

    最近在处理项目的拷机问题 xff0c 发现在测试24小时内 xff0c 都是正常的 xff0c 但是超过24小时后 xff0c 重启一大片 xff0c 让人抓狂 分析了logcat打印 xff0c 发现重启是因为系统服务已经被watchdo
  • 29个运维经典面试题

    前言 这篇博文参考阿铭linux 28个运维经典面试题 xff0c 并对其中的一些题目进行扩展和解析 如有侵权 xff0c 请联系我删除 xff5e 再次感谢阿铭老师的分享 大家有空可以看看阿铭老师的教程 xff5e 第一题 xff1a L
  • win10下丢失msvcr110.dll解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 笔者尝试过的方法 xff1a 方法一 xff1a 360安全卫士 功能大全 搜索区查找 xff1a msvcr110 dll xff0c 回车键结束 选择第一个 xff0c
  • moment.js格式化日期,获取前一个月的时间

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 下载moment js 格式化当前日期 xff1a 显示结果为 xff1a 34 2017 09 20 15 35 52 34 moment new Date format
  • 在springboot中配置web.xml

    在springBoot中配置web xml中配置的servlet http www cnblogs com wangxiaomei p 8885470 html 转载于 https www cnblogs com lxcmyf p 1006
  • SQL字符串处理函数大全

    select语句中只能使用sql函数对字段进行操作 xff08 链接sql server xff09 xff0c select 字段1 from 表1 where 字段1 IndexOf 34 云 34 61 1 这条语句不对的原因是ind
  • 设计模式之(十五)职责链Chain of Responsibility

    Chain of Responsibility定义 Chain of Responsibility CoR 是用一系列类 classes 试图处理一个请求request 这些类之间是一个松散的耦合 唯一共同点是在他们之间传递request
  • 如何判断一个C++对象是否在堆上

    摘要 在帖子 34 如何判断一个C 43 43 对象是否在堆栈上 中 xff0c 又有人提出如何判断一个C 43 43 对象是否在堆上 阅读全文 Richard Wei 2012 05 12 14 30 发表评论 转载于 https www
  • 前端框架Vue、angular、React的优点和缺点,以及应用场景

    学习web前端开发中 xff0c 会有很多的框架 xff0c 那么目前流行的框架有哪些 xff0c 以及他们的优缺点和应用场景有哪些呢 xff1f 一 Vue js xff1a 其实Vue js不是一个框架 xff0c 因为它只聚焦视图层
  • AFNetworking(二)AFNetworking对form-data请求体的处理

    AFNetworking 发送 GET POST 等请求时可以直接将参数按照字典结构传入 xff0c 最终编码到 url 中或者是 body 实体中 xff0c 同时也支持按照 multipart form data 格式 xff0c 将多
  • Android原生SpeechRecognizer(语音识别)

    开篇先吐槽下 xff0c 在Android 平台开发原生的SpeechRecognizer真是难受的 xff0c 不像ios xff0c 无比轻松 xff0c 平台统一 由于Android 平台的碎片化问题比较严重 xff0c 各个厂商都有
  • shell 读取配置文件

    shell 读取配置文件来取参数的值 在许许多多 自动化 的脚本中 很学用 bin sh filepath 61 34 home test test txt 34 while read LINE do user 61 96 echo LIN
  • MFC 获取本机IP地址(多个网卡)

    szHostName 128 gethostname szHostName hostent pHost i pHost gethostbyname szHostName i pHost pHost h addr list i i CStri
  • python 网站文件及数据库备份脚本

    初学python xff0c 试着写了一份python网站文件备份和数据库备份的脚本 xff0c 功能是写出来了 xff0c 但感觉还是不太适应 xff0c 写得不太好 xff0c 以后还要努力哈 xff01 backup py读取back