博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell和python对比对目录下不同文件
阅读量:6147 次
发布时间:2019-06-21

本文共 1190 字,大约阅读时间需要 3 分钟。

cat git_tar.py

import subprocess,tarfile,os
def finds():
tar = tarfile.open("test.tar.gz","w:gz")
result=subprocess.call('git diff 99gw 99gw_old>result.txt',shell=True)
if os.path.getsize('result.txt')!=0:
file=open('result.txt','r')
for line in file:
line=line.strip()
if line.startswith("diff --git a/"):
files=line.strip()
files=files.split()[2]
files=files[2:]
tar.add(files)
file.close()
tar.close()
else:
print 'git not diff'

if name=='main':

finds()

vim UPGRADE.sh

#git clone code.
dirName=dirname $0
cd $dirName
[ -d 99gw_old ] || echo "Error: 99gw_old dir not exist."
git clone git@gitee.com:BangHan/99gw.git

#diff dir 99gw and 99gw_old

diff -urN 99gw 99gw_old |awk '/^diff -urN/{print $3}' > diff.txt
for var in $(cat diff.txt);do
dir=${var%/*}
[ -d temp ] || mkdir -p temp
[ -d temp/$dir ] || mkdir -p temp/$dir
[ -f $var ] && \cp -p $var temp/$dir
done

#rsyn diffed files to remote hosts.

hosts="
172.19.xx.xx
172.19.xx.xx
"
for host in $hosts;do
rsync -avz -e ssh temp/99gw/* $host:/tmp/99gw_old/;
done

#rename local git dir.

t=$(date +%Y%m%d_%H%M%S)
mv 99gwold 99gw$t && mv 99gw 99gw_old
[ $? -ne 0 ] && echo "directory rename error"

转载于:https://blog.51cto.com/2821932/2083571

你可能感兴趣的文章
word2010中去掉红色波浪线的方法
查看>>
fabric上下文管理器(context mangers)
查看>>
JQuery-EasyUI Datagrid数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
查看>>
并发和并行的区别
查看>>
php小知识
查看>>
Windows下安装、运行Lua
查看>>
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(二)
查看>>
初识中间件之消息队列
查看>>
MyBatis学习总结(三)——优化MyBatis配置文件中的配置
查看>>
Spring常用注解
查看>>
我的友情链接
查看>>
PCS子层有什么用?
查看>>
查看端口,关闭端口
查看>>
代码托管平台简介
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>