如何最好地比较巨大的目录树

如何最好地比较巨大的目录树

我如何比较巨大的目录树?

我认为使用一个免费工具来制作文件系统结构快照(文件和目录的列表、它们的大小和时间戳)是理想的,这样我就可以将快照与稍后制作的另一个快照进行比较。

樹科这对于那样来说会很棒但是对于一棵巨大的树(我的意思是真的很大!)它会崩溃因为它试图将其保存在内存中(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/

相关内容