netcat을 사용하여 서버에 연결하고 하나의 요청/연결로 *여러* 파일을 수신합니다.

netcat을 사용하여 서버에 연결하고 하나의 요청/연결로 *여러* 파일을 수신합니다.

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

관련 정보