原理:
使用 diff 命令把修改前和修改后两个文件的差异记录在 patch 文件中,然后用 patch 命令把 patch 文件打到旧文件中得到新文件。
可以用于更新终端设备的文件,或者同步文件的修改内容给其他用户。
制作补丁
制作文件的补丁:
$ diff -au old.file new.file > test.patch
old.file 修改前的文件,new.file 修改后的文件。
test.patch 补丁文件,记录了 old.file 文件和 new.file 文件的差异。
制作目录的补丁
$ diff -Naur old/ new/ > test1.patch
old 修改前的目录,new 修改后的目录。
命令选项说明:
-N 不存在的文件以空文件方式处理
-a 所有文件都以文本方式处理
-u [n] 输出(默认为 3 行)一致的上下文(差异前后相同的行,方便定义差异的位置)
-r 连同所有子目录一起比较(递归处理)
更多的选项可以通过命令 diff --help 查询。
打补丁
更新文件:
把 test.patch 文件拷贝到 old.file 文件同级目录,执行命令:
$ patch -p0 < test.patch
执行完命令后就可以把 old.file 文件更新成 new.file 文件。
更新目录:
把 test1.patch 文件拷贝到 old 目录的同级目录,执行命令:
$ patch -p0 < test.patch
执行完命令后就可以把 old 目录的所有文件更新到和 new 目录的文件一致。
命令选项说明:
-p NUM 从文件名中去除 NUM 前导部分(同级目录 NUM 填 0 就可以)
更多的选项可以通过命令 patch --help 查询