Linux

壓縮文件夾 tgz ,編碼為 base64 並即時發送

  • April 15, 2019

我正在嘗試壓縮文件夾,編碼為 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

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