netcat(nc) file transfer checksum one-liner

When you ssh to remote server and want to save 1000 lines command output to local PC, it might be faster to do it with versatile ‘netcat(nc)’ command/utility.

For a twist, I added ‘md5sum’ in the pipeline on both sending and receiving side and made them one-liners.

$ tar tvf sample.tar | tee >(nc -l -p 8003 >/dev/null) | md5sum &
[1] 3169
$ nc --recv-only localhost 8003 | tee >(md5sum) tar.list > /dev/null
4f9a60074378ca474ec2a3a028296d7b  -
4f9a60074378ca474ec2a3a028296d7b  -
[1]+  Done                    tar tvf sample.tar | tee >(nc -l -p 8003 >/dev/null) | md5sum
$ md5sum tar.list
4f9a60074378ca474ec2a3a028296d7b  tar.list

I used localhost because I’m lazy but this will work over network.

Ubuntu 18.04 netcat(nc) doesn’t have ‘–recv-only’ option.  I had to use ‘-w {seconds}’ option on both side.

That is, “nc -w 30 -l -p 8003″ on sending side and “nc -w 30 server.domain 8003″ on receiving side.


単純にファイル転送したいときとかもscpの代わりに python –m SimpleHTTPServer コマンドを使う方も多いかと思います。


好みの分かれるとこかと思いますが僕はjpg,pngなど画像ファイルと、MP4 ,mp3,PDFファイルはブラウザの中ではなくてPCのアプリケーション(viewer)で開く派です。



SimpleHTTPServerでmime typeを追加、文字コードを指定 – Qiita

上のQiitaの例は md 拡張子ですが僕が変更したいのは *.jpg,*.pngなので上記1行の引用部の代わりに下の2行を入れました。

Handler.extensions_map['.jpg'] = 'application/octet-stream'
Handler.extensions_map['.png'] = 'application/octet-stream'