假设我有一个正在运行的 http 或 tcp 服务器,它提供 tarball(.tgz 文件)。
有什么方法可以单独接收文件,这样我就可以做这样的事情:
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