删除后置由焦油产生空字符(Remove trailing null characters produ

2019-09-19 04:05发布

我想焦油了一些文件,并通过他们对通过PHP中继命令的用户。

问题是,即使tar文件只应该像2K它始终是10240搞怪数吧?

所以,我已经打破它归结为:

-sh-4.1# tar czf -  test | wc -c
10240

VS:

-sh-4.1# tar czf test.tar.gz test && wc -c test.tar.gz
2052 test.tar.gz

所以焦油显然是填充了与空文件。

所以,我怎样才能使焦油停止这样做。 可替换地,我怎样才能去掉尾随的NULL。

我上运行tar (GNU tar) 1.15.1和我的工作站是在无法重现tar (GNU tar) 1.23 ,由于这是一种嵌入项目升级,是不是我要找的(还)答案。

编辑:我希望,它需要写入文件系统的一个解决办法..也许一种方式来通过sed的什么从填充或管道它停止它去掉填充。

Answer 1:

您可以通过使用更小的块大小减弱填充效果,试图通过-B1焦油



Answer 2:

您可以最小化设置块大小的最小可能值填充 - 我的系统上,这是512。

$ cat test
a few bytes
$ tar -c test | wc -c
10240
$ tar -b 1 -c test | wc -c
2048
$ tar --record-size=512 -c test | wc -c
2048
$

这样可以使填充到最多511个字节。 通过短节目管道去除填充,改写块头,并重新创建结束归档签名的,我觉得这是你能做的最好的。 在这一点上,你可能会考虑使用脚本语言,它是天然的焦油直接执行,比如:

  • 小号MySQL数据库,PHP PharData ( httpphpnetmanualenclassphardataphp )
  • 小号的Perl如果Archive::Tar ( httpsperldocperlorgArchiveTarhtml )
  • S上的蟒tarfile ( httpsdocspythonorg2librarytarfilehtml )


文章来源: Remove trailing null characters produced by tar
标签: linux tar