答案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
变为零
要删除稀疏标志,您只需将文件复制到新文件,因为如上所述,它默认不处于开启状态