Windows平台下SVN增量备份python脚本

环境:

  • A:svn服务器  windows2008
  • B:备份服务器  windows2008

需求:

  • SVN每天进行增量备份,并且自动发送至备份服务器

思路:

  • 通过nginx搭建下载服务器,备份服务器通过nginx下载备份文件

实现代码:

 

import os,datetime
from subprocess import Popen,PIPE


backRootPath = 'D:\\nginx-1.16.1\\html\\'
day = datetime.date.today().__format__('%y%m%d')
paths = os.listdir('D:\\Repositories')
for path in paths:
    absPath = 'D:\\Repositories\\' +  path
    backpath = backRootPath + path + '_' + day + '\\'
    backfile = backpath+path+'_'+day
    if not os.path.isdir(absPath):
        continue
    new_version_str = str(Popen('svnlook youngest %s'%absPath,stdout=PIPE).stdout.read().decode('utf-8')).strip()
    if not os.path.exists(backpath):
        os.mkdir(backpath)
    lastidFile = absPath + '\\' + 'lastid'
    with open(lastidFile, 'r', encoding='utf-8') as f: lastid = str(f.read()).strip();f.close()
    if int(lastid) == int(new_version_str):
        continue
    print('svnadmin dump %s --revision %s:%s --incremental > %s'%(absPath,lastid,new_version_str,backfile))
    os.system('svnadmin dump %s -r %s:%s > %s'%(absPath,lastid,new_version_str,backfile))
    with open(lastidFile, 'w', encoding='utf-8') as f:f.write(new_version_str);f.close()
  • 首先需要一次全量备份,备份完成后将最新的版本ID写入仓库目录下lastid文件中
  • 脚本执行时读取lastid文件获取上次备份版本号,然后使用svnlook youngest 获取最新版本号,之后使用svnadmin dump -r 指定版本进行备份
  • 备份完成后将最新版本号写入lastid文件中
  • 备份服务器通过wget下载svn备份文件
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
交流Q群