复制对话停留在距离0秒的地方...
每当我尝试将大文件复制到USB随身碟(任何格式)时,它总是在最后一刻停止。它经过很长时间才完成。
我在Ask Ubuntu上搜索了类似的帖子,并获得了很多,但没有一个有很好的解决方案。
因此... Windows上是否有其他替代工具,如Teracopy?
还是我可以做任何修复?
复制对话停留在距离0秒的地方...
每当我尝试将大文件复制到USB随身碟(任何格式)时,它总是在最后一刻停止。它经过很长时间才完成。
我在Ask Ubuntu上搜索了类似的帖子,并获得了很多,但没有一个有很好的解决方案。
因此... Windows上是否有其他替代工具,如Teracopy?
还是我可以做任何修复?
Answers:
您不必为此担心太多。
也许您的USB笔式驱动器的质量较低。
关于时间的对话框输出具有误导性。
其他复制工具可能具有不同的输出行为,
但不会提高USB驱动器的写入速度。
最重要的是,复制操作最终成功。
您可以做的是优化磁盘的输入/输出调度程序。
安装gksu
(如果尚未安装)以gedit
root用户身份编辑文件:
sudo apt-get install gksu
现在,针对各种磁盘类型优化所有正在运行的进程的优先级:
gksudo gedit /etc/udev/rules.d/60-schedulers.rules
将以下行粘贴到该空文件中,然后保存该文件:
# 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"
您所做的更改在操作系统重新启动后生效。
另外... Ubuntu存储库中提供了一种替代的复制解决方案:
sudo apt-get install dirdiff
现在从终端启动该工具以比较或复制文件和文件夹:
dirdiff
dirdiff
是一个GUI,diff
最多可以处理5棵树。它显示了一个主窗口,其中包含树之间不同的文件列表,并带有彩色正方形指示版本的相对年龄。菜单允许您在另一个窗口中显示任何两个版本之间的差异。另一个菜单允许您将文件和文件夹从一棵树复制到另一棵树。
简介:最重要的是USB磁盘的质量及其写入速度功能!
之所以看到复制正在发生,是因为写入USB驱动器是异步的。
当您复制文件时,它实际上会将其复制到USB驱动器的缓冲区中,该缓冲区位于计算机的RAM中。复制的第一部分非常快,因为它只是进入缓冲区。数据已刷新从缓冲区到USB驱动器的速度要慢得多。缓冲区填满后,它必须等待一些数据刷新到磁盘,然后才能将其放入缓冲区中,因此副本的速度会减慢,从而有效地降低了USB驱动器的速度。将所有文件放入缓冲区后,似乎文件已被复制。但是,并非所有数据都已从缓冲区刷新到USB磁盘本身。一些复制程序只是返回并让冲洗在后台进行。有些人会等到所有数据都被刷新后,这就是为什么它将在一段时间内保持100%的状态的原因。
您可以将磁盘切换为同步模式,这意味着无需使用缓冲区就可以将所有数据立即写入USB驱动器。这会给人以更平滑的数据传输的印象,但实际上可能最终会导致速度的整体下降。
如果从命令行手动安装磁盘,则可以添加-o sync
。
如果使用fstab挂载它,则可以添加该sync
选项。
如果您在GUI中访问Ubuntu时依赖于Ubuntu来安装它,则可以在安装后从命令行修改安装选项:
sudo mount -o remount -o sync /media/yourname/diskname
问题可能是在将文件完全写入目标驱动器之前,已将其完全读取并存储在内存中。
这并不意味着要确切地回答问题,但是pv
对于大文件,可以从命令行使用解决方法:
sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv
每当需要复制一个大文件时:
pv /path/to/big_file >/media/username/usb/big_file
要注意的是,当在管道中使用时,这会遇到类似的有害缓冲问题。如果是这样的话,一个修复方法就是将传输速率限制为略高于目标驱动器的写入速度:
[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
有很多选择。您可以使用命令行方法:
cp *source* *target*
源是要复制的文件,目标是要复制到的文件或文件夹。可以在https://softwarerecs.stackexchange.com/找到更多选项。
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync
这将从您的if
文件中读取并以of
64MiB块的形式写入文件,然后等到每个块被写出后再开始下一个。您正在使用的实用程序很可能只是将文件读入内存,然后将其发送到磁盘(并且不会告诉您一次执行多少字节)。但是,写缓存可以位于usb加密狗本身中。...因此,您获得的每秒60MiB的速度是usb连接到加密狗内部缓存的传输速率。除非它是USB3加密狗,否则不太可能。USB2的吞吐量不足以每秒处理60MiB。