linuxコマンド:nc

nc

  • 正しくは Netcat コマンド
  • TCP や UDP のパケットを読み書きするツール
  • 用途としては、対象ホストに対する疎通テストや、ファイル転送に用いる
  • 一般的にファイルを転送するには、scp や sftp などを使うが、暗号化コストで転送速度が落ちてしまうので、純粋に転送速度を上げたい場合はこのコマンドを使うと良い (ただし、セキュリティは犠牲になるので、その点は注意して使うこと)
  • 逆に単純な転送のみ行うため、パイプなどでさまざまな圧縮ツールなどを通すことができる
  • Ubuntu では標準で入っている
  1. サーバ (送信) 側とクライアント (受信) 側で ssh などでログインした状態にしておく
  2. 送受信
    • 送信側
      $ nc -l <ポート番号> < <送信ファイル>
    • 受信側
      $ nc <ホスト名orIPアドレス> <ポート番号> > <保存パス>
      • <ホスト名orIPアドレス>: 送信側のホスト名か、IP アドレスを指定
      • <ポート番号>: 送信側と同じポート番号を指定
      • <保存パス>: 保存するファイルはリダイレクトで保存
  3. 転送が終了すると、何も表示せずにプロンプトに戻る

lzop を使う転送

  • 計算機に負荷 (CPU 負荷) をあまりかけずに高速に圧縮するなら、lzop を使うのが最適
  • lzop のインストール
    $ sudo apt-get install lzop
  • 送受信
    • 送信側
      $ lsop -c <送信ファイル> | nc -l <ポート番号>
      • pv コマンドを使う場合
        $ pv <送信ファイル> | lzop -c | nc -l <ポート番号>
    • 受信側
      $ nc <ホスト名orIPアドレス> <ポート番号> | lsop -d > <保存パス>

pigz を使う転送

  • 計算機の CPU リソースが豊富でそれらを利用できるなら、gzip の並列版である pigz を使うのが最適
  • 送受信
    • 送信側
      $ pigz -c <送信ファイル> | nc -l <ポート番号>
      • pv コマンドを使う場合
        $ pv <送信ファイル> | pigz -c | nc -l <ポート番号>
    • 受信側
      $ nc <ホスト名orIPアドレス> <ポート番号> | pigz -d > <保存パス>
  • linuxコマンド/nc.txt
  • 最終更新: 2016/11/25 09:11
  • by mumeiyamibito