我正在尝试压缩文件夹、编码为 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 的情况下这样做了数千次。
我还更喜欢使用nc
without -v 在远程端编写脚本,如下所示:
tar -czf - Pictures | nc remote_host 443
nc -lp 443 > secret.tgz # remote host