当我复制硬盘时,我经常使用 dd 命令
我有一个关于监控的问题。
要查看复制的进度,我喜欢这样做
sudo dd if=$source of=$pathToUsb bs=4M conv=fdatasync status=progress
我收到以下消息:
2969567232 octets (3,0 GB, 2,8 GiB) copiés, 22 s, 134 MB/s
如果我只想检索字节数,我该如何进行?
sudo dd if=$source of=$pathToUsb bs=4M conv=fdatasync status=progress > capture.txt 2>&1
我也尝试过
sudo dd if=$source of=$usb bs=4M conv=fdatasync 2>&1 | awk 'END {print ($0+0)}'
但它不起作用
有任何想法吗 ?
答案1
如果我理解了这个问题,你只需要打印 dd 输出的第一列。以下将 stderr 和 stdout 管道化到 stdbuf,以强制输出到 1 个字符缓冲区大小,这样管道就不会一次缓冲 4K 页。tr 将行回车符替换为换行符,以便 cut 可以一次提取行,并且 cut 选择输出中的一个字段,即来自 dd 的字节数。
dd if=/dev/zero of=/dev/null bs=1M status=progress 2>&1 | stdbuf -o1 tr '\r' '\n' | cut -d' ' -f1