如何将文件,链接和克隆文件区分

除苹果文件系统(的APF),文件系统不跟踪的文件是否是克隆或已被克隆。该信息是无关紧要如何现代文件系统的工作。然而,好奇的人们可能会想知道一个路径是否是一个普通的文件,symbolic-或硬链接,或其他文件的副本。这篇文章是给你的。

我会认为你有点熟悉克隆能力/重复数据删除的文件系统。阅读我的上引其中文件系统支持克隆如果你是新来的吧。

很难确定一个文件是否是另一个文件的一个副本。在Linux中,有可用的要求做这几个程序。我测试过五个这样的计划,并已得出结论,他们是红鲱鱼,并不能确切地回答这个问题。我不会命名程序或羞辱他们的开发人员,而是让你知道要寻找什么出来我就勾勒出了问题。

  • 他们四个人跟着symbolyabo亚博体育下载ic-和硬链接,并错误地得出结论,链接是克隆,而不是链接。他们应该检查的联系,而不是他们的目的地。
  • 其中三只认为是克隆相同的文件,并没有考虑到部分克隆(文件共享一些,但并不是所有的数据。)
  • 它们中的两个仅检查的数据的第一个块,并简单地假设该文件的其余部分是相同的克隆。
  • 他们中的一个校验和文件内容,并宣布他们,如果他们匹配了,被克隆而不管这些文件是如何存储在文件系统中。

在Linux上,你可以比较两个文件路径,以获取有关一个是另一个的克隆一个明确的答复。本文的其余部分将指导您完成整个过程。

首先,让我们排除所有存储在不同的设备和symbolic-和硬链接文件:

  1. 运行命令统计文件1文件2(部分GNU-的coreutils。)
  2. 比较设备标识符,并确认它们匹配。

标识符唯一地标识所述文件系统中的设备安装点。你只能在同一克隆文件挂载点。例如。BTRFS子卷安装在即使它们是相同的不同的安装点“文件系统”。你不能从一个子卷到另一个克隆文件。

  1. 检查的文件报告为“常规文件“ 并不是 ”符号链接“。
  2. 比较其inode编号的相似性。

硬链接共享相同的索引节点号作为自己的目标,而克隆有自己的inode。这种区分(加上写入时复制文件系统)是什么使得即使在由非克隆感知的程序修改克隆独立行事的原稿。

到目前为止,我们已经确认您的路径是[可能]真正的文件。接下来,让我们来看看他们是否会在它们之间共享任何克隆数据。

  1. 运行命令filefrag -v文件1文件2(部分的e2fsprogs。)
  2. 比较文件physical_offset具有该程度的行范围内共享标志设置。

两个文件共享存储驱动器上执行重复数据删除/克隆的数据,如果它们共享任何相同或重叠的范围。

至于确定哪些是原来的,哪个是克隆...。这几乎是不可能的,以确定没有时间机器。幸运的是,许多写入时复制文件系统可以充当时间机器。假设你正在做频繁的文件系统快照,你可以旧的比较目前的状态,以确定哪些文件第一次创建。

您也可以看看文件的诞生次所报告的(在创建文件)统计命令。这并不能保证给予明确的答案,但它是一个重要指标。你可以期望找到这一领域的支持的文件系统(包括增加了Btrfs,的ext4,OCFS2和XFS)在Fedora的33和Ubuntu 20.10开始(这两个版本预计将在)的诞生时间字段是在旧的Linux发行版空。

我一直无法找出识别在Mac OS或Windows克隆文件类似的过程。它的工具根本不存在。有源电力滤波器计算的次文件已被克隆的数量。此计数不帮助您识别它的克隆,还是它的数据共享与目前任何人。

严格地说,确定文件是否是克隆或不是,如果你正在解决一个文件的克隆能力的应用才有意义。然而,它不应该被这种复杂的调试这个文件系统功能!