在進行備份或者是複製大檔的時候,通常會想知道進度,但這通常需要指令本身有處理這塊,例如 rsync,否則一般是沒進度的。
那麼,有方法可以做到這件事情嗎?有的,就是使用 pv 這個指令。
安裝
安裝 pv 很簡單,在 Debian/Ubuntu 裡,用 apt 就可以安裝。
sudo apt install pv
在 RHEL/CentOS 裡,需要加入 EPEL 這個 repository (安裝方法:sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
)
再使用 yum 安裝即可
sudo yum install pv
使用
看了參考資料的文章以後,我個人的理解是這樣子的,第一種使用方法,是把檔案當作參數,pv 會讀取檔案,然後輸出到 stdout,pv 就是依照檔案的長度來做進度顯示。直接來看看幾個例子
例1:複製大檔
pv big-file > /tmp/big-file
例2:壓縮大檔
pv big-file | bzip2 > /tmp/big-file.bz2
例3:用 tar 來備份,這邊的 -p –timer –rate –bytes 是因應不知道檔案大小所加上去的設定,這邊也可以看到 pv 可以接收 stdin 的資料,顯示進度,然後再寫到 stdout。
tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
例4:同時看多個處理動作的狀況
pv -cN raw file | gzip | pv -cN gzip > file.gz
例5:備份跟還原整顆磁碟
pv -EE /dev/sda > disk-image.img
pv disk-image.img > /dev/sda
例6:複製目錄
rsync -avr --progress Downloads /mnt
等等,不是說好用 pv 嗎?對,你沒看錯,用 rsync,不要用 pv 去串了,這樣比較清楚。
沒有留言:
張貼留言