存储设备已满,但文件仍写入其中

存储设备已满,但文件仍写入其中

我为我的 Windows 安装和 Ubuntu Live CD 创建了一个可启动的拇指驱动器,它还包含一些 Windows exe(应用程序)。

我认为为了防止病毒,我的想法是最好把 U 盘里的所有空间都填满。我在 Ubuntu 上使用下面的命令

yes > AAA.dummy

创建一个虚拟文件,当驱动器已满时它会停止,正如我在 Nautilus(Ubuntu 文件管理器)中看到的那样,它显示驱动器已完全填满,并且 Windows 10 资源管理器显示驱动器上的可用字节为 0。

很好,看起来像是我想要的,但我想看看是否仍然可以将文件写入驱动器,我只是做了

touch temp.text

文件创建好了,我感到很困惑,但我觉得可能因为创建的文件的大小只有 0 字节,所以这并不重要,但是

echo "it doesn't work" > temp.txt

也可以工作,文件已写入并显示在驱动器中。怎么会?

如果空间为 0 字节,怎么还会有东西写入其中?我甚至无法从病毒中拯救出来!。我使用终端仿真器在我的 Android 设备上尝试了同样的事情,我填满了可移动 SD 卡上的空间,但像触碰仍然会创建空文件,尽管这次 echo > *.txt 不起作用

编辑:

抱歉,我没有添加这一点,文件系统是 NFTS

我主要担心的是病毒还能写入驱动器吗?

答案1

这个答案“当文件中有数据时,磁盘上文件的大小怎么会是 0 字节?”:

为了节省磁盘空间,NTFS 让小文件“驻留”,将其内容直接存储在文件记录中,因此无需为其分配任何簇。因此,磁盘上的大小为零,因为文件记录之外没有任何东西。一旦文件变得足够大,NTFS 就会使其“非常驻”,为其分配一个或多个簇(创建非零“磁盘上的大小”),并在文件记录中创建“映射对”来代替数据指向簇。

此外

随着文件添加到 NTFS 卷,MFT [主文件表] 中会添加更多条目,因此 MFT 的大小会增加。从 NTFS 卷中删除文件时,它们的 MFT 条目会被标记为空闲,可以重新使用,但 MFT 不会缩小。因此,这些条目占用的空间不会从磁盘中回收。

因此,MFT 中可能有一个空闲条目,文件内容也存放在那里。

相关内容