≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

Python 自动备份SVN版本库并复制到远程主机用法示例

人气:529 时间:2018-10-24

这篇文章主要为大家详细介绍了Python 自动备份SVN版本库并复制到远程主机用法示例,具有一定的参考价值,可以用来参考一下。

对python这个高级语言感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

# @param Python 自动备份SVN版本库并复制到远程主机脚本
# @author 四海网|q1010.com 

#!/usr/bin/python  
# -*- coding: utf-8 -*-  
  
import os 
import re 
import tarfile 
import datetime 
import pexpect 
basedir='/data/bak/' #文件夹  
iplist=['']# IP地址  
def get_list(txt_file): 
    ret_list = [] 
    fin = open(txt_file,'r') 
    for line in fin: 
        if (re.match('^\\s*$',line)):     #跳过是空白的行   
            continue
        else: 
            line = line.lstrip() 
            line = line.rstrip()  #将回车(\n)去掉  
            ret_list.append(line) 
    #print('debug info of get_list :\n',ret_list)  
    return ret_list 
      
def copy_svn(filelist): #这个函数主要是完成dump  
    name= [] 
    name=os.path.split(filelist) 
    now = datetime.datetime.now() 
    filename = now.strftime(basedir+iplist[0] +name[-1]+ '_%Y%m%d_%H%M%S.dump') 
    os.system('svnadmin dump ' + filelist +' > '+filename ) 
    
    tarname =  now.strftime(basedir+iplist[0]+'_SVNDump_' +name[-1]+ '_%Y%m%d_%H%M%S.tar.gz') 
    #print tarname  
    tar = tarfile.open(tarname, 'w|gz') 
    tar.add(filename) 
    tar.close() 
      
      
    scp = pexpect.spawn('scp -r ' +  tarname  + ' root@IP:/data/databak/FilesBack/') 
    scp.expect('.ssword:*') 
    scp.sendline('密码')   
    scp.expect(pexpect.EOF, timeout=None) 
      
    
    olddate = (now - datetime.timedelta(5)).strftime("%Y%m%d") 
    print olddate 
         
    for i in os.listdir(basedir): 
        file = re.search(r'\w*[_](\d{8})[_]\d{6}.(tar.gz|dump)', i) 
        #print i, file  
        if file and olddate>=file.group(1): 
            os.remove(basedir + file.group(0)) 
            print 'del:', file.group(0) 
            filelog=open("/data/bak/bak.log", "a") 
            filelog.write("============DATE:%s============= \n"% now.strftime("%Y%m%d")) 
            filelog.write("del file:%s \n" % (basedir+file.group(0) )) 
            filelog.write("============DATE:%s============= \n"% now.strftime("%Y%m%d")) 
        filelog.close() 
     
def copy_files(txt_file): 
    geted_list = get_list(txt_file) 
    for file in geted_list: 
        copy_svn(file) 
      
if __name__ == '__main__': 
    copy_files('/data/bak/filebak.txt') 
    print '='*20,'\ncopy_OKOKOK\n','='*20 
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import os
import re
import tarfile
import datetime
import pexpect
basedir='/data/bak/' #文件夹
iplist=['']# IP地址
def get_list(txt_file):
    ret_list = []
    fin = open(txt_file,'r')
    for line in fin:
        if (re.match('^\\s*$',line)):     #跳过是空白的行
            continue
        else:
            line = line.lstrip()
            line = line.rstrip()  #将回车(\n)去掉
            ret_list.append(line)
    #print('debug info of get_list :\n',ret_list)
    return ret_list
    
def copy_svn(filelist): #这个函数主要是完成dump
    name= []
    name=os.path.split(filelist)
    now = datetime.datetime.now()
    filename = now.strftime(basedir+iplist[0] +name[-1]+ '_%Y%m%d_%H%M%S.dump')
    os.system('svnadmin dump ' + filelist +' > '+filename )
  
    tarname =  now.strftime(basedir+iplist[0]+'_SVNDump_' +name[-1]+ '_%Y%m%d_%H%M%S.tar.gz')
    #print tarname
    tar = tarfile.open(tarname, 'w|gz')
    tar.add(filename)
    tar.close()
    
    
    scp = pexpect.spawn('scp -r ' +  tarname  + ' root@IP:/data/databak/FilesBack/')
    scp.expect('.ssword:*')
    scp.sendline('密码') 
    scp.expect(pexpect.EOF, timeout=None)
    
  
    olddate = (now - datetime.timedelta(5)).strftime("%Y%m%d")
    print olddate
       
    for i in os.listdir(basedir):
        file = re.search(r'\w*[_](\d{8})[_]\d{6}.(tar.gz|dump)', i)
        #print i, file
        if file and olddate>=file.group(1):
            os.remove(basedir + file.group(0))
            print 'del:', file.group(0)
           filelog=open("/data/bak/bak.log", "a")
            filelog.write("============DATE:%s============= \n"% now.strftime("%Y%m%d"))
            filelog.write("del file:%s \n" % (basedir+file.group(0) ))
            filelog.write("============DATE:%s============= \n"% now.strftime("%Y%m%d"))
     filelog.close()
   
def copy_files(txt_file):
    geted_list = get_list(txt_file)
    for file in geted_list:
        copy_svn(file)
    
if __name__ == '__main__':
    copy_files('/data/bak/filebak.txt')
    print '='*20,'\ncopy_OKOKOK\n','='*20

# End www_512pic_com

本文来自:http://www.q1010.com/181/2328-0.html

注:关于Python 自动备份SVN版本库并复制到远程主机用法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:自动备份

您可能感兴趣的文章

  • sql server 设置定时自动备份数据库的简单示例
  • php 发送mysql数据自动备份的邮件实现方法
上一篇:python 【猴子选大王】算法示例
下一篇:python 数据库连接池技术功能实例
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。