pri*_*tam 8 diff patch large-files
我正在尝试使用两个大尺寸文件夹(~7GB)创建一个补丁.
我是这样做的:
$ diff -Naurbw . ../other-folder > file.patch
Run Code Online (Sandbox Code Playgroud)
但也许由于文件大小,修补程序没有被创建并给出错误:
diff: memory exhausted
Run Code Online (Sandbox Code Playgroud)
我尝试制作超过15 GB的空间,但问题仍然存在.有人可以帮我解决我应该使用的旗帜吗?
Igo*_*gor 16
最近,当我需要区分两个大文件(每个> 5Gb)时,我也遇到了这个问题.
我尝试使用不同选项的'diff',但即使--speed-large-files
没有效果.其他方法,如将文件拆分为较小的xdelta
文件,根据此建议使用或排序文件也无济于事.我甚至还得到了一个非常强大的VM(> 72Gb RAM),但仍然遇到了这个memory exhausted
错误.
我终于通过向sysctl.conf
(sudo vim /etc/sysctl.conf
)添加以下参数来工作:
vm.overcommit_memory=1
Run Code Online (Sandbox Code Playgroud)
vm.overcommit_memory
有三个值(0,1,2)并设置内核虚拟内存记帐模式.从proc(5)手册页:
0:启发式过度使用(这是默认值)
1:总是过度使用,从不检查
2:始终检查,永不过度使用
要确保参数确实已应用,您可以运行
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)
完成后别忘了更改此参数!