我如何比较巨大的目录树?
我认为使用一个免费工具来制作文件系统结构快照(文件和目录的列表、它们的大小和时间戳)是理想的,这样我就可以将快照与稍后制作的另一个快照进行比较。
樹科这对于那样来说会很棒但是对于一棵巨大的树(我的意思是真的很大!)它会崩溃因为它试图将其保存在内存中(4GB 的内存是不够的)...
我通过将快照拆分成几部分并比较这些部分来解决这个问题。但这很乏味,而且这个问题肯定可以得到更好的解决。
还有其他免费(最好也是开源)工具可以尝试吗?或者还有其他我忽略的方法吗?
操作系统可以是Linux或Windows。
答案1
我将尝试进一步阐述如何使用总指挥官(我希望我明白你想做什么)。
- 安装磁盘目录打包插件(我把插件的直接链接放在这里,如果你愿意的话可以去插件页面并查找 DiskDir 插件
- 插件安装完成后,使用 Alt+F5 “打包” 您想要跟踪更改的目录,然后从对话框的 Packer 部分的下拉列表中选择“lst”;这将创建一个“包”,您可以按回车键输入该包,就像输入目录一样,它将显示目录的完整内容
- 比较结果时,转到左侧窗格中的原始目录,然后在右侧窗格中输入所需的快照
- 使用位于命令菜单中的“同步目录”功能
- 在同步目录窗口中取消选中按内容比较,选中子目录并忽略日期(如果更改日期很重要,则不选中)并运行比较
- 窗口将显示相同的文件(在这种情况下不是按内容,仅按大小)、不同的文件以及左/右侧缺失的文件。
由于快照是纯文本文件并且您没有按内容进行比较,因此它应该很快,但我从未将它用于非常大的目录。
如果您不进行备份,而只是希望对某个时刻的目录内容进行快照,这将非常有用。如果您进行备份,则可以使用相同的工具(同步目录)按内容进行比较。
还有扩大的视野DiskDir 插件,下载链接在第一篇文章中。此版本可让您将软件包(如 zip、7z...)显示为快照中的目录。这当然会增加制作快照的时间。
答案2
您只需在终端中使用
du -a
这将返回所有子文件夹中的所有文件(包括其大小),然后比较这些文件
将数据保存到文本文件
du -a > dump.txt
然后你就可以使用类似差异比较文件
这是针对 Linux 的 :D
答案3
这是我用来比较非常大的目录树的方法:
rsync --archive --dry-run --verbose /src/directory/ /dst/directory/
答案4
一周前拍摄的第一张快照:
rsync --archive /the/source/ /var/snapshot1/
现在拍摄第二张快照:
rsync --archive /the/source/ /var/snapshot2/
并比较它们:
rsync --archive --list-only /var/snapshot1/ /var/snapshot2/