ブログ

patchコマンドを使用してパッチを適用・取り消す方法とバックアップを取る方法

at_shiita.ishigaki
2022年2月4日 9時25分

patchコマンドを使用してパッチを適用する例を以下に示します。
※ここでは例としてhoge.txtとhoge_new.txtを作成し、パッチをhoge.patchに保存します。

[armadillo ~]# cat > hoge.txt << '__EOF__'
hoge
fuga
__EOF__
[armadillo ~]# cat > hoge_new.txt << '__EOF__'
hoge
fuga
piyo
__EOF__
[armadillo ~]# diff hoge.txt hoge_new.txt > hoge.patch
[armadillo ~]# patch hoge.txt < hoge.patch
patching file hoge.txt
[armadillo ~]# cat hoge.txt
hoge
fuga
piyo

パッチを適用前に戻すには-Rオプションを使用します。

[armadillo ~]# patch -R hoge.txt < hoge.patch
patching file hoge.txt
[armadillo ~]# cat hoge.txt
hoge
fuga

パッチを適用するときにバックアップを取るには-bオプションを使用します。
バックアップファイルの名前は-B,-Y,-zオプションや環境変数 SIMPLE_BACKUP_SUFFIXで指定することができます。指定がない場合は(ファイル名).origとなります。
※ここでは例として環境変数 SIMPLE_BACKUP_SUFFIXを指定した場合と-Bオプションを使用した場合について記載します。

[armadillo ~]# patch -b hoge.txt < hoge.patch
patching file hoge.txt
[armadillo ~]# ls hoge.txt.orig 
hoge.txt.orig
[armadillo ~]# export SIMPLE_BACKUP_SUFFIX=.bak
[armadillo ~]# patch -b hoge.txt < hoge.patch
patching file hoge.txt
[armadillo ~]# ls hoge.txt.bak
hoge.txt.bak
[armadillo ~]# patch -b -B backup hoge.txt < hoge.patch
patching file hoge.txt
[armadillo ~]# ls backup/hoge.txt
backup/hoge.txt