复制对话卡在了还剩 0 秒...
每当我尝试将大文件复制到我的 U 盘(以任何格式)时,它总是在最后一刻停止。它在很长一段时间后完成。
我在Ask Ubuntu 上搜索了类似的帖子,得到了很多,但没有一个有很好的解决方案。
那么......在Windows上有没有像Teracopy这样的替代复制工具?
或者有什么我可以做的修复吗?
小智 7
您看到复制发生的原因是对 USB 驱动器的写入是异步的。
当您复制文件时,它实际上是将其复制到 USB 驱动器的缓冲区中,该缓冲区位于计算机的 RAM 中。副本的第一部分非常快,因为它只是进入缓冲区。数据被刷新从缓冲区到 USB 驱动器的速度要慢得多。一旦缓冲区填满,它必须等待一些数据刷新到磁盘,然后才能将更多数据放入缓冲区,因此副本会立即减慢速度,有效地达到 USB 驱动器的速度。将所有文件放入缓冲区后,文件似乎已被复制。然而,并非所有数据都已从缓冲区刷新到 USB 磁盘本身。一些复制程序只是返回并让刷新在后台进行。有些会等到所有数据都被刷新,这就是为什么它会在一段时间内保持 100%。
您可以将磁盘切换到同步模式,这意味着所有数据都会立即写入 USB 驱动器,而无需使用缓冲区。这会给人一种更顺畅的数据传输的印象,但实际上最终可能会导致整体速度降低。
如果您从命令行手动挂载磁盘,则可以添加-o sync.
如果使用 fstab 挂载它,则可以添加该sync选项。
如果您在 GUI 中访问它时依赖 Ubuntu 为您挂载它,则可以在挂载后从命令行修改挂载选项:
sudo mount -o remount -o sync /media/yourname/diskname
Run Code Online (Sandbox Code Playgroud)
你不应该太担心这个。
也许您的 U 盘“质量较低”。
关于时间的对话输出具有误导性。
其他复制工具可能有不同的输出行为,
但它们不会提高 USB 驱动器的写入速度。
最重要的是,最终复制操作成功。
您可以做的是优化磁盘的输入/输出调度程序。
安装gksu(当您还没有安装时)以geditroot身份编辑文件:
sudo apt-get install gksu
Run Code Online (Sandbox Code Playgroud)
现在优化各种磁盘类型的所有正在运行的进程的优先级:
gksudo gedit /etc/udev/rules.d/60-schedulers.rules
Run Code Online (Sandbox Code Playgroud)
将以下行粘贴到这个空文件中,然后保存文件:
# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Run Code Online (Sandbox Code Playgroud)
您所做的更改在重新启动操作系统后生效。
另外... Ubuntu 存储库中提供了另一种复制解决方案:
sudo apt-get install dirdiff
Run Code Online (Sandbox Code Playgroud)
现在从终端启动该工具以比较或复制文件和文件夹:
dirdiff
Run Code Online (Sandbox Code Playgroud)
dirdiff是一个图形用户界面,diff最多可以处理 5 棵树。它显示一个主窗口,其中包含树之间不同的文件列表,并带有彩色方块以指示版本的相对年龄。菜单允许您在另一个窗口中显示任意两个版本之间的差异。另一个菜单允许您将文件和文件夹从一棵树复制到另一棵树。
总结:最重要的是U盘的质量和它的写入速度能力!