それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

時間のかかる巨大ファイルコピーで進捗の状況を見ながら操作したい

長時間コピーがいつ終わるかわからない。

100GB を超えるストレージ・ダンプのコピーがいつ終わるか予想がつかない。

cp hdd.img /mnt/hdd.img

100GBとかいつ終わるの・・・ってなる

手軽な手段 rsync

rsync -av --progress source hdd.img /mnt/hdd.img

rsync が一番手軽な手段。ただし rsync-z をつけると圧縮転送だから注意。あとrsync は理由がわからないが遅い。

進捗を見ながらコピーしたい → dd

dd / ddrescue を使えばコピーの進捗を見ながらできるじゃん

ddrescue hdd.img /mnt/hdd.img
dd  if=hdd.img of=/mnt/hdd.img status=progress

pv で進捗をバー表示

sudo apt install pv で pv をインストールしてあげれば、コピー状況がわかるじゃん

pv hdd.img | cat - > /mnt/hdd.img

プログレスバーが出てくる

59.3GiB 0:23:16 [38.1MiB/s] [=======>                 ] 32% ETA 0:47:23

pv なら圧縮転送できる

pv はファイルを読み込んで、流すだけなのでパイプ使えるじゃん

pv hdd.img | gzip - >  /mnt/hdd.img

これなら進捗わかるじゃん。

gzip 圧縮が遅いのでpigz に変える

gzip を挟むと遅いので pigzに変えてあげる。準備はsudo apt install pigz で。

pv hdd.img | pigz - >  /mnt/hdd.img.gz

圧縮をとにかく速く

圧縮率を調整してもうちょっと時間を稼げる。

pv hdd.img | pigz --fast - >  /mnt/hdd.img.gz

圧縮と読込の両方の状況を表示

pv は cat として動作するので、書き込み速度の状況を表示できた

pv -c hdd.img | pigz --fast | pv -c >  /mnt/hdd.img.gz

ただ、2つ表示すると、区別がつかないので名前をつけてあげる

pv -cN src-read hdd.img | pigz --fast | pv -cN gz-out - >  /mnt/hdd.img.gz

-c はそれぞれの進捗を見るためのオプション
-N は名前を付けるオプション

オプションをつけたら進捗が手にとるようにわかって楽しい。

参考資料

https://wonderwall.hatenablog.com/entry/2017/08/03/072500