Skip to content

[Linux] 複製資料時顯示進度條

在 Linux 系統中我們經常使用終端機來複製資料,但若是沒有一個進度條 (progress bar) 顯示在 畫面上時,在複製體積比較大的檔案時難免會擔心系統是不是卡住了、或是懷疑系統真的還有在複製檔案嗎?所以之前我經常使用 screen 之類的指令來輔助(screen 是一個可以將終端機關掉,程式還繼續在伺服器或主機上執行的指令,可以參考我之前寫的 在 Ubuntu 底下使用 screen 將程式放在背景執行

到了後來,我個人傾向於讓複製檔案的動作顯示進度條,藉此掌握檔案複製的進度。

本文記錄了三種方法:

  • gcp
  • rsync
  • pv(只能複製單一檔案)

使用 gcp 指令

若是電腦中沒有裝過 gcp 指令,可以使用以下指令安裝:

sudo apt install gcp


裝好之後,我們就可以使用 gcp 來取代 cp 的指令:

gcp -r [src] [dst]


Output:

這樣一來,就不用擔心複製的程式是不是跑大檔案時在中途死掉了。


使用 rsync 指令

如果沒有這個指令,同樣要進行安裝:

sudo apt install rsync


接著使用以下指令可以複製檔案(rsync 在 3.0.9 版本以前則需要將參數改為 --info=progress2 ):

rsync --progress [src] [dst] 



使用 pv 指令

pv 指令只能複製單一檔案,不能一口氣複製一個資料夾。

同樣需要先進行安裝。

sudo apt install pv


使用方法則是:

pv [src] > [dst]

後記

在 Linux 當中,複製檔案之所以沒有顯示進度條,並不是因為開發這個功能的人忘記了、或者是認為這個功能沒有必要 —— 真要說的話,是因為要一邊複製檔案、一邊隨時監控資料複製進度,會有損檔案複製的效率,對很多人來說這是相當難以忍受的。

因為真要說的話,顯示進度條其實還是有很多種方法可以做到,像是我所紀錄的這篇文章,這不是成功顯示了嗎?我覺得 Linux 開發的指令是真的相當相當地用心,而且,你也可以隨著自己喜歡的模式去客製化。

這就是 Linux 系統有趣的地方。


References

Tags:

Leave a Reply