Tcp

使用 netcat 連接到伺服器並通過一個請求/連接接收多個文件

  • June 27, 2018

假設我有一個 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

但我不明白如何單獨寫出每個文件。

在伺服器上,執行:

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

引用自:https://unix.stackexchange.com/questions/443632