《python运维自动化》-备份目录
来源:互联网 发布:淘宝如何销售农产品 编辑:程序博客网 时间:2024/06/06 02:38
#! /usr/bin/env pythonimport os, sysimport filecmpimport reimport shutilholderlist = []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 holderlistdef 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]#
- 《python运维自动化》-备份目录
- python自动化运维
- Python 备份指定目录文件
- Openstack 数据库自动化备份python脚本
- python自动化运维记录
- 自动化运维(python)
- Python自动化运维笔记(五):使用filecmp模块实现文件以及文件目录差异对比
- ansible-python自动化运维框架实例
- Python运维自动化--nginx配置文件对比
- Python自动化运维课程学习--Day1
- Python自动化运维课程学习--Day1
- Python自动化运维课程学习--Day1
- python自动化运维学习记录2
- Python自动化运维学习(一)
- python自动化运维--Day 2
- Python自动化运维相关总结
- python自动化运维(IPy包)
- 实用自动化运维Python脚本
- 产品经理(一)概况
- SDOI2017滚粗记
- 第七周课堂学习
- 环境变量的作用附加一些配置java环境时的注意点
- Android Studio自定义组件时被继承的类红线提示需要导入V7包的widget组件
- 《python运维自动化》-备份目录
- RelativeLayout和LinearLayout属性设置居中
- 原型模式(Prototype Pattern)
- 使用fastcgi_finish_request提高页面响应速度
- 一起学ReactNative(2) Flex布局入坑手册
- RXAndroid
- windows10安装gulp cnpm git bower等工具总结
- 【9】log4net 实例
- unity-Profiler调试Android的正确姿势