ncコマンドとpvコマンドを使用して2台のコンピューター間でファイルを転送する方法


Linuxの読者の皆さん、こんにちは。Linuxのヒントとコツシリーズからさらに別のすばらしい記事をお届けします。今回は、知っておく必要のあるあまり知られていない2つのLinuxユーティリティを使用します。

この記事では、nc(ネットワークユーティリティ)コマンドとpv(パイプビューア)コマンドを使用して2台のLinuxコンピュータ間でファイルを転送する方法について説明します。次に、これら2つのコマンドについて説明します。

ncはNetcatの略で、「スイスアーミーナイフ」はネットワークのデバッグと調査に使用されるネットワークツールであり、TCPまたはUDP、ポートスキャン、ファイル転送などを使用したネットワーク接続の作成にも使用されるとよく指摘されます。信頼性の高いバックエンドとして作成され、プログラムやスクリプトで特別に使用されます。これは、ほぼすべての種類のネットワーク接続を生成でき、多くの組み込み機能を備えているためです。

pv in short Pipe Viewerは、パイプラインを介して送信されるデータの進行状況を監視するためのターミナルベースのツールです。ユーザーは進行状況バーでデータの進行状況を確認し、経過時間、完了率、現在のスループットレート、転送されたデータの合計を表示できます。プロセスを完了するための推定時間。

次に、両方のコマンドを組み合わせて2台のLinuxコンピューター間でファイルを転送する方法を見てみましょう。この記事では、次のように2台のLinuxマシンを使用します。

Machine A with IP : 192.168.0.4
Machine B with IP : 192.168.0.7

データのセキュリティがより重要な状況では、常にSSH経由のrsyncまたはSSH経由のscpを使用します。

次に、ncコマンドとpvコマンドの実際の簡単な例から始めましょう。ただし、その前に、両方のユーティリティをシステムにインストールする必要があります。インストールしない場合は、提案されているように、それぞれの配布パッケージマネージャーツールを使用してインストールしてください。

# yum install netcat pv        [On RedHat based systems]
# dnf install netcat pv        [On Fedora 22+ versions]
# apt-get install netcat pv    [On Debian and its derivatives]

2台のLinuxマシン間でファイルを転送する方法は?

CentOS-7-x86_64-DVD-1503.iso という1つの大きなファイルをネットワーク経由でコンピューターAからBに送信するとします。これは、以前のネットワークユーティリティであるncを使用してこれを実現する最も簡単な方法です。 TCPネットワーク経由でファイルを送信します。pvはデータの進行状況を監視し、tarユーティリティはデータを圧縮して転送速度を向上させます。

まず、IPアドレス192.168.0.4でマシン「A」にログインし、次のコマンドを実行します。

# tar -zcf - CentOS-7-x86_64-DVD-1503.iso | pv | nc -l -p 5555 -q 5

上記のコマンドで使用されるオプションについて説明します。

  1. tar -zcf = tar is a tape archive utility used to compress/uncompress archive files and arguments -c creates a new .tar archive file, -f specify type of the archive file and -z filter archive through gzip.
  2. CentOS-7-x86_64-DVD-1503.iso = Specify the file name to send over network, it can be file or path to a directory.
  3. pv = Pipe Viewer to monitor progress of data.
  4. nc -l -p 5555 -q 5 = Networking tool used for send and receive data over tcp and arguments -l used to listen for an incoming connection, -p 555 specifies the source port to use and -q 5 waits the number of seconds and then quit.

次に、IPアドレス192.168.0.7でマシン「B」にログインし、次のコマンドを実行します。

# nc 192.168.1.4 5555 | pv | tar -zxf -

これで、ファイルがコンピューターBに転送され、操作の実行速度を確認できます。 nc(まだカバーされていませんが、すぐに説明します)およびpv(これに関する詳細な記事はすでにここでカバーしています)コマンドの優れた使用法は他にもたくさんあります。例をご存知の場合は、コメントでお知らせください。