我有一个装有项目文件的 USB,在重新安装 USB 时偶尔会出现问题。 mount 命令说这是由于 ntfs 文件类型导致的 mftmirr 不匹配,因此我决定使用 mkfs.ext4 将文件系统前端更改为。现在我的闪存驱动器内容完全消失了。经过进一步调查,我可以确认 mkfs 不会删除文件,所以我的问题是这可能是什么原因造成的?
答案1
mkfs
命令使用新文件系统格式化目标驱动器。格式化会创建一个不包含任何文件的空文件系统。这就是格式化的目的。
停止使用该驱动器现在并将其重新安装为只读。如果幸运的话,您将能够使用photorec
或类似软件恢复文件。
答案2
mkfs
不会明确删除文件。在目标设备中,它会创建特定于所需文件系统的结构,而不会处理任何已存在的内容。新创建的文件系统为空。
实际上,旧文件消失了。除非新文件系统带有清除整个设备的选项(例如,将零写入现在标记为未使用的空间),否则旧数据和元数据会部分存在。但是,没有直接的方法获取旧数据,因为标识旧文件系统的最基本结构已被新文件系统的最基本结构覆盖。后者表示有一个新的文件系统,它是空的。在这种情况下,没有操作系统会搜索可能的旧文件系统的残余,因此文件似乎消失了。
仍然正确的工具其职责是搜索残余数据,有时您可以恢复一些数据。为了最大限度地提高恢复机会,您应该立即停止写入新文件系统。卸载它。如果需要挂载它,请以只读方式挂载它。
在不丢失文件的情况下将一个文件系统更改为另一个文件系统称为转换。该系列的工具mkfs
不会这样做。一般来说,没有办法将一个任意文件系统转换为另一个任意文件系统。有一些工具可以将某些具体的文件系统类型更改为另一个具体的类型。我不知道有工具允许从 NTFS 转换为 ext4。由于它们非常不同,如果有这样的工具我会感到惊讶。更改文件系统类型的一般方法是将数据复制到其他地方,创建一个新的空文件系统(就像您所做的那样),然后将数据复制回来。
即使新类型与旧类型相同,mkfs
也不会修复旧文件系统。它的工作是创建一个空文件系统重新修复文件系统需要另一个工具(从系列开始fsck
),但是Linux 无法很好地修复 NTFS。我认为就你的情况而言,修复整个旧文件系统已经太晚了。你应该集中精力恢复文件。