压缩文件夹 tgz ,编码为 base64 并即时发送

压缩文件夹 tgz ,编码为 base64 并即时发送

我正在尝试压缩文件夹、编码为 base64 并通过飞行发送它,但出现错误

tar:懦弱地拒绝创建空档案

tar -czf Pictures | base64 | nc remote_host 443  

nc -lvp 443 | base64 -d > secret.tgz # remote host

我怎样才能压缩我的文件夹并正确地通过飞行发送它?

答案1

该命令给出“空”存档错误,因为您没有将任何内容传递给 tar 进行压缩。

使用时,-f后面的内容应该是要创建的存档的名称,然后是要压缩的存档(在您的情况下,是一个目录)。

要将其发送到标准输出以将其输入管道,您应该使用虚拟选项/快捷方式“-”

如:

tar -czf - Pictures | base64 | nc remote_host 443 

正如 @muru 正确指出的那样,默认情况下 tar 输出到 stdout,因此如果去掉“-f”,则还有另一种选择。

tar -cz Pictures | base64 | nc remote_host 443

nc理论上,在不将二进制文件发送到控制台的情况下,它也能够很好地处理它们,您无需进行额外的 Base64 编码和解码步骤。我确实在没有使用 Base64 的情况下这样做了数千次。

我还更喜欢使用ncwithout -v 在远程端编写脚本,如下所示:

tar -czf - Pictures | nc remote_host 443  
nc -lp 443 > secret.tgz # remote host

相关内容