取消移动文件夹后丢失数据

取消移动文件夹后丢失数据

我尝试在 Ubuntu 20.04.2 上将 30GB 文件夹移动到我的外部 exFat 驱动器。在移动操作期间,我看到 exFat 上有一些子文件夹。我取消了移动操作,因为它看起来需要很长时间。取消后,exFat 上的子文件夹消失了,Ubuntu 端也消失了。我尝试在 Windows 机器上恢复 exFat,但没有这些子文件夹的证据。

问题是什么?

答案1

原则上,它的工作原理如下。在移动操作中,源中的每个文件在成功复制到目标后都会被删除。当您在传输(通常是较大的)文件期间中断移动操作时,目标文件是不完整的(在我看来,这是 Linux 的不良行为 - 相反,应该删除不完整的副本,即损坏的文件),但源文件会保留。

第二个考虑因素是 Linux 大量使用 RAM 来缓冲文件传输操作。这意味着内容首先被缓存到 RAM 内存中,然后才在目标磁盘上延迟一段时间后才物理写入。由于这种机制,复制似乎比实际完成得早。一旦所有文件都已读入缓存,复制即被视为完成。然后,操作系统将在后台继续将文件写入磁盘。

您的文件已损坏,这让我怀疑您可能过早移除了 exfat 驱动器。在系统告诉您移动操作已取消后,您可能物理移除了驱动器。系统会这样说,但实际上,根据我上面解释的缓存,物理写入操作可能仍在后台进行。

这就是为什么您总是需要在通过软件断开驱动器后拔下它们的主要原因。如果您首先尝试通过软件断开连接,系统将警告您物理移除是否安全,刷新缓存并让您知道何时可以安全移除驱动器。

建议:首先复制而不是移动大量文件,然后在复制完成后删除源文件。如果取消,所有源文件仍会保留,不会受到影响。

相关内容