为什么通过 USB 复制的文件为 0 字节?

为什么通过 USB 复制的文件为 0 字节?

这是一个反复出现的话题,我已经阅读了有关 serverfault 的一些答案,其中包括:

两个复制的 NTFS 文件树中的文件夹大小不同(使用 ntfs-3g)

我们有一个 ubuntu 客户端,研究人员可以从中将使用 MRI 扫描的 DICOM 文件导出到他们的 USB 驱动器或加密狗中。通常,它包含 10 个文件夹中的数百个文件,大小从 100kB 到几 MB 不等。因此,复制的检查总共可能有 3 GB。为了避免人们将带有潜在病毒的驱动器插入 Windows 驱动的 MRI 扫描仪中,我编写了一个将图像传输到 ubuntu 22.04 客户端的程序,人们可以在该客户端下载数据。现在他们中的一些人得到了 0 字节文件。以下是我的想法:

  1. 我最初以为这是因为他们的驱动器使用的格式通常是 exfat,并推荐使用 ntfs。到目前为止,我还没有收到 ntfs 上 0 字节的报告。

  2. 当错误发生时,复制过程非常快。

  3. 我还建议使用 rsync(实际上是 grsync)来获取目标的校验和。虽然系统显示复制已成功完成,但其中一些用户(并非所有用户)似乎仍会获得 0 字节文件。在 ubuntu 客户端上,没有 0 字节文件。但是当他们在 mac 或 windows 计算机上读取数据时,某些文件的大小为 0。

使用相同的驱动器,他们从未在 Windows 驱动的 MRI 计算机上遇到错误。问题可能是什么?源文件很好。

我的设置:Ubuntu 22.04 Nvme 驱动器 2TB × 2 在 zfs 镜像中 Hdd 长期存储 20TB x 2 zfs 镜像(数据在 24 小时后从 nvme 传输到那里)

问题出在 zfs、nvme 驱动程序还是 exfat 加密狗上的坏分区?

谢谢

答案1

谢谢 Gerald,你说得完全正确!我做了一些测试,当 rsync 或 nautilus 复制完成时,只需拔出 USB 闪存驱动器即可重现 0 字节错误。当我在 Windows 上读取文件时,一些文件的大小为 0 字节。然后我做了同样的测试,但这次我正确地卸载了驱动器。文件有时间同步,并且在 Windows 中读取后是正确的。同步可能需要一些时间,因此如果涉及许多大文件,在按下 nautilus 中的卸载按钮后,屏幕顶部应该会显示:“不应拔出设备”。等到您可以看到:“可以移除设备”。

相关内容