如果在文件从一个文件系统(ext4)移动到另一个文件系统(NTFS)时删除它,会发生什么情况?

如果在文件从一个文件系统(ext4)移动到另一个文件系统(NTFS)时删除它,会发生什么情况?

从昨天开始,这个问题就一直困扰着我。我使用 GNOME Files(Nautilus)将视频文件从“下载”文件夹移动到 NTFS 驱动器。现在,当我剪切并粘贴文件时,它会立即出现在目标位置(单独的 NTFS 文件系统,在同一硬盘上使用 ntfs-3g)。我知道将文件从一个文件系统移动到另一个文件系统时,它实际上是复制然后删除文件(如果我错了,请纠正我)但我匆忙地从源文件中“shift+delete”文件,片刻之后发现文件管理器仍在将文件移动到 NTFS 文件系统,即使我从源文件中删除了文件并且它消失了。移动条达到 100% 后,它给了我一个错误。但我检查了目标目的地并且文件仍然移动到目的地并且播放正常。

那么,这里到底发生了什么?Linux 上的文件操作是否随后起作用,不会中断移动操作?或者移动到目标位置的文件会损坏?或者错误是由于文件移动时的最后一次复制操作导致的,因为移动操作无论如何都会删除该文件?

答案1

删除文件并不会清除其数据(内容)——它只会删除表示该文件存在的元数据,并将相应的磁盘空间标记为“可供以后使用”。

但更重要的是,操作系统将保持所述元数据会保留到需要的时间。即使您将文件从其目录(或如果它有多个硬链接,则从所有目录)取消链接,只要至少有一个进程保持打开状态,操作系统就不会删除实际文件。因此,在其余的复制操作中,该文件仍然存在 - 只是没有名称(但仍占用其空间)。

做过说“复制操作”是因为计算机无法在磁盘之间物理移动数据——首先将文件复制到目标位置,然后原始文件被删除。这实际上是您收到错误消息的原因:您的文件管理器使用了两个单独的操作(复制和删除);复制成功,但删除失败(因为您已经已删除)。

答案2

在 Linux 上,大多数情况下您可以删除已打开的文件。这将使文件从目录列表中消失。但是,文件占用的空间只有在文件不再使用后才会被释放。

在您的情况下失败的只是移动操作的最后一步:删除源文件/目录。

相关内容