问题:

问题:

我从 16.04 升级后,正在使用带有 KDE Plasma 的 ubuntu 18.04。我做了一些研究,到目前为止,我了解到在实际文件传输之前,文件会缓存在 RAM 中,以便可以更快地将它们提取到可移动媒体中。

所以我尝试将 2GB 的 DSLR 照片从我的笔记本电脑 m2.ssd 复制到我的 ntfs usb 驱动器(可能是 usb 2.0)。大约需要 15 分钟。

在进度方面,Dolphin 以及其他文件管理器或程序可能会误导用户。当我开始复制文件时,显示的进度非常快并在几秒钟内结束(可能会有所不同)。即使使用 cp 和 rsync 也会发生这种情况。

所以我猜显示的进度实际上是缓存到 RAM。我之所以相信这一点是因为:

a) 即使这些程序说工作已经完成,我的usb 灯一直闪烁

b)当我尝试卸载 USB,它挂了(可能表述错误,它可能要等到复制完成)即使海豚已经通知我工作已经完成。

如果我拔出 USB,它会损坏数据,并且我最终会格式化它,disks因为文件的权限全都乱了。

问题:

1)为什么ubuntu这样处理usb?它不应该像windows一样跟踪进度吗?

iostat2) 有没有办法获得类似 Windows 的文件传输进度?每次我想从 USB 复制文件或将文件复制到 USB 时,我都无法使用或其他任何东西。

答案1

您准确地描述了这个过程,应用程序认为它们在将最后一个字节传递给系统(缓冲区)后就完成了复制工作。umount 和/或 sync 将等到系统缓冲区刷新后才完成。iostat 实际上是跟踪设备上的系统活动的好方法,但 USB 上的闪烁灯是您的好朋友。文件 GUI 提供的“安全卸载”也应该在缓冲区刷新时弹出一些通知。大文件复制可能比您报告的要慢得多,所以在您尝试复制 50G 虚拟机之前,您甚至还没有看到最糟糕的情况。看看“慢速复制”错误,您的结果似乎与其他人看到的完全一致。

至于为什么,嗯,UNIX 一直都是一个多任务操作系统,所以让程序完成并释放内存被视为好事。占用程序内存等待缓慢的 I/O 是不好的。

对于我的大容量副本,我发现使用像 tar 或 cpio 这样的可以指定缓冲区大小的复制程序很有帮助(例如,给 tar 几兆的缓冲区,这似乎可以在一定程度上卸载系统内存分配器,或者减少内存碎片等。

答案2

这个问题是 Dolphin 独有的。我尝试了不同的桌面,大多数桌面在 USB 上表现都很好。在浪费了 3 个月的工作时间后,我换用了 Cinnamon。Plasma 是一款非常好的桌面。但 Dolphin 很糟糕。

相关内容