我正在维护一些旧的脚本,我发现:
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/