このシナリオを想像してください。コマンドラインを使用して、あるディレクトリから別のディレクトリに、またはあるシステムから別のシステムに大きなファイルをコピーしようとしています。ご存知かもしれませんが、「cp」コマンドを使用している場合、コピータスクの表示は表示されません。空の画面が表示されます。コピープロセスが完了するまで、コピープロセスが進行中であるかどうかを確認することはできません。このような場合は、 pvを使用できます データの進行状況を監視するコマンド。 pv、 pの頭字語 ipe v iewer、コマンドを使用すると、ユーザーは次の情報を提供することにより、パイプラインを介したデータの進行状況を確認できます。
- 合計経過時間
- 完了率(プログレスバー付き)、
- 現在のスループット率
- 転送されたデータの合計
- およびETA。
この簡単なチュートリアルでは、pvコマンドを使用してUnixライクなシステムのデータの進行状況を監視する方法と場所を確認します。
ダウンロード -無料のチートシート:「Linuxコマンドラインチートシート」
Linuxにpvをインストールする
最新のLinuxディストリビューションのほとんどには、pvコマンドがプリインストールされています。まだインストールされていない場合に備えて、使用しているLinuxディストリビューションに応じて、ターミナルから次のコマンドを実行してインストールできます。
Arch Linux、Antergos、Manjaro Linuxの場合:
$ sudo pacman -S pv
RHEL、CentOS、Fedoraの場合:
$ sudo yum install pv
または、
$ sudo dnf install pv
Debian、Linux Mint、Ubuntuの場合:
$ sudo apt-get install pv
SUSEでは、openSUSE:
$ sudo zypper in pv
これで、pvをインストールしました。いくつか例を示しましょう。
「pv」コマンドを使用してパイプを介したデータの進行状況を監視する
次のコマンドの出力を見てください:
$ cp CentOS7.iso Downloads/

cpコマンド
このコマンドは、CentOS7ISOイメージをダウンロードにコピーします ローカルシステムのディレクトリ。上記の出力に見られるように、プログレスバーは表示されません。カーソルが点滅しているだけです。コピープロセスにかかる時間はわかりません。このコマンドがいつ完了するかについての兆候が見られないため、これは時々煩わしいかもしれません。ここで、pvコマンドが役立ちます。 pvコマンドは、Linuxコマンドの進行状況を表示し、Linuxコマンドがいつ完了するかを表示します。したがって、ターミナルを離れて他のタスクを実行し、タスクが完了したら戻ってくることができます。
それでは、パイプビューア(pv)でも同じことを行い、出力を確認しましょう。
$ pv CentOS7.iso > Downloads/centos.iso

'pv'コマンドを使用してパイプを介したデータの進行状況を監視する
ほら、違いがわかりますか?私が言ったように、pvコマンドは、経過時間の合計、完了率(進行状況バー付き)、現在のスループットレート、転送されたデータの合計、およびETAを表示します。
もう少し例を挙げましょう。
-Lを使用してデータ転送速度を制限できます 次の例に示すように切り替えます。
$ pv -L 2m CentOS7.iso > Downloads/centos.iso
上記のコマンドは、データ転送速度を1秒あたり2MBに制限します 。次の出力を見てください。

pvコマンドを使用してデータ転送速度を制限する
複数のファイルまたはディレクトリがある場合は、tarコマンドでpvを使用できます。 以下に示すように:
$ tar c Notebooks/ | pv | tar x -C Documents/
上記のコマンドは、ディレクトリNotebooksを圧縮し、それをDocumentsディレクトリにコピーして、最後にコンテンツを抽出します。
別の例を示します。このコマンドは、アーカイブを作成します CentOS7.isoファイルを作成し、現在の作業ディレクトリに保存します。
$ pv CentOS7.iso | zip > centos.zip

pvコマンドを使用してアーカイブファイルを作成する
ddコマンドでpvを使用することもできます 以下のようにディレクトリ間でファイルをコピーします。このコマンドは、CentOS7.isoファイルを現在のディレクトリからダウンロードディレクトリにコピーします。
$ dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso

pvコマンドとddコマンドを使用して、ディレクトリ間でファイルをコピーします
データの進行状況を表示するもう1つの便利なコマンドは、ダイアログです。 。これをpvコマンドと一緒に使用して、以下のようにデータの進行状況を表示できます。
$ tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0
出力例:

ダイアログコマンドとpvコマンドを使用して、データの進行状況を表示します
詳細については、manページを参照してください。
$ man pv
また、以前のガイドを確認して、 netcatを使用してネットワーク経由で2つのリモートシステム間で大きなファイルをすばやく転送してください 、タール 、および pv LinuxおよびUnixオペレーティングシステムのコマンド。
- LinuxおよびUnixでネットワーク経由で大きなファイルをすばやく転送する方法
更新:
「cp」および「mv」コマンドのプログレスバーは、「AdvancedCopy」という名前のパッチを使用して簡単に追加できます。 。詳しくは以下のリンクをご確認ください。
- 高度なコピー–Linuxのcpおよびmvコマンドにプログレスバーを追加