Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304811
  • 博文数量: 93
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 830
  • 用 户 组: 普通用户
  • 注册时间: 2016-02-25 10:44
个人简介

一杯茶,一台电脑

文章分类

全部博文(93)

文章存档

2018年(4)

2017年(57)

2016年(32)

分类: LINUX

2016-05-30 10:47:40

有次发现Python这个脚本真是个好东西,其他的不说,Windows和Linux上都可以执行; 如果把它用做管理服务器那感觉真是太给力了,于是我花了两天时间下班后的时间,在网上找了本叫:<<简名Python教程>>这本书大家可以在网上随便在百度或是好搜里搜索一下就可以下载的到;看了一遍;在看到最后一块时,他上面有个例子就是做个文件备份的脚本,一下子想到自己的服务器上,上次用Windows Shell写了个脚本(Windows Shell个人感觉真是好难用)用来备份服务器上的网站文件和数据库,写是写好了,但是感觉自己不满意!
于是把后面的内容看完后,就直接结合他上面的例子加上自己的想法把这个例子完善了一下,具有了以下功能:

1.备份日志:脚本对哪些文件进行备份-备份的状态信息;对数据库(MYSQL)的备份情况,是否备份成功
2.脚本当中直接将数据库名称写成了列表变量直接将想要备份的数据库直接写到列表变量当中-方便!
3.网站文件备份-使用开源免费的7zip进行备份-这些都在脚本当中都有详细的说明
3.对数据库(MYSQL)使用Mysql自带的数据库导出功能,整合到了脚本当中;
4.配制相关的软件到系统环境变量当中去;包含了7zip软件,MYSQL

PS:这个脚本在Windows使用网盘 在Linux下百度也有一个网盘的接口来实现备份


下面是脚本内容:大虾请绕行-毕竟两天的能写个这个东西-个人来讲还是很满意的最重要的是还成功了 

文件:backupt.py

点击(此处)折叠或打开

  1. #!/usr/bin/python
  2. #-*- coding:gb2312 -*-
  3. #########################################################
  4. # 作者:barneyx(小白怕怕)
  5. # QQ:353532415
  6. # Email:VCMSND@gamil.com
  7. # 文件编写日期:2016-05-20 23:23:34
  8. # ***********************************************************************************
  9. # 脚本语言:Python2.7
  10. #
  11. #
  12. # 注:
  13. #        请将相关的软件添加到环境变量当中,本脚本所使用到的软件(全部开源软件)
  14. #                    7zip
  15. #                    mysqldump
  16. #                    python2.7
  17. #
  18. # 以上软件在网上随意搜索即可得到
  19. #压缩衙默认密码是barneyx
  20. # -----------------------------------------------------------------------------------
  21. # 如果是在Linux操作系统下使用这个脚本请修改相应的路径和安装好相应的软件:
  22. # Linux Center: yum install 7zip
  23. # Linux Center: yum install python
  24. # Ubuntu sudo apt-get install 7zip
  25. # Ubuntu sudo apt-get install python
  26. #
  27. # 注:以上除了7zip基本上每个发行版的Linux当中都有安装Python
  28. #
  29. ####################################################################################
  30. import sys
  31. import os
  32. import Syslibs

  33. #备份配制
  34. #备份目录配制-一般为网盘的目录
  35. basic_dir="D:\\backFolder\\百度云同步盘\\10120111221\\"
  36. #备份日志目录
  37. log_dir ="d:\\log\\"
  38. #操作指令 db|wf
  39. opt_type=sys.argv[1]
  40. #opt_type="wf"
  41. #要进行备份的数据库名称
  42. db_list=[
  43. "数据库名称" #Mysql数据库当中的数据库名称-前提是你得将下面的管理员账号填写正确;
  44. ]
  45. #要备份的网站文件目录-字典模式 name:full_path 方式进行填充,如果熟悉PHP那这种类型变量有点像PHP的索引类型数组
  46. #记录路径分割是用双斜杠 "//"
  47. wb_list={
  48. "标识名称最好是英文":"要备份的文件完整路径",#"xxx3g":"D:\\www\\xx_website\\sem.\\3g\\",
  49. }
  50. #数据库的用户名 -请专门添加一个专用用户进行此项操作
  51. dbuser='root'
  52. #数据库的密码-请专门添加一个专用用户进行此项操作
  53. dbpasswd='root'
  54. #压缩后的密码
  55. zip_passwd='barneyx'
  56. #默认不使用完完整路径如:d:/www/www.xxx.com/web/使用的是目录名称为主
  57. #可行项: -p|-spd 也可以自定义7zip命令进行配制
  58. zip_type='-p'
  59. ###############################################################################################################

  60. if opt_type=="db":
  61.         for dbitem in db_list:
  62.                 dbobj=Syslibs.BackUpDatabases(dbuser,dbpasswd,dbitem,basic_dir,log_dir)
  63. elif opt_type=="wf":
  64.         wbobj=Syslibs.ZipBackUp(wb_list,basic_dir,log_dir,zip_passwd,zip_type)



文件:Syslibs.py

