Tcp
使用 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
但我不明白如何單獨寫出每個文件。
在伺服器上,執行:
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