我正在尝试使用两个大尺寸文件夹(~7GB)创建一个补丁。
我是这样做的:
$ diff -Naurbw . ../other-folder > file.patch
但也许由于文件大小,修补程序没有被创建并给出错误:
diff: memory exhausted
我尝试制作超过15 GB的空间,但问题仍然存在。有人可以帮我解决我应该使用的旗帜吗?
最近,当我需要区分两个大文件(每个> 5Gb)时,我也遇到了这个问题。
我尝试使用不同选项的'diff',但即使是--speed-large-files
也没有效果。其他方法,如使用xdelta
将文件拆分为较小的文件或按照this suggestion对文件进行排序也无济于事。我甚至得到了一个非常强大的VM(> 72Gb RAM),但仍然有这个memory exhausted
错误。
我终于通过将以下参数添加到sysctl.conf
(sudo vim /etc/sysctl.conf
)来工作:
vm.overcommit_memory=1
vm.overcommit_memory
有三个值(0,1,2)并设置内核虚拟内存记帐模式。来自proc(5) man page:
0:启发式过度使用(这是默认值) 1:总是过度使用,永远不要检查 2:经常检查,永远不要过度使用
要确保参数确实已应用,您可以运行
sudo sysctl -p
完成后别忘了更改此参数!
试试sdiff它是linux发行版中的预构建工具。
sdiff a.txt b.txt --output=c.txt
将显示要修改的文件。
这对我来说很完美.............