Linux
壓縮文件夾 tgz ,編碼為 base64 並即時發送
我正在嘗試壓縮文件夾,編碼為 base64 並將其發送出去,但出現錯誤
tar:怯懦地拒絕創建一個空檔案
tar -czf Pictures | base64 | nc remote_host 443 nc -lvp 443 | base64 -d > secret.tgz # remote host
如何壓縮我的文件夾並正確發送它?
該命令給出“空”存檔錯誤,因為您沒有將任何內容傳遞給 tar 進行壓縮。
當使用
-f
後面的內容時,應該是要創建的檔案的名稱,然後才是要壓縮的檔案(在您的情況下,是一個目錄)。要將其發送到標準輸出以將其饋送到管道,您應該使用虛擬選項/快捷方式“-”
如:
tar -czf - Pictures | base64 | nc remote_host 443
正如@muru 正確指出的那樣,預設情況下 tar 輸出到標準輸出,因此如果取出“-f”,則另一種選擇。
tar -cz Pictures | base64 | nc remote_host 443
nc
在不將二進製文件發送到控制台時,理論上也能夠很好地處理二進製文件,您可以無需額外的 base64 編碼和解碼步驟。我確實在不使用 base64 的情況下做了數千次。我也更喜歡
nc
在遠端端使用不帶 -v 的腳本,如下所示:tar -czf - Pictures | nc remote_host 443 nc -lp 443 > secret.tgz # remote host