我在不同的机器上有几个松散同步的文件系统. (有些内容是多余的,有些则不是,用户可以手动移动内容).这些是大型的科学数据集(数十TB);它们跨群集移动,具体取决于我们对它们执行的工作类型.它们没有标准的命名约定(文件有时会被重命名为各种实验,或者选择或合并文件的子集时).
我想找到一个工具,可以让我有效地找到远程文件系统的冗余,这样我们就可以删除冗余数据,并在淘汰存储砖时复制非冗余数据. (旁注:像Ceph这样的分布式文件系统承诺处理这些情况;这将是未来的路线,但现在我们必须按原样处理现有系统)
由于许多对象已经手动移动和重命名,我不能依赖它们的文件名来与diff或rsync进行比较.我宁愿使用加密校验和,如sha256来识别我的数据文件.
每次运行比较时,我都不想校验整个数据集.这些文件一旦创建,就不太可能经常更改,因此应该缓存校验和.
有现成的工具吗?也许在Posix扩展属性中存储校验和的东西(使用时间戳来检查校验和新鲜度),以及可以提取信息以有效地区分文件系统内容的工具,而无需关心文件名?
解决方法
如果这些是大文件,您可以考虑设置一个允许用户使用bittorrent复制数据的系统;它有一种内置的校验和数据的方式,如果你有几个存储文件的地方,你可以通过不加载一个或两个带传输的系统获得额外的好处.
如果您正在管理系统或数据,您可能需要考虑更改有关数据如何复制或移动的策略;如果出现问题,这可能会导致你失去更少的头发,如果发生了什么事情,你的用户可能会感谢你,“这次”鲍勃没有在大厅里备份数据.如果你在现有的基础设施中工作,你不需要做太精细的事情;甚至一些服务器通过网络运行定期rsync(这也是相对较快的,因为它只传输通过网络传输的大文件中的更改,而不是如果它认为它是本地文件)将创建同步文件.
我会提醒说,复制这样的文件并使用校验和在技术上不是备份;这是重复的.备份意味着当您的主文件损坏时,您可以“回滚”到以前的版本(想要设置类似于CVS的东西来检查您的大数据文件?…),而复制,即使使用校验和,意味着如果您的原始文件被破坏(意外删除,驱动器中的坏扇区等),腐败将被复制出来,校验和以及所有重复项,使它们变得无用.你想要计划那个场景.