tarball(.tgzファイル)を提供する実行中のhttpまたはtcpサーバーがあるとします。
次のようにファイルを個別に受け取る方法はありますか?
nc localhost 5000 | how can I read multiple files here and save each to disk?
詳しくは、サーバーに接続するときに一連の.tgzファイルで応答したいと思います。私の質問は、TCPサーバーの場合に各ファイルを個別に作成するにはどうすればよいですか?
私が知っている唯一の方法は、データを単一のファイルにストリーミングすることですが、複数のファイルを作成する方法はわかりません。
これは答えかもしれません:https://stackoverflow.com/a/44894223/1223975
しかし、各ファイルを個別に作成する方法を理解していません。
答え1
サーバーで、次の操作を行います。
tar c file1 file2 dir1 file3 ... | nc -l 5000
その後、クライアントは次のことを行います。
nc server 5000 | tar x
または遅いが、より安全です。
ssh server tar c file1 file2 dir1 file3 ... | tar x
たとえば、
$ ssh localhost 'cd /etc; tar c passwd nsswitch.conf' | (d=$(mktemp -d); tar xv -C "$d"; ls -l "$d"; rm -r "$d")
passwd
nsswitch.conf
total 8
-rw-r--r-- 1 muru muru 529 Feb 16 2017 nsswitch.conf
-rw-r--r-- 1 muru muru 2631 Apr 24 18:18 passwd