现在是 2018 年了。Linux 总体上(任何发行版)是否有好的文件复制实用程序

现在是 2018 年了。Linux 总体上(任何发行版)是否有好的文件复制实用程序

我四处寻找,只找到了 2010-2013 年的旧帖子。我发现的唯一看似“值得”的解决方案是 ultracopier 提到的这里安装后无法使用,至少对我来说是这样。现在是 2018 年了,真的没有好的文件复制解决方案吗?我说的是至少以下任何功能(希望是所有功能):

1-暂停复印

2- 复制队列管理和重新排序

3- 实际剩余时间估计,因为我用的是 nautilus,在它显示“完成”后,大多数时候你都无法提取 U 盘,因为“它仍在写入”

我正在使用 18.04

答案1

超级复印机适用于Ubuntu 18.04:

ultracopier ubuntu 18.04.png

如果您在安装或操作时遇到问题,可以直接联系开发人员:[电子邮件保护]

答案2

我不知道有什么好的 GUI 解决方案,但学习使用终端dd甚至只是cp在终端中就可以解决您列出的所有问题。它非常简单快捷。这可能是很难找到好的 GUI 文件复制器的原因:文件复制非常简单,不需要 GUI。

答案3

您有多种选择。如果您只复制几个文件,而且它们相对较小,请使用“cp”。无论如何,即使复制大量小文件,您也不需要暂停复制(您可能无法快速按下 CTL-C 来停止复制)。如果您有非常大的文件,您可以尝试“rsync”或“cp”,并将复制置于后台,例如:

cp somefile.iso /dev/sdb1/somedirectory/&

“&” 将复制操作移至后台,以便您可以继续使用终端窗口执行其他任务。类似的方法是使用“cat”命令(连接。即使没有实际将多个文件连接成一个文件,它也可以工作)。例如:

cat somefile.iso > /media/me/usbdevice/(复制到安装在 /media/me/usbdevice 的 USB 密钥,并保留相同的名称,例如 somefile.iso)。

如果您有很多文件,或者有几个非常大的文件,请考虑同时使用“find”和“cpio” - 这是一个非常有效的组合,不仅适用于复制大文件,还适用于备份和可能涉及数百或数千个文件的其他任务。例如,假设您在目录 /home/me/mystuff 中,它有数百个子目录和数千个文件。要将其备份到安装在 /media/me/usbkey 的闪存驱动器,请使用:

查找 . -depth -print | cpio -pvdaum /media/me/usbkey/

这两个程序结合起来非常快而且非常完整。它也比递归 cp(例如,cp -r * /media/me/usbkey/)快得多。

如果你真的必须有进度指示器,您可以使用在大多数发行版中都可以找到(或可安装)的“pv”实用程序。它跟踪通过管道(|)操作移动的数据的进度。有很多选项(我在创建磁盘映像时使用 -tpreb /​​devicename,但对于文件,您可能会发现类似以下内容(它跟踪文件上的连接(复制)操作的进度:

pv thebigfile.ext | cat thebigfile.ext > somedestination

这里,“somedestination”可能是另一台设备上的文件,如“/media/me/usbdevice/testbigfile.ext”。请注意,如果您的机器相当现代,并且文件相当小(不到几兆字节),结果将是传输速度,但“>”进度指示器可能永远没有机会更新第一个进度指示器。

您评论说您无法提取 USB 密钥,因为它实际上尚未完成,这是由设备的写入延迟而不是复制命令引起的。您可以通过使用带有文件句柄的“fsync”来解决这个问题,以在尝试卸载之前验证写入操作是否完成,或者注意操作是否实际完成。同样,根据设备的不同,这可能需要一段时间 - 如果这对您来说是一个关键问题,您可能需要以写入模式安装目标设备(如 USB 密钥)。这不适合初学者 - 有关详细信息,请参阅“man mount”页面。

最后,关于您对复制队列管理的评论:文件按给定的顺序复制,或者按通配符替换确定的顺序复制(如果您使用通配符)。如果您想要某种东西,例如每天只传输一次或两次文件,允许您将文件添加到列表中,以便在指定时间(例如通过 cron 作业)进行传输,那么简单而快速的实用程序可能不适合您。您甚至可能必须编写自己的代码,具体取决于您想要的复杂程度。您的问题似乎表明您希望按某种顺序将文件放入列表中,例如文件 A、B、C 和 D,但实际上以其他顺序传输它们,如 C、B、D、A。您没有说明重新排序的标准可能是什么(例如,大小?)。许多基础编程书籍都涵盖了队列管理程序(对于您似乎描述的内容,我推荐 Python,因为它对脚本和一般编程都很有用)。您可以提交文件名以供以后通过代理程序复制(例如“copylater.py somefile”)。然后编写一个简单的队列列表和重组器(可能给出要复制的文件的顺序,以及从 1 到 n 的每个文件的编号,并能够在列表中上下移动文件(例如,使用简单的基于文本的前端或使用一些重组标准列表(例如大小)应用于当前列表的“copyreorganize”),最后,编写一个小程序来“提交”复制,即实际发布结果并启动复制操作(您还可以嵌入 pv 进度条,或进行一些简单的计算,例如将文件大小相加并除以相关设备的字节数/秒,甚至可能将目标从设备更改为到远程计算机的 FTP 传输)。 这类程序相对容易编写,但不在这里可用的空间内。

相关内容