《python运维自动化》-备份目录

    xiaoxiao2021-04-13  29

    #! /usr/bin/env python import os, sys import filecmp import re import shutil holderlist = [] def compareme(dir1, dir2): dircomp=filecmp.dircmp(dir1,dir2) only_in_one = dircomp.left_only diff_in_one = dircomp.diff_files dirpath = os.path.abspath(dir1) [holderlist.append(os.path.abspath(os.path.join(dir1, x))) for x in only_in_one] [holderlist.append(os.path.abspath(os.path.join(dir1, x))) for x in diff_in_one] if len(dircomp.common_dirs) > 0: for item in dircomp.common_dirs: compareme(os.path.adspath(os.path.join(dir1, item)), \ os.path.adspath(os.path.join(dir2, item))) return holderlist def main(): if len(sys.argv) > 2: dir1 = sys.argv[1] dir2 = sys.argv[2] else: print "Usage:", sys.argv[0], "datadir backupdir" sys.exit() print "source:" + dir1+",dest:"+dir2 source_files=compareme(dir1, dir2) print "source_files:"+str(source_files) dir1 = os.path.abspath(dir1) if not dir2.endswith('/'): dir2=dir2+'/' dir2 = os.path.abspath(dir2) destination_files = [] createdir_bool = False for item in source_files: destination_dir = re.sub(dir1,dir2,item) destination_files.append(destination_dir) #print "dest:"+str(destination_files) if os.path.isdir(item): if not os.path.exists(destination_dir): os.makedirs(destination_dir) createdir_bool=True if createdir_bool: destination_files=[] source_files=[] source_files=compareme(dir1, dir2) for item in source_files: destination_dir=re.sub(dir1, dir2, item) destination_files.append(destination_dir) print "udpate item:" print source_files copy_pair=zip(source_files, destination_files) print "source dir:"+str(source_files)+",dest dir:"+str(destination_files) for item in copy_pair: if os.path.isfile(item[0]): shutil.copyfile(item[0], item[1]) if __name__ == '__main__': main()

    [root@localhost test]# ls cmp.py dir1 dir2 [root@localhost test]# ls dir1 dir2 dir1: 1 test01 test02 test.log

    dir2: 1 test02 test.log [root@localhost test]# cat dir1/test.log dir2/test.log test a bc TEST a bc [root@localhost test]# python cmp.py /root/test/dir1 root/test/dir2 source:/root/test/dir1,dest:/root/test/dir2 source_files:[‘/root/test/dir1/test01’, ‘/root/test/dir1/test.log’] udpate item: [‘/root/test/dir1/test01’, ‘/root/test/dir1/test.log’] source dir:[‘/root/test/dir1/test01’, ‘/root/test/dir1/test.log’],dest dir:[‘/root/test/dir2/test01’, ‘/root/test/dir2/test.log’] [root@localhost test]# [root@localhost test]# ls dir1 dir2 dir1: 1 test01 test02 test.log

    dir2: 1 test01 test02 test.log [root@localhost test]# cat dir1/test.log dir2/test.log test a bc test a bc [root@localhost test]#

    转载请注明原文地址: https://ju.6miu.com/read-668994.html

    最新回复(0)