从多个备份中查找丢失的文件,无论文件夹位置如何

从多个备份中查找丢失的文件,无论文件夹位置如何

我的 PC 上有 6 个备份,在外部硬盘上浪费了大量空间,因为它们都是我的 PC 的完整备份(而不是增量备份),这意味着大多数内容在备份中重复。

我的想法是修剪这些备份,只保留原始备份源中丢失的文件,不管文件夹位置。

由于备份是“可安装单元”,因此我可以使用常见的文件/文件夹实用程序在两个比较集之间查找重复项和丢失的文件,我尝试了一些工具,例如 Windiff 和 Comparator pro,但是这两个工具在与当前文件集进行比较时都会将移动到其他文件夹中的文件显示为丢失的文件。

我需要的是一个工具,它可以列出备份源中存在的丢失的文件,无论它们在哪里,即使它们已被移动到其他地方。

答案1

我也一直在寻找节省空间的备份,下面是我发现的一些应用程序:

合并是一个命令行程序,它将使用硬链接对目录进行重复数据删除。此程序将查看您指向的一个或多个目录,如果有重复文件,它将对其进行硬链接。如果您定期备份,则可以安排此程序在备份后运行并释放空间。

克隆间谍是一个 GUI 程序,将显示重复文件列表。您可以手动删除某些文件的重复项,也可以让它自动为您删除文件重复项。需要在选项中打开硬链接,此程序最初是一个删除重复文件的程序,后来添加了硬链接功能。所以,如果您希望文件硬链接,则必须将其打开。我不知道 CloneSpy 是否知道 NTFS 硬链接限制,但 Dupemerge 知道。

有一些 Windows 资源管理器扩展也可以创建硬链接,并且可以在 Windows 资源管理器中直观地查看哪些文件是硬链接的,硬链接 Shell 扩展将在已硬链接的文件上放置一个红色的“快捷方式”箭头覆盖。此外,在文件属性中的本地驱动器上,它将显示哪些文件是硬链接在一起的。很高兴看到哪些文件是重复的,哪些是唯一的。此外,如果有机会编辑文件,这将起到警告的作用,提醒您,如果您编辑带有红色箭头的文件,则实际上是同时编辑所有硬链接文件。该网站http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html拥有大量有关硬链接、连接点、符号链接的信息。

使用这样的硬链接很不错,因为每个备份文件夹看起来都像一个完整的备份,但备份中和备份之间的公共文件通常只使用一次空间。通常是因为 NTFS 对一个文件有 1023 个硬链接的限制,而 dupemerge 只会将 1022 个文件硬链接到一个文件,所以如果你有超过 1022 个副本,则必须存储第二个数据副本以供另外 1022 个硬链接链接。

有些程序旨在节省空间的备份,重复(Linux duplicity 备份程序的 Windows 版本)。据我所知,这个 GUI 程序会进行重复数据删除,因为它会对数据进行哈希处理。这让我想起了使用 rsync 进行备份。duplicati 的当前版本得到了很大改进,我推荐它。它可以通过设置要保留多少备份、要使用多少空间、备份的最大期限等来管理您的备份。我使用此程序进行长期备份。

硬链接备份(以前称为 RsyncBackup) (GUI 程序)通过硬链接进行重复数据删除。(自从它更名以来,我就没用过这个程序。)因为我打算在商业环境中使用我的程序,所以我没有对它进行更多测试。但它似乎确实运行良好。

Rdiff 备份(命令行程序)也通过硬链接进行重复数据删除。我不喜欢的是它将包含所有修订历史记录的目录放在备份目录中。如果有必要,我希望他们能隐藏它并将其设为点目录。此程序类似于 rsync 备份程序。

需要提醒您的是,在 Windows 中,并不总是清楚硬链接文件使用了多少空间。我相信整体驱动器统计信息是正确的,并且显示了实际使用的空间。但是,如果您对备份目录执行属性检查,看起来硬链接并没有节省任何空间。最终,您应该能够存储看起来超过驱动器容量 100% 的内容。这是因为 Explorer 会计算每个文件条目占用的空间,但不会检查两个文件条目是否指向磁盘上的同一段数据。

- 添加 -

如果您只想保留原始备份中没有的文件,而不管它们位于何处。(例如,在 中FolderA有,并且在中。因为没有改变,但是重新定位了,所以您想要一个程序来删除。)那么我建议的程序是File1Backup1Backup2 File1FolderBFile1File1克隆间谍。这正是该程序最初的设计目的。CloneSpy 有很多选项。我曾经用它完成过类似的任务,我会比较FolderAFolderB& FolderCFolderD然后将FolderA&FolderBFolderC&进行比较FolderD。最后将FolderAFolderB&FolderC与 进行比较FolderD。这样,在所有文件夹中,只存在唯一的文件。

--新增2--

实际上,执行上述操作的一个更简单的方法是将所有目录放在一个组中,并告诉它删除较新的文件。这样会留下重复文件集的最旧副本。这样您就可以知道文件版本的首次创建时间。这还会对目录内以及目录之间的文件进行重复数据删除,从而只生成一个唯一文件的副本。

答案2

我会这么做:

  1. 对于备份中的每个文件,根据文件内容计算哈希码(可能是 md5sum)并将结果和全名重定向到文本文件(file1)。
  2. 按哈希码和路径对文本文件进行排序。
  3. 使用 -u 选项按哈希码对文本文件进行排序,并将结果重定向到另一个文本文件(file2)
  4. 现在 file2 拥有所有唯一文件(如果备份包含一个文件的多个版本,则所有版本都会被保留)。你可以将 file1 和 file2 连接起来,找出 file1 中的冗余文件。

答案3

最终一切都通过使用 Ashisoft 出品的工具 Duplicate Finder 来完成。

优点:它满足了我的需求。

缺点:
- 昂贵,在我看来,29 美元
- 购买时,电子商务网站将我的购物篮中的其他我没有要求的工具“丢弃”,将价格上涨至 50 美元,必须手动从购物篮中移除。
- 价格以欧元兑换,然后又换回美元!您能相信吗?

非常不公平,只是因为着急才买的,我相信那里有大量的源代码,所以只需复制这个代码并重新排列它就可以要这么多钱,真是太糟糕了!

答案4

旧线程,但可能会对其他人有所帮助:全部重复重复文件查找器现在可以选择仅显示非重复文件,即比较文件夹中唯一的文件。上次我检查时,界面相当笨重,但它确实做到了。

相关内容