初学python,试着写了一份python网站文件备份和数据库备份的脚本,功能是写出来了,但感觉还是不太适应,写得不太好,以后还要努力哈!backup.py读取backup.xml的信息,进行相关操作,至于为啥要把信息写在xml里,因为感觉用xml很酷,哈哈没啥的,学习麻,想用就用一下哈。
backup.xml:
- <?xml version="1.0"?>
- <config>
- <backupdir>/backup/</backupdir>
- <dbbackup id="1">
- <host>192.168.1.100</host>
- <user>root</user>
- <passwd>123456</passwd>
- <dbname>test1</dbname>
- </dbbackup>
- <dbbackup id="2">
- <host>192.168.1.101</host>
- <user>root</user>
- <passwd>123456</passwd>
- <dbname>test2</dbname>
- </dbbackup>
- <webbackup id="1">
- <dir>/data/www</dir>
- </webbackup>
- </config>
backup.py:
- #!/usr/bin/env python
- from xml.dom import minidom
- import time
- import os
- import re
- dom = minidom.parse('backup.xml')
- class readxml:
- def getText(self, node):
- return node.childNodes[0].data
- def getId(self, node, id):
- return node.getAttribute(id)
- def getGroupText(self, model):
- dbinfo = {}
- xml_groups = dom.getElementsByTagName(model)
- for group in xml_groups:
- groupid = self.getId(group, 'id')
- dbinfo_one = {}
- for node in group.childNodes:
- if node.nodeType == node.ELEMENT_NODE:
- dbinfo_one[node.nodeName] = self.getText(node)
- dbinfo[groupid] = dbinfo_one
- return dbinfo
- class back:
- def webbackup(self, webgroup):
- for i in webgroup:
- filename = mydate + re.sub('/', '_', webgroup.get(i).get('dir')) + ".tar.gz"
- command = "tar zcvfp '%s' %s" % (today + os.sep + filename, webgroup.get(i).get('dir'))
- os.system(command)
- def dbbackup(self, dbgroup):
- mysqlpath="/usr/local/mysql/bin/mysqldump"
- for i in dbgroup:
- filename = today + os.sep + mydate + "_" + dbgroup.get(i).get('dbname') + ".sql.gz"
- 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)
- os.system(command)
- xmlconfig = readxml()
- backupdir = xmlconfig.getText(dom.getElementsByTagName('backupdir')[0])
- dbbackup = xmlconfig.getGroupText('dbbackup')
- webbackup = xmlconfig.getGroupText('webbackup')
- mydate = time.strftime('%Y%m%d')
- today=backupdir + mydate
- if not os.path.exists(today):
- os.makedirs(today)
- back().webbackup(webbackup)
- back().dbbackup(dbbackup)
转载于:https://blog.51cto.com/lihuipeng/891059