我想焦油了一些文件,并通过他们对通过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的什么从填充或管道它停止它去掉填充。
您可以通过使用更小的块大小减弱填充效果,试图通过-B1焦油
您可以最小化设置块大小的最小可能值填充 - 我的系统上,这是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 )