点击(此处)折叠或打开

  1. #!/usr/bin/python
  2. #-*- coding:gb2312 -*-
  3. ####################################################################################
  4. # 作者:barneyx(小白怕怕)
  5. # QQ:353532415
  6. # Email:VCMSND@gamil.com
  7. # 文件编写日期:2016-05-20 23:23:34
  8. # ***********************************************************************************
  9. # 脚本语言:Python2.7
  10. #
  11. # MYSQ备份助手类
  12. #
  13. # 注:
  14. #        请将相关的软件添加到环境变量当中,本脚本所使用到的软件(全部开源软件)
  15. #                    7zip
  16. #                    mysqldump
  17. #                    python2.7
  18. #
  19. # 以上软件在网上随意搜索即可得到
  20. # -----------------------------------------------------------------------------------
  21. # 如果是在Linux操作系统下使用这个脚本请修改相应的路径和安装好相应的软件:
  22. # Linux Center: yum install 7zip
  23. # Linux Center: yum install python
  24. # Ubuntu sudo apt-get install 7zip
  25. # Ubuntu sudo apt-get install python
  26. #
  27. # 注:以上除了7zip基本上每个发行版的Linux当中都有安装Python
  28. #
  29. ####################################################################################
  30. import os
  31. import sys
  32. import time

  33. class BackUpDatabases:
  34.     def __init__(self, user, passwd, dbname, to_path, log_path):
  35.         self.user = user
  36.         self.passwd = passwd
  37.         self.dbname = dbname
  38.         self.to_path = to_path
  39.         self.logobj = BackLog(log_path,"db-log")
  40.         self.StartBackUp()

  41.     def StartBackUp(self):
  42.         target_dir = self.to_path + os.sep + time.strftime('%Y%m') + os.sep + 'databases' + os.sep + self.dbname + os.sep
  43.         if not os.path.exists(target_dir):
  44.             os.makedirs(target_dir)
  45.         dump_command = 'mysqldump -u%s -p%s %s > %s%s.sql' % (self.user,self.passwd,self.dbname,target_dir,self.dbname+'-'+time.strftime('%Y%m%d%H%M%S'))
  46.         if os.system(dump_command) == 0:
  47.             self.logobj.WLog('==>DataTime: %s TYPE:DataBase DBName:%s STUS:OK' % (time.strftime('%Y-%m-%d %H:%M:%S'),self.dbname))
  48.             print("Dump Successfuld!!")
  49.         else:
  50.             self.logobj.WLog("==>DataTime: %s TYPE:DataBase DBName:%s STUS:NO" % (time.strftime('%Y-%m-%d %H:%M:%S'),self.dbname))
  51.             print("Dump Error!!!")
  52. # 备份网站文件到指定的目录当中去;
  53. #
  54. # 类的初始化参数说明:
  55. # 在使用这个文件备份类时,请遵循下面的参数说明:
  56. # back_array :表示你配制的所有要备份的文件目录---以字典的方式来配制 dicts = {"":"d:\\wwwroot\\\\"}
  57. # to_path :表示备份文件要存放的路径
  58. # zpasswd :表示加密备份文件的密码 这里的默认密码是:barneyx 如有需要表自行修改
  59. #
  60. # -spd -r
  61. class ZipBackUp:
  62.     def __init__(self,back_array,to_path,log_path,zpasswd='barneyx',ptype='-r'):
  63.         self.back_array = back_array
  64.         self.to_path = to_path
  65.         self.passwd = zpasswd
  66.         self.ptype = ptype
  67.         self.logobj = BackLog(log_path,"wf-log")
  68.         self.StartZip()
  69.         
  70.     def StartZip(self):
  71.         target_dir=self.to_path+time.strftime('%Y%m')+os.sep+'webfiles'+os.sep
  72.         if not os.path.exists(target_dir):
  73.             os.makedirs(target_dir)
  74.         for webfilename,webbackfiles in self.back_array.items():
  75.             zip_command = '7z a %s -p%s -tzip %s.7z %s' % (self.ptype,self.passwd,target_dir+webfilename+'-'+time.strftime('%Y%m%d%H%M%S'),webbackfiles)
  76.             if os.system(zip_command) == 0:
  77.                 self.logobj.WLog("==>ExecuteDt:%s ExecuteDt:%s TYPE:Webfile DirName:%s STUS:OK" % (webbackfiles,time.strftime('%Y-%m-%d %H:%M:%S'),webfilename))
  78.                 print ("Zip Successfuld!!")
  79.             else:
  80.                 self.logobj.WLog("==>ExecuteDt:%s ExecuteDt:%s TYPE:Webfile DirName:%s STUS:NO" % (webbackfiles,time.strftime('%Y-%m-%d %H:%M:%S'),webfilename))
  81.                 print ("Zip Error!!")
  82. # 日志对象,记录当前备份的状态信息和备份日志等信息
  83. class BackLog:
  84.     def __init__(self, log_path, bttype):
  85.         self.log_path = log_path
  86.         self.bttype = bttype

  87.     def WLog(self,str_body):
  88.      path='%s' % self.log_path+self.bttype+'.log'
  89.      fp=open(path,'a')
  90.      fp.write(str_body+'\n')
  91.      fp.close()


阅读(2138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~