精确的文件(复制的)在同一驱动器上的磁盘上有不同的大小吗?

精确的文件(复制的)在同一驱动器上的磁盘上有不同的大小吗?

最近我遇到了一件奇怪的事情。一个装满文件的文件夹的精确副本在磁盘上的大小与原始文件不同。我可以理解这种情况如何在具有不同结构的驱动器之间发生,除非这些文件位于完全相同的驱动器上。

我已经进行了多次测试以确保每个文件完全相同并且所有属性也完全相同。

对此该如何解释呢?

两个文件夹属性的屏幕截图: 两个文件夹的属性的屏幕截图。

磁盘管理截图: 磁盘管理的截图

注意事项

  1. 两个文件夹均未打开压缩。
  2. 驱动器上只有一个分区,因此两个文件夹将共享簇大小、文件系统(NTFS)等。

答案1

比较尺寸对比磁盘大小:你上图中的文件内容大小一样,但是占用的存储空间不一样。

文件存储在块(“簇”)中,这些块根据用于准备驱动器的格式化系统和所选的簇大小而变化(如果您不允许使用默认簇大小)。这微软文档显示不同格式选择和驱动器大小的默认簇大小。

您可能还备用数据流 叉子附加到根目录中的文件。

答案2

所以,这需要花很多时间去挖掘,但我最终还是解决了这个问题。通过这个问题,我对我们的服务器有了更多的了解。

文件夹的背景

首先,我们有两个文件夹。这些文件夹的数据(甚至二进制文件)都 100% 相同。这些文件夹位于我们的其中一台服务器上。

这台特定的服务器最近下线了,并从 Windows Server 2008 升级到 2012 再升级到 2016。与这台服务器上的所有其他文件一样,其中一个文件夹在服务器升级期间一直保留在卷上。另一个文件夹实际上是从 2008 年服务器状态的快照中复制而来,然后放置在当前的 2016 服务器上。所以我们有原始文件夹和复制的文件夹。差异在于复制的文件夹比原始文件夹占用更多的磁盘空间。

我尝试过

我解决这个问题的思路是深入研究重复文件夹,找出所有文件在磁盘上的大小是否不匹配,或者只有某些文件不匹配。为了让这个任务更容易完成,我使用了抗体软件公司的WizTree类似于目录统计除了默认情况下它有一列显示每个文件在磁盘上的大小以及其大小之外。我认为 WinDirStat 只显示大小。因此我深入研究发现并非每个子文件夹或文件在磁盘上的大小都不匹配,只有一些。而那些确实有不匹配大小的文件有一些对我来说非常奇怪的特点:文件在磁盘上的大小为 0,即使它们的大小不为零。

一些 NTFS 背景

这一发现让我发现这个答案另一个超级用户问题。就我的问题而言,这是我从该答案中收集到的信息。

  1. 如果文件太小,文件数据和文件系统记录小于 1KB,NTFS 会将数据存储在文件记录本身 (MFT) 中,无需为其分配任何簇。磁盘上没有大小,因为文件记录之外没有任何东西。这称为常驻文件。
  2. 在 Windows 8 之前,NTFS 的“磁盘大小”计算不考虑常驻文件和非常驻文件,只是将每个文件的大小四舍五入为簇大小的下一个倍数。现在,NTFS 将把具有常驻数据的文件计为磁盘上的 0kb 大小;这意味着 Windows 8+ 中使用的计算比 Windows 7- 中使用的计算更智能。
  3. 一旦文件从常驻文件变为非常驻文件,就无法再变回常驻文件。

我最终得到了完全相同但大小不同的文件

经过服务器升级的原始文件夹将在此过程中重写其数据,因此 Windows 重新运行其 NTSF 计算,当它找到现在知道可以成为常驻文件的文件时,它会更新簿记以容纳它们,这意味着几百个 4kb(1x 簇大小)大小的磁盘文件变成了 0kb 大小的磁盘文件,从而将 245Mb 的文件减少到 244Mb。

当我们的 IT 部门使用第三方复制软件时,不仅数据被复制,记账信息也被复制。此应用程序旨在复制所有内容,包括记账。

2008 年的原始文件占用了 245MB,因为 NTFS 在其计算中没有处理常驻文件。重写数据时,NTFS 运行了最新的计算,并使某些文件成为常驻文件。2008 年原始文件的副本也复制了其簿记信息,因此非常驻文件仍为非常驻文件。

因此,一个简洁的答案,无需了解所有背景知识来理解这件事是如何发生的,就是: 一个文件夹包含常驻文件,而另一个文件夹不包含。这是因为一个文件夹的数据是用处理常驻文件的计算方法重写的,而另一个文件夹的数据和簿记信息是从不处理常驻文件的系统中复制的。

值得一提的是

  1. 我可以通过复制原始文件夹 (244mb) 或复制文件夹 (245mb) 来重现此问题。新副本将始终为 244mb,并包含常驻文件。
  2. 如果我使用 Windows 7 计算机查看 C: Drive 的管理共享,由于 Windows 7 会计算磁盘大小属性,因此两个文件夹都显示 245MB。如果我使用 Windows 10 计算机查看,它会同时显示 244mb 和 245mb,因为计算足够智能,可以查找常驻文件。
  3. 如果(从 Windows 8+ 计算机)我从重复文件夹复制一个非驻留文件,该文件是原始文件夹中的常驻文件,则由于数据已被重写,因此复制将产生一个驻留文件。

答案3

Windows 会自动压缩不经常使用的文件。如果 Windows 已对其进行压缩,您可以检查:

右键单击文件夹>属性>高级属性

检查是否启用了压缩内容以节省磁盘空间。

答案4

额外的 1MB 空间可能是由于在索引节点或索引节点...

inode(索引节点)是 Unix 风格文件系统中的一种数据结构,用于描述文件系统对象(例如文件或目录)。每个 inode 都存储对象数据的属性和磁盘块位置。文件系统对象属性可能包括元数据(上次更改、访问、修改的时间)以及所有者和权限数据。

即使它们是副本,较大的一个位于不同的(嵌套)目录中,因此它具有一组不同的索引信息。

相关内容