进一步阅读

进一步阅读

我的 NTFS 分区上有许多文件,其大小大于磁盘上相应的大小。

文件大小属性

  • 在十六进制视图中,文件的末尾(通常超过文件的一半)用 0x00 填充。
  • 当我复制文件时,复制的文件在磁盘上的大小大于其本身的大小。但是该文件仍然充满了大量不必要的 0x00。
  • chkdsk 没有发现错误。
  • NTFS 压缩已关闭。

我该如何修复这些文件?

答案1

但是文件仍然很大,充满了不必要的 0x00。

您怎么知道这是不必要的?图像末尾可能没有这样的零数据,但许多文件(如磁盘映像或预分配格式)确实有大量零数据。您的图像仍能正常显示吗?

文件系统不会将随机或空白数据存储到文件中。因此,除非磁盘损坏,否则数据肯定是由某些人或应用程序写入的。您不会修复文件系统,因为它没有问题。如果文件是真实数据,您也不会修复它们。相反,您需要检查您的 PC 上是否有一些恶意程序

回到主要的“问题”,在各种情况下,磁盘大小可能会更小,例如常驻文件或符号链接。但是这么大的文件显然不适合放在 MFT 条目中,因此在你的情况下很可能是稀疏文件文件系统仅存储有意义的数据,省略空白部分以节省空间。

但是默认情况下文件不会以稀疏格式创建,因此某些程序会在文件上设置稀疏标志。也可以使用以下命令手动启用它fsutil 稀疏

PS D:\> fsutil file createnew zeros 0x100000      # create a blank file 0x100000 bytes long
File D:\zeros is created
PS D:\> fsutil sparse setflag .\zeros
PS D:\> fsutil sparse setrange .\zeros 0 0x100000 # set the range of zero bytes
PS D:\> fsutil file layout .\zeros

********* File 0x0015000000000e3d *********
File reference number   : 0x0015000000000e3d
File attributes         : 0x00000220: Archive | Sparse
File entry flags        : 0x00000000
Link (ParentID: Name)   : 0x0005000000000005: HLINK Name   : \zeros
Creation Time           : 13-12-2018 17:44:25
Last Access Time        : 13-12-2018 17:45:48
Last Write Time         : 13-12-2018 17:45:48
Change Time             : 13-12-2018 17:45:48
# ... irrelevant data
Stream                  : 0x080  ::$DATA
    Attributes          : 0x00000200: Sparse
    Flags               : 0x00000008: No clusters allocated
    Size                : 1,048,576
    Allocated Size      : 0
    Extents             : 1 Extents
                        : 1: VCN: 0 Clusters: 256 LCN: -1

如上所示,设置零点范围后,分配的大小在流中::$DATA变为零

稀疏文件

要删除稀疏标志,您只需将文件复制到新文件,因为如上所述,它默认不处于开启状态

进一步阅读

相关内容