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