Python 自動備份SVN版本庫並複製到遠程主機指令碼

來源:互聯網
上載者:User
#!/usr/bin/python # -*- coding: utf-8 -*-    import osimport reimport tarfileimport datetimeimport pexpectbasedir='/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 osimport reimport tarfileimport datetimeimport pexpectbasedir='/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
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.