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