我正在维护一些旧的脚本,我发现:

tar -cvf - ${files} | gzip -n -c | openssl ...

这和一个更紧凑、没有“-n”到gzip有什么实际的区别吗?在tar命令中是否有其他方法将“-n”传递给gzip?
tar -cvzf - ${files} | openssl ...

这是在Linux 3.0.101-0.47.71-default上。我预计业绩会有轻微改善,但我的担心并不会导致下游的变化。

最佳答案

旧的tar没有内置gzip压缩。我知道,在任何情况下,通过gzip输入时,n都没有意义。当然,除了将gzip数据中的压缩时间戳设置为0之外。
老实说,我怀疑这个选择是否有用——不管我能测试什么,它的大小都是一样的。这是正确的行为-报头(如RFC 1952, Sec. 2.2中所指定的)在epoch之后的秒数中只有4b timespec-如果将其设置为0,则表示“未保存timespec”。因此,除非您不需要让gzip数据的接收者知道它何时被压缩,stdin没有任何好处。(如果您有一些基于未知时间的身份验证方案(例如,从启动设备开始的时间生成的会话ID),那么省略此类时间戳可能会带来安全好处,但坦率地说,我宁愿担心是否要堵住这些安全漏洞,也不愿将时间戳设置为零。)

关于linux - “tar cf xxxx | gzip -n”与“tar zcf xxxx”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41232995/

10-14 17:24