我需要在我的 Linux 机器上复制大文件。
例子:
cp source.txt target.txt
我想创建进度条,以显示每个副本文件上的副本仍在进行中
例子”
cp file file1
复制文件 > 文件 1 ……
cp moon mars
复制月球 > 火星......
答案1
简而言之,您找不到cp
进度条输出的本机功能。为什么? 很多原因。但是,您有一些选择:
使用不同的工具。
rsync
,正如 @user1404316 所提到的--progress
:rsync -P largeFile copyLocation
如果您不需要额外的语义,
cp
请通过重定向使用(“Pipe Viewer”)rsync
创建一个新文件:pv
stdout
pv < largeFile > copyLocation
如果你做需要额外的语义,您可以使用
progress
,尽管它没有具体给出该栏。它附加到已经运行进程,因此您可以像这样调用它:# In one shell $ cp largeFile copyLocation # In another shell $ progress -m [ 4714] cp /home/hunteke/largeFile 1.1% (114 MiB / 10.2 GiB) # -m tells progress to continually update
另一个选项是
gcp
,它完全按照您对进度条的要求进行操作:gcp largeFile copyLocation
另一个选项滥用了
curl
处理file://
url 的能力:curl -o copyLocation file:///path/to/largeFile
你可以写一个shell脚本
答案2
rsync
是一个复制程序,具有复制大文件的强大功能,其中包括一个--progress
功能,并且它具有一种传输中压缩形式,可以减少传输中的数据(从而节省复制时间):
rsync --progress file1 file2
rsync
还具有恢复可能由于网络断开而中断的副本的功能。您需要使用 options 来启动它--partial --append-verify
。我能想到的用于通过网络复制的唯一缺点rsync
是它需要安装在两台计算机上,即。发送者和接收者。man
有关详细信息和所有其他功能,请参阅其页面...
如果您由于某种原因无法安装rsync
,或者不想安装,一个很好的简单替代方案pv
是管道观察器命令,这正是您所要求的。
pv from-file > to-file
pv
还包括许多可视化选项。请参阅其man
页面以了解所有可用的好东西。以下是一些常用的选项:
-p, --progress
-t, --timer
-e, --eta
-r, --rate
-a, --average-rate
-b, --bytes