我想编写一个恢复文件的脚本,但保留创建回退文件后可能会进行的更改。
有更多细节:有时我会创建一个文件备份(file_orig)。对原始文件也进行一些更改(file_my_changes)。之后,原始文件可以再次更改(file_additional_changes),但在恢复之后我想要备份文件,加上其他更改(file_orig + file_addtional_changes)。通常只退出我的更改。
我在谈论grub.cfg文件,因此预期的可能更改将是添加或删除部分行。
是否可以使用bash脚本完成此操作?
我有两个想法:
在我要更改的行上方添加一些注释,然后在resotore之前,如果该行与已退出文件中的行不同,则读取注释,这将告诉我究竟要删除哪些内容这条线;
如果有办法只显示与file_orig和file_additional_changes不同的行部分,则用file_orig中的行+不同的部分替换此行。但我不确定是否可以这样做。
实施例“
第1行:这是第1行
第2行:这是另一个第1行
是否可以只显示“另一个”?
当然欢迎任何其他想法!
谢谢!
答案 0 :(得分:0)
不清楚,但是如果你使用bash脚本,你可以在2个编辑过的文件和最后一个文件上运行diff
,并将那个输出保存到你要保留的地方?这意味着你有一份改变的副本。
或者像其他人一样使用git。
答案 1 :(得分:0)
创建备份:
cp operational-file operational-file.001
编辑操作文件。
根据差异创建补丁:
diff -u operational-file.001 operational-file > operational-file.patch001
再次复制操作文件。
cp operational-file operational-file.002
再次编辑操作文件。
创建新补丁
diff -u operational-file.002 operational-file > operational-file.patch002
如果您需要恢复但跳过patch.001
的更改,则:
cp operational-file.001 operational-file
patch -i patch.002
这只会对原始文件应用第二组更改,因为日志没有重叠。
考虑使用版本控制系统来保存文件更改的记录。考虑在文件名上使用日期/时间戳而不是版本号。