免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3060 | 回复: 0
打印 上一主题 下一主题

数据备份_v3.0 [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-28 10:42 |只看该作者 |倒序浏览
本帖最后由 ning_lianjie 于 2010-11-10 12:42 编辑

功能:备份数据,方便备份追踪
  1. #!/usr/bin/python
  2. '''Synchronous script
  3. About rsync-server'''
  4. import os,sys,time,re
  5. now=time.strftime('%Y%m%d')
  6. passwd='/tmp/.passwd'
  7. log22='/tmp/stats_%s.csv' % (now)
  8. dict_mon={
  9. 'mytest1':('ning@127.0.0.1::','/tmp/test2010'),
  10. 'mytest2':('ning@127.0.0.1::','/tmp/test2010'),
  11. }
  12. def write_title(log_stat):
  13.     file_log=open(log_stat,'a')
  14.     file_log.write('start_time,end_time,module,Number of files,Number of files transferred,Total file size(bytes),Total transferred file size(bytes)\n')
  15.     file_log.close()
  16. def write_notes(d_ary,log_stat,port=873):
  17.     for i in d_ary:
  18.         line_mon=d_ary[i]
  19.         cmd='rsync -tzrp --stats --port=%s --password-file=%s %s%s %s' % (port,passwd,line_mon[0],i,line_mon[1])
  20.         fle=open(log_stat,'a')
  21.         try:         
  22.             s_time=time.strftime('%H:%M:%S')
  23.             cmd_put=os.popen(cmd)
  24.             list_tmp=[]
  25.             re_p=re.compile('(Number of files:|Number of files transferred:|Total file size:|Total transferred file size:) (\d+)?')
  26.             for each_line1 in cmd_put:
  27.                 for each_line2 in re_p.finditer(each_line1):
  28. #                    print each_line2.group()
  29.                     if each_line2 is not None:
  30.                         list_tmp.append(each_line2.group(2))
  31.                     else:
  32.                         pass
  33.             e_time=time.strftime('%H:%M:%S')
  34.             cmd_stat='%s,%s,%s,%s,%s,%s,%s,%s' % (s_time,e_time,i,list_tmp[0],list_tmp[1],list_tmp[2],list_tmp[3],os.linesep)
  35.             cmd_put.close()
  36.             fle.write(cmd_stat)
  37.         except:
  38.             cmd_stat='%s,%s,%s,%s,%s,%s,%s' % (s_time,e_time,i,'error','error','error','error'+os.linesep)
  39.             fle.write(cmd_stat)
  40.         fle.close()
  41. if __name__ == '__main__':
  42.     write_title(log22)
  43.     write_notes(dict_mon,log22)
  44. #    write_notes(dict_mon,log22,8770)
复制代码
代码解释:

#字典格式,以模块名为键,以用户名、源IP、目的地址为值
#定义一个函数,设置log_stat为参数
#file_log=open(log_stat,'a')以追加方式打开文件,file_log.close()关闭文件。
#这个是命令执行、日志处理的函数。
#定义3个参数,分别为字典、日志、端口
#1·循环字典,把键赋给i。
#2·line_mon=d_ary的意思是,把字典的值以列表的形式赋给变量line_mon
#3·定义执行的命令,用%符号,完成替换。
#4·starttime为命令开始执行的时间,endtime为命令执行结束的时间
#5·try…except作为异常处理,如果try段的代码执行出错,就会执行except中的代码
#6·cmd_put=os.popen(cmd),os.popen()执行系统命令,并把结果保存在变量cmd_put中。
#7·list_tmp=[],定义一个空列表
#8·re_p定义一个正则表达式的法则,并分组,前面的匹配条件一组,(\d+)?表示与数字匹配。
#9·进行两次循环,先把cmd_put的语句迭代给each_line1,然后再逐行进行匹配,把匹配结果存入each_line2,然后再进行判断,如果条件符合,就把值追加到列表,否则什么也不做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP