如何在Linux/Unix(含macOS)下查看大文件/磁盘克隆进度?
解决cat克隆磁盘时的进度查看问题
哈哈,这个场景我太熟悉了——用cat克隆大磁盘确实比dd顺手还快,但盯着黑屏等半天不知道进度的感觉真的煎熬!别担心,pv完全能搞定这个需求,而且不管是Linux还是macOS都能用,之前对pv的误解其实没必要,它就是专门用来给字节流加进度监控的工具,完美适配你的克隆场景。
一、先搞定pv的安装
- Linux系统:用包管理器直接装就行
- Debian/Ubuntu系:
sudo apt install pv - RHEL/CentOS/Rocky系:
sudo dnf install pv
- Debian/Ubuntu系:
- macOS:用Homebrew安装最方便
- 先确保装了Homebrew,然后执行
brew install pv
- 先确保装了Homebrew,然后执行
二、用pv实现带进度的磁盘克隆
有两种常用写法,效果差不多,选你习惯的就行:
写法1:直接用pv替代cat读源设备
这个方法最简洁,pv会自动显示实时速度、已传输字节、进度条和剩余时间:
sudo pv /dev/disk8 > /dev/disk9
写法2:把pv作为管道中介(兼容你原来的cat命令)
如果你还是想用cat读设备,把pv插在管道中间就行,效果一样:
sudo cat /dev/disk8 | pv > /dev/disk9
进阶:指定磁盘大小让进度更准确
如果知道源磁盘的准确大小(比如2TB),可以加-s参数,这样进度条会更精准:
sudo pv -s 2T /dev/disk8 > /dev/disk9
这里的2T可以换成具体字节数(比如2199023255552),或者用G(千兆)、M(兆)等单位,根据你的磁盘实际情况调整。
三、如果已经在用cat跑克隆了,怎么中途看进度?
要是你已经启动了cat命令,不想中断重来,也有办法查进度:
Linux系统
- 先找到cat进程的PID:
pidof cat - 用
watch命令实时查看进程的IO统计:
watch -n 1 cat /proc/<你的cat进程PID>/io
里面的rchar是已读取的字节数,wchar是已写入的字节数,对比磁盘总大小就能算出进度。
macOS系统
- 找到cat进程PID:
pgrep cat - 用
diskutil看目标磁盘的已使用空间来估算进度:
diskutil info /dev/disk9 | grep "Used Space"
注意:如果目标是raw磁盘设备,需要把显示的空间大小换算成字节数,再对比源磁盘总大小来计算进度。
四、备选方案:用dd加进度(如果你愿意试试)
虽然你觉得cat更快,但新版本的dd已经支持实时进度显示了,作为备选可以试试:
sudo dd if=/dev/disk8 of=/dev/disk9 bs=1M status=progress
不过实测下来,大文件克隆时cat还是略快一点,所以优先推荐pv的方案。
内容的提问来源于stack exchange,提问作者e-info128
相关产品推荐
相关产品推荐

