首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有好的文件复制工具吗?

有好的文件复制工具吗?
EN

Ask Ubuntu用户
提问于 2016-02-06 15:36:29
回答 6查看 3.1K关注 0票数 9

复制对话卡在0秒左.

每当我试图复制大文件到我的USB挂件(以任何格式),它总是在最后一刻停止。过了很长一段时间就结束了。

我在问Ubuntu上搜索了类似的帖子,得到了很多类似的信息,但是没有一个有很好的解决方案。

所以..。在Windows上是否有像泰瑞这样的替代复制工具?

或者我能做些什么?

EN

回答 6

Ask Ubuntu用户

回答已采纳

发布于 2016-02-06 15:56:14

你不应该太担心这个。

也许你的USB吊坠是“低质量”。

关于时间的对话框输出是误导性的。

其他复制工具可能有不同的输出行为,

但它们并没有提高USB驱动器的写入速度。

最重要的是,复制操作最终会成功。

您可以做的是优化磁盘的输入/输出调度器。

安装gksu (当您还没有安装)来编辑以gedit作为根用户的文件:

代码语言:javascript
复制
sudo apt-get install gksu  

现在,为各种磁盘类型优化所有正在运行的进程的优先级:

代码语言:javascript
复制
gksudo gedit /etc/udev/rules.d/60-schedulers.rules

将以下行粘贴到这个空文件中,然后保存该文件:

代码语言:javascript
复制
# 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存储库中获得:

代码语言:javascript
复制
sudo apt-get install dirdiff  

现在从终端启动工具,比较或复制文件和文件夹:

代码语言:javascript
复制
dirdiff

dirdiff是一个用于diff的图形用户界面,可以处理多达5棵树。它显示一个主窗口,其中有一个文件列表,这些文件在树之间是不同的,带有颜色的方块来表示版本的相对年龄。菜单允许您在另一个窗口中显示任意两个版本之间的差异。另一个菜单允许您将文件和文件夹从一棵树复制到另一棵树。

摘要:最相关的是USB磁盘的质量和它的写入速度的能力!

票数 6
EN

Ask Ubuntu用户

发布于 2016-02-07 14:26:59

您看到复制的方式发生的原因是写入USB驱动器是异步的。

当您复制一个文件时,它实际上会将其复制到usb驱动器的缓冲区中,该缓冲区位于计算机的RAM中。复制的第一部分非常快,因为它只是进入缓冲区。数据以较慢的速度从缓冲区刷新到USB驱动器。一旦缓冲区被填满,它必须等待一些数据被刷新到磁盘,然后才能将其放置在缓冲区中,因此复制速度就会减慢,有效地降低到USB驱动器的速度。一旦将所有文件放置到缓冲区中,似乎已复制了该文件。然而,并非所有数据都已从缓冲区刷新到USB磁盘本身。有些复制程序只是返回,让这种冲洗在后台继续进行。有些人会等到所有的数据都被刷新,这就是为什么它会在一段时间内保持在100%上。

您可以将磁盘切换到同步模式,这意味着所有数据都会立即写入USB驱动器,而无需使用缓冲区。这将给人一种更顺畅的数据传输的印象,但实际上可能最终导致整个速度的下降。

如果您从命令行手动挂载磁盘,则可以添加-o sync

如果使用fstab挂载它,则可以添加sync选项。

如果您在GUI中访问Ubuntu时,依赖于Ubuntu挂载它,那么在安装命令行之后,您可以从命令行修改挂载选项:

代码语言:javascript
复制
sudo mount -o remount -o sync /media/yourname/diskname
票数 8
EN

Ask Ubuntu用户

发布于 2016-02-06 19:12:04

问题很可能是,在文件被完全写入目标驱动器之前,文件被完全读取并存储在内存中。

这并不意味着要准确地回答这个问题,但是在遇到大文件时,可以使用命令行中的pv

代码语言:javascript
复制
sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

每当一个人需要复制一个大文件时:

代码语言:javascript
复制
pv /path/to/big_file >/media/username/usb/big_file

需要注意的是,当在管道中使用时,这会遇到类似的不必要的缓冲问题;如果是这样,修复程序将传输速率限制在略高于目标驱动器的写入速度的范围内:

代码语言:javascript
复制
[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/730458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档