在Linux中用Visual Progress进行复制

评论 0 浏览 0 2019-09-27

1.概述

在本教程中,我们将学习如何在Linux上显示复制的进度和速度。

2.单一文件

rsync是一个文件拷贝工具,可用于远程以及本地拷贝。它并不总是默认安装,但它是一个流行的工具,可以从标准资源库安装。

让我们使用rsync来复制一个文件同时显示进度。目标可以是一个文件或一个目录。

rsync --progress /path/to/source-file /path/to/destination
source-file
    264,601,600  25%  126.22MB/s    0:00:06

我们看到到目前为止复制的字节数,进度百分比,速度和剩余时间。

3.目录

让我们rsync复制一个目录,同时显示进度。

rsync -r --progress /path/to/source-dir /path/to/destination-dir
sending incremental file list
created directory /path/to/destination-dir
source-dir/
source-dir/1
    104,857,600 100%  261.70MB/s    0:00:00 (xfr#1, to-chk=8/10)
source-dir/2
    104,857,600 100%  102.46MB/s    0:00:00 (xfr#2, to-chk=7/10)
source-dir/3
    104,857,600 100%   58.11MB/s    0:00:01 (xfr#3, to-chk=6/10)
...

我们可以看到,对于递归复制,rsync将分别显示每个文件的进度信息。如果我们想看到整体的进度,怎么办?

让我们用一个不同的选项来看看整体的进展。

rsync -r --info=progress2 /path/to/source-dir /path/to/destination-dir
    423,297,024  44%  134.64MB/s    0:00:03  (xfr#4, to-chk=5/10)

这个命令将把source-dir复制到destination-dir里面。我们可以看到复制的字节数、总体完成率、总的传输率和剩余时间。xfr#4意味着到目前为止已经传输了四个文件,to-chk=5/10意味着在十个文件中,还有五个要被rsync检查,看它们是否是最新的。

我们应该注意,source-dir的末尾放一个斜线会使rsync的行为有所不同。这将复制source-dir的内容,而不是source-dir本身。

rsync -r --info=progress2 /path/to/source-dir/ /path/to/destination-dir

4.其他方法

我们可能不会想到使用curl,即URL传输工具,来复制一个文件到本地。这是有可能的,但一次只能复制一个文件。

curl -o /path/to/destination-file file:///path/to/source-file
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 17 1000M   17  173M    0     0   518M      0  0:00:01 --:--:--  0:00:01  518M

让我们使用progress,这个工具将显示已经运行的基本命令的进度,如cpmvddtargzip

progress -M
[ 2498] cp /path/to/source-file
        80.7% (806.9 MiB / 1000 MiB) 245.0 MiB/s

最后,让我们试试lsof,它也可以用来获取已经在进行中的拷贝的信息。我们可以用watch来监控变化。

watch lsof /path/to/destination
COMMAND  PID USER   FD   TYPE DEVICE  SIZE/OFF   NODE NAME
cp      2197 root    4w   REG    8,2 650133504 539646 /path/to/destination

5.总结

在这篇快速文章中,我们学习了如何在Linux上复制文件和目录时看到进度。

最后更新2022-11-28
0 个评论