2012-07-06 79 views
3

我试图tar一些文件并通过php passthru命令将它们传递给用户。删除由tar生成的尾部空字符

问题是,即使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上运行,无法在我的工作站上重现,因为这是一个嵌入式项目升级不是我正在寻找的(尚)的答案。

编辑:我希望有一个解决方案,确实需要写入文件系统..也许一种方法来阻止它从填充或管道通过sed或东西去除填充。

+0

您可以上传的'焦油CZF结果 - 测试> tar.redirect'和'焦油CZF tar.file测试'某处?另外,你在运行GNU tar 1.15.1的体系结构是什么? – phihag 2012-07-06 11:09:22

+3

*“对于tar和cpio格式,如果输出写入标准输出或字符或块设备(如磁带驱动器),则输出的最后一个块被填充为全块大小。如果正在将输出写入一个普通的文件,最后一个块不会被填充。“*('man tar') - 似乎答案是写入一个文件... :) – deceze 2012-07-06 11:16:06

+0

Yupp,@deceze。我也看到了。希望有一个解决方案,不接触文件系统..也许一种方法来阻止它从填充或管道通过sed或东西去除填充.. – barsju 2012-07-06 11:43:44

回答

0

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