html tool

2015年2月10日星期二

python 自动备份脚本的更新II--add git方式

ps:备份库多开始使用git了,但也有部分svn的更新一下自动备份脚本如下:

-------------------源码-------------------------------------
# -*- coding: UTF8 -*-
# address : http://www.cnblogs.com/heikediguo/archive/2012/07/12/2588163.html
import subprocess
import sys
import string
import time
import os
import ConfigParser
class getini():
 """读取save.ini中的配置要求 """
 def __init__(self,path="save.ini"):
  cg=ConfigParser.ConfigParser()
  cg.read(path)
  self._getinidata(cg)
  
 def _getinidata(self,cg):
  #读取ini中日志存储位置,git和svn库要自动备份的列表
  self.logfile=cg.get("log","filepath")
  self.git_lists=cg.items("git")
  self.svn_lists=cg.items("svn")
  #print "logfile: %s" % self.logfile
  print "git_lists:%s" % self.git_lists
  print "svn_lists:%s" % self.svn_lists

 def getlogfile(self):
  return self.logfile 

 def getgitlists(self):
  return self.git_lists
 def getsvnlists(self):
  return self.svn_lists


    
class Log:
    logfile = ''
    def config(self, _logfile):#调用这个方法实现判断日志文件位置
        if _logfile != '':
  self.logfile = _logfile
        else:
  self.logfile = 'run.log'
    
    def log(self, _msg):#调用此方法实现保存记录到文件中去
        now = time.time()
        strtime = str(time.localtime(now)[0]) + '-' + str(time.localtime(now)[1]) \
                + '-' + str(time.localtime(now)[2]) \
                + ' ' + str(time.localtime(now)[3]) \
                + ':' + str(time.localtime(now)[4]) \
                + ':' + str(time.localtime(now)[5])
        msg = strtime + ' ' + _msg + '\n'
 #save log
 self.savelog(msg)

    def savelog(self,message):
     logfilehandle=open(self.logfile,"a+")
     logfilehandle.write(message)#write file
     logfilehandle.close()


def daemonize(logpath="test.log"):
 
 dir = 'F:\\pc\\'
 #run(dir+'learning\\unittest\\unittest')
 run(dir+'learning\\',logpath)
 run(dir+'thinking\\',logpath)

 #googlecode svn 处理
 _gock= 'F:\ckbf\db'
 subprocess.call('svn add '+ _gock + ' --force') #增加全部增量文件
 subprocess.call('svn commit '+ _gock + ' --message "script add" ')
 #subprocess.call("pause")
 os.system('pause') 

def commit_doing(cg):
 logfile=cg.getlogfile()
 for (s_name,s_path) in cg.getgitlists():
  run_git(s_path,logfile)
 for (s_name,s_path) in cg.getsvnlists():
  run(s_path,logfile)

  
def run_git(path,logpath):
 """git file 处理 """
 log=Log()
 logfile=logpath
 os.system("cd /d "+path)
 print path
 os.system('git commit -m "script add"')
 print ('=============================')
 #日志更新
    log.config(logfile) 
     log.log('[git] '+ path + ' 已更新')


def run(path,logpath):
    """svn file 处理 """
    log = Log()
    logfile = logpath
    subprocess.call('svn commit ' + path + ' --message "script add" ' )
    cur = path.replace('\\\\', '\\')
    print (cur + ' 已提交')
    subprocess.call('svn up ' + path)
    print ('=============================')
    #记录更新的日志
    log.config(logfile) 
    log.log('[svn] '+cur + ' 已更新')
    if cur == 'toolbar':
       log.log('================================') 

if __name__=="__main__":
 a=getini()
 #daemonize(a.getlogfile())
 commit_doing(a)

-----------------------
ini文件结构如下:
[log]
filepath=save.log
[git]
gitckbf=F:\git-ckbf\web-ana
gitana=F:\pc\working\test_selenium\web-ana\git-use\web-ana
[svn]
think=F:\pc\thinking
map=F:\pc\map
learn=F:\pc\learning

没有评论:

发表评论