使用cp复制文件时如何显示传输进度和速度?

Modified on: Sat, 09 Jun 2018 00:50:23 +0800

否则,是否有可以实现此目的的替代命令行实用程序?

最佳答案

虽然cp没有此功能,但您可以使用pv执行此操作:

pv my_big_file > backup/my_big_file

注意:此方法将丢失文件的权限和所有权。以这种方式复制的文件将具有与您自己创建的文件相同的权限,并且属于您。

在此示例中,pv基本上只是将文件输出到stdout *,您可以使用>运算符将其重定向到文件。同时,它会在您执行此操作时将有关进度的信息打印到终端。

这就是它的样子:

stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 

您可能需要在你的系统上安装pv(或者,输入sudo apt-get install pv)。


*:技术位

类似unix的系统中有三个重要的数据流:stdout(标准输出),stderr(标准错误)和stdin(标准输入)。可以这么说,每个节目都有三个。 >重定向操作符将程序输出重定向到文件。如上所述,如果没有参数,>会将程序的标准输出重定向到文件。 cp基本上没有比

更好的东西

cat source > destination

(其中cat只读取文件并将其打印到stdout)。 pv就像cat一样,但是如果你把它的输出流重定向到其他地方,它会将进度信息打印到stdout。

查看man pv以了解更多信息。


另一个选项,如 DoR建议在这个答案,是改为使用rsync:

$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
        621.22M  57%  283.86MB/s    0:00:01

这将在显示进度时保留文件权限/所有权。


相关问答

添加新评论