linux日常应用管理(2)---diff

来源:互联网 发布:领航软件官网 编辑:程序博客网 时间:2024/05/16 23:54

今天公司老大突然来了个需求,以后每次更新补丁的时候,都需要把服务器上的资源文件(配置文件)拿下来与需要更新的资源文件进行比对,确认后再放上去。

如果是1,2个的话,倒不是问题。win的下面这种工具很多,但是数量一多。确实很棘手。就想写个工具?不过我也不会C什么的。就写个脚本吧。

cygwin(win下的访UNIX系统)基本上我都是用这个来进行win服务器的操作的。(个人习惯linux。。。)

linux下有个工具diff比较工具,(different),和patch一起运用就是可以给差异文件打补丁。

diff file1 file2 直接比较file1和file2的差别。

a--add,c--change,d--delete

这里我只说几个有用的参数,diff -y -w file1 file2会将文件的对比差异信息输出在一行中

许多参数可以通过man查询,我不一一做介绍。

我的需求是需要将服务器上的文件夹resource拷贝到本地,然后将对应的新resource进行对比,

压缩打包--->传送--->本地解压--->对比

前几步不是这里的重点,略带一下。

ssh Username@IP "tar zcvf $PATH/resource.tar.gz $PATH/resource"

scp Username@IP:$PATH/resource.tar.gz $LOCAL_PATH/

接下来就是重点了,

diff是可以比对文件夹的,但是如果直接比对两个文件夹

需要加上-r参数,diff -r directory1/ directory2/

然后我想查看详细 可以输出到一个指定文件中,diff -r directory1/ directory2/ >> $LOCAL_PATH/diff.txt

因为我有很多服务器的resource需要对比,所以将所有的resource对比都追加到diff.txt下面,方便确认。



后来没事做了一下拓展。关于diff 和patch的运用。

diff -Naur file.old file.new > file.patch

patch -pN < patch_file.patch 更新

patch -R -pN < patch_file.patch 还原

-pN N代表number,取消几层目录

-R将新文件还原成旧文件


0 0