Linux dd命令显示进度复制栏以及状态
时间:2020-01-09 10:42:12 来源:igfitidea点击:
我正在使用dd命令进行块级复制,只是发现没有内置的方式可以检查进度。
在将/dev/sda对应到/deb/sdb并在数据通过管道显示时显示进度条时,如何使用Linux或者Unix dd命令?
如何在Linux上监控dd的进度?
dd是一个免费的开源命令行工具,适用于Linux和类似Unix的操作系统。
它主要用于转换和复制文件。
作为主要设计为过滤器dd的程序通常不会提供任何进度指示。
本教程显示如何在Linux操作系统上显示进度复制栏。
Linux dd命令显示进度复制栏以及状态
您需要使用来自coreutils版本8.24或者更高版本的gnu dd命令才能使用以下选项。
使用dd命令显示进度复制栏的语法如下:
dd if=/path/to/input of=/path/to/output status=progress
让我们传递progress选项,以使用GNU dd命令查看定期的传输统计信息:
# dd if=/dev/sda of=/dev/sdb bs=1024k status=progress
无需使用sudo。
我使用sudo是因为我试图读取和克隆U盘。
您如何监视dd的进度?
这是另一个例子。
首先,使用grep命令和hwinfo命令找出您的USB设备名称:
grep -Ff <(hwinfo --disk --short) <(hwinfo --usb --short)
输出示例:
disk: /dev/sdc SanDisk Ultra
接下来,在Linux下卸载设备:
sudo umount /dev/sdc
最后,将一个iso镜像写入名为/dev/sdc的USB设备,并监视dd的进度:
sudo dd if=openSUSE-Leap-15.1-DVD-x86_64.iso of=/dev/sdc bs=4M status=progress
输出示例:
2684354560 bytes (2.7 GB, 2.5 GiB) copied, 1 s, 2.7 GB/s 967+1 records in 967+1 records out 4056940544 bytes (4.1 GB, 3.8 GiB) copied, 361.614 s, 11.2 MB/s
使用pv命令监视dd命令的进度并查看状态
另一个选择是使用pv命令,该命令允许您通过管道查看数据的进度。
安装pv完成后,执行以下命令以查看状态栏。请注意,如果标准输入不是文件,并且没有使用-s选项指定大小,则进度条无法指示传输完成的程度,因此它将左右移动以指示数据正在移动。它还将显示平均MB/s速率:
pv和dd动作
您可以创建一个进度条并使用对话框命令显示如下:
(pv -n /dev/sda | dd of=/dev/sdb bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0
示例:仅从coreutils版本8.24或者更高版本使用gnu dd命令
这是我的Mac OS X/MacOS的另一个示例:
$ sudo gdd if=ZeroShell-3.6.0-USB.img of=/dev/disk5 bs=1024k status=progress
您如何在Linux上监控dd的进度?
如果您使用的是dd的旧版本或者无法安装pv命令,请在loop/command时尝试以下简单的一线bash shell:
## 1. first start dd as usual ## sudo dd if=/dev/sdc of=/tmp/demo.img bs=4M ## 2. Open another terminal or tab ## ## 3. find pid of dd command ## pidof dd ### <--- say pid is 21145 ps aux | grep -w dd ## 4. Run bash/sh while loop as follows ## while sudo kill -USR1 21145 ; do sleep 10 ; done ## 5. Switch back to terminal where dd was started ##