在Linux上复制文件和目录时查看进度
Contents
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)
此命令将在destination-dir中复制source- 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. 其他方法
我们可能不会想到使用URL 传输工具curl 来在本地复制文件。这是可能的,但一次只能处理一个文件:
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 ,该工具将显示已经运行的基本命令的进度,例如cp、mv、dd、tar或gzip:
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