我想要找出两个文本文件(每个文件超过 50 GB)之间的差异。
我尝试过diff
但是遇到了memory exhausted
问题。
我使用的是 Windows7。我的代码是 PHP 的。我从 php 调用 diff 如下:
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'");
有人告诉我rdiff
这会生成签名和增量,但是我没有测试它,因为我不知道如何开始。
我从哪里可以安装它?我从哪里可以运行它?从 windows cmd 还是 cygwin cmd?
答案1
你尝试过--speed-large-files
切换到diff
吗?这样应该会浪费更少的内存:
diff --speed-large-files [...]
来自手册页diff
:
--speed-large-files
假设文件很大并且有很多分散的小变化
答案2
wxHex编辑器
wxHexEditor 既免费,又能区分最大 2^64 字节 (2 ExaByte) 的大文件。具有 GUI。跨平台。功能众多。
要免费获取,请选择以下选项之一:
- 选项:SourceForge
- 选项:GitHub
- 选项:Debian 和 Ubuntu 存储库
以下建议与上述相同。但如果您感兴趣的话,可以查看详细信息。
截屏
力量
• 十六进制 (Hex) 编辑器。这有助于进行逆向工程。
• 跨平台。Linux、Mac OS、Windows
• 易于使用的图形用户界面 (GUI)
• 支持高达 2^64 字节 (2 ExaByte) 的超大文件
• 并排比较两个大文件(差异)。可选择列出并搜索所有差异。
• 搜索速度非常快
• 使用少量 RAM
• 不创建临时文件。因此它占用的存储空间非常小。
• 深色或亮色主题
• 多语言 15 种语言
• 开源。如果您不熟悉“开源”,这意味着该软件具有更强的安全性和更强的隐私性。因为它的代码是公开的,可供审查和贡献给 GitHub,网址为https://github.com/EUA/wxHexEditor或者在 SourceForge 上https://sourceforge.net/p/wxhexeditor/code/
• 有吸引力的 GNU 通用公共许可证版本 2。这意味着此扩展的软件代码由友好的非营利社区拥有和支持。而不是营利性公司。https://github.com/EUA/wxHexEditor/blob/master/LICENSE
挑战
• 两个代码存储库之间的混淆。截至撰写本文时(2021 年 8 月),GitHub 存储库似乎更新。它上次更新时间为 2021 年https://github.com/EUA/wxHexEditor 相比之下,SourceForge 存储库位于https://sourceforge.net/projects/wxhexeditor/wxHexEditor 的最新更新日期是 2017 年 12 月 31 日。
表达您的支持
• 如果您喜欢此应用程序,请通过以下方式向作者和贡献者表示支持:
___• 支持工单https://sourceforge.net/projects/wxhexeditor/support
___• 通过论坛提供支持https://sourceforge.net/p/wxhexeditor/discussion/
___• 补丁位于https://sourceforge.net/p/wxhexeditor/patches/
使用
• wxHexEditor 0.23 • Debian 10 Buster • GNOME 3.30.2
答案3
我可以从哪里安装它(rdiff
)?
有人告诉我
rdiff
可以生成签名和增量,但我没有测试它,因为我不知道如何开始。我可以从哪里安装它?我可以从哪里运行它?从 Windowscmd
还是 cygwin cmd?
赛格威包括rdiff
。它在rdiff-1.0.0-1
包裹里。
我可以从哪里运行它(rdiff
)?
有人告诉我
rdiff
可以生成签名和增量,但我没有测试它,因为我不知道如何开始。我可以从哪里安装它?我可以从哪里运行它?从 Windowscmd
还是 cygwin cmd?
您运行rdiff
Cygwin bash
shell。
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'");
类似于上面的命令(根据需要替换diff
和rdiff
修改命令选项)应该可以工作。
我怎样才能知道rdiff
是哪个包裹?
查找包含特定命令的包的最简单方法是使用Cygwin 软件包搜索网页:
滚动到页面底部:
这确认这rdiff-1.0.0-1
是要安装的正确包。
看安装和更新 Cygwin 软件包了解安装说明。