Last Updated on 2021-12-06 by Clay
在 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 系統有趣的地方。