运维的日记

diff和patch配合打补丁

2020-03-23  本文已影响0人  陈公子ks

一般程序都会出现漏洞,目前主要使用diff和patch对程序进行打补丁。
在Linux中,我们使用diff可以生成补丁文件,然后patch命令对其将进行打补丁。
为了做实验,我们在一个目录下创建两个脚本

# vim test1.sh
   #!/bin/bash 
   echo "hello world"
# vim test2.sh
   #!/bin/bash
   echo "hello the world"
   echo "test file"
diff -u test1.sh test2.sh

diff告诉我们,怎么修改成第一文件得到第二个文件。


diff命令常用选项:

-u 输出统一内容的头部信息(打补丁使用),计算机知道是哪个文件需要修改

-r 递归对比目录中的所有资源(可以对比目录)

-a 所有文件视为文本(包括二进制程序)

-N 无文件视为空文件(空文件怎么变成第二个文件)

-N选项备注说明:

A目录下没有txt文件,B目录下有txt文件

diff比较两个目录时,默认会提示txt仅在B目录有(无法对比差异,修复文件)

diff比较时使用N选项,则diff会拿B下的txt与A下的空文件对比,补丁信息会明确说明如何从空文件修改后变成txt文件,打补丁即可成功!


diff -u test1.sh test2.sh > test.sh

生成补丁文件

patch -p0 < test.sh

使用patch命令为代码打补丁

patch命令选项说明:
patch -pnum(其中num为数字,指定删除补丁文件中多少层路径前缀)
如原始路径为/u/howard/src/blurfl/blurfl.c
-p0 则整个路径不变
-p1 则修改路径为u/howard/src/blurfl/blurfl.c
-p4 则修改路径为blurfl/blurfl.c
-R(reverse)反向修复,-E修复后如果文件为空,则删除该文件

上一篇 下一篇

猜你喜欢

热点阅读