我最近在一个程序上玩硬链接,该程序将文件复制到其目录中的所有位置,删除所有重复项并用硬链接替换它们。我把它记下来了。我了解硬链接的工作方式只是对磁盘上数据本身的另一种引用。因此,如果我要从创建的硬链接访问数据,它看起来是一样的。
问题是找到实际使用的磁盘空间量,这是验证这确实是节省空间的问题之一。换句话说,如果要从 12K 文件开始,创建该文件的硬链接,然后在资源管理器中选择两者,它会显示为 24K 在磁盘上使用,而不是真正应该的 12K。
我知道我可以在进程之前和之后查询磁盘上的可用空间,然后进行比较。但这是初步评估,事后很难验证。我也知道我可以使用GetFileInformationByHandle来查明相关文件是否有多个引用。
那么这里有什么想法吗?我是否必须为每个文件调用 GetFileInformationByHandle,记录所有数据,然后删除具有重复索引引用的文件才能准确了解实际使用了多少磁盘空间?或者有没有更简单的方法来实现这一点?