使用 netcat 连接到服务器并通过一个请求/连接接收*多个*文件

使用 netcat 连接到服务器并通过一个请求/连接接收*多个*文件

假设我有一个正在运行的 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

相关内容