Windows 7 磁盘属性对话框报告已用空间大于磁盘上文件的总大小

Windows 7 磁盘属性对话框报告已用空间大于磁盘上文件的总大小

我有两个硬盘(大小相同、分区相同、型号相同),已使用 FreeFileSync 进行同步。它们用于存储数据,而不是系统。同步后,驱动器应该报告相同的可用和已用磁盘空间,但事实并非如此。

第一个驱动器(用于存储)报告已使用 781 GB 的磁盘空间,而第二个驱动器(备份)报告仅 778 GB。为了获取该信息,我右键单击磁盘,然后选择属性。

首先,我认为同步工具没有完成工作(通过排除一些文件)但使用其他文件同步工具(如 SyncToy 或 DirSyncPro)却给出了相同的结果(报告的文件没有差异,证明 2 GB 的差异是合理的)。

另外:如果我进入驱动器根文件夹,选择所有内容(所有文件和文件夹),然后右键单击并选择属性,则报告的两个驱动器上的文件总大小均为 778 GB。但是,如果我仔细查看这些数字,会发现两个驱动器之间只有几兆字节的微小差异。

注意:

  • 计算机已重启多次。

  • 两个驱动器上的回收站都已清空(如果我转到$RECYCLE.BIN文件夹,两个文件夹都几乎是空的(只有几 KB)。

  • 卷影复制已被禁用。vssadmin list shadows没有报告任何内容。

  • Windows 资源管理器文件夹设置已被修改,以显示系统文件和隐藏文件。

  • 我已经在两个磁盘上运行了“错误检查”工具(启用了“自动修复文件系统”)。

为什么两个驱动器的已用空间和可用空间存在差异?我该如何解决这个问题?

答案1

备用数据流

你的源文件可能含有NTFS 备用数据流。如果您的备份/同步软件无法识别它们,则它们将不会被复制到目标。有许多工具可以显示它们,从 Windows Vista 开始dir /r,您可以执行 ,它不仅显示文件,还显示它们的备用数据流。

不同的文件系统簇大小

文件占用的磁盘空间是四舍五入的,因为文件占用的是整数个文件系统簇。例如,如果您的文件大小为 3000 字节,而文件系统簇大小为 4K,则该文件将精确占用 4K。如果您的两个文件系统使用不同的簇大小,则以这种方式浪费的磁盘空间量将不同。

其他很少使用的 NTFS 功能

NTFS 具有其他几个功能,您的备份软件可能支持或不支持这些功能:

  • 压缩。如果在复制过程中解压缩压缩文件,它们将占用更多空间。
  • 稀疏文件:复制这些文件时必须特别小心,否则它们会“爆炸”,例如占用更多空间并且不再稀疏。
  • 重新解析点、硬链接和许多其他可能使您的备份软件感到困惑的功能。

结论

不要依赖文件系统总数。使用某种审计来确保文件被正确复制。例如,您可以尝试md5deep计算哈希值并比较文件。

答案2

此问题与 Windows Vista 及更高版本的向后兼容性有关。在这些系统中,一些在 Windows XP 中具有“已知”名称的文件夹使用NTFS 目录连接点

这种映射的一个例子是: \Documents and Settings\<username>\Application Data被映射到\Users\<username>\AppData\Roaming

您的某些应用程序数据可能被%appdata%Windows 的磁盘空间使用工具计算了两次。或者可能有其他连接点或文件符号链接影响此测量。

要检查备份驱动器是否包含连接点,请dir /A:L /S在其根目录中使用,并将其与源驱动器上返回的内容进行比较。如果它们相同,则问题出在其他地方。

如果它们不相同,那么为了正确复制数据,您必须使用能够理解 NTFS 目录连接点并可以复制它们的程序,其中一个这样的程序是微软 Robocopy或普通的 xcopy。

另一种可能性是文件正在使用,在 Windows 上只有 VSS 可以复制正在使用的文件。

我个人会使用具有以下选项的 Robocopy:

  • /COPYALL- 复制所有文件信息
  • /B- 在备份模式下复制文件
  • /SEC- 使用 SECurity 复制文件
  • /MIR- 镜像目录树
  • /R:n- 重试次数
  • /W:n- 重试之间的等待时间
  • /LOG- 输出日志文件
  • /NFL- 没有文件记录
  • /NDL- 无目录记录

ROBOCOPY source destination /COPYALL /B /SEC /MIR /R:0 /W:0 /LOG:log.txt /NFL /NDL

定义等待计时器是为了确保正在使用的文件不会阻碍您的复制过程。

您还可以使用/BxcopyCopies the Symbolic Link itself versus the target of the link.

但是,如果您不想使用 VSS,通常执行当前正在运行的操作系统正在使用的在线文件系统的复制是一件棘手的事情。

相关内容