删除由 tar 产生的尾随空字符

bar*_*sju 5 linux tar

我正在尝试 tar 一些文件并通过 php passthru 命令将它们传递给用户。

问题是,即使 tar 文件应该只有 2k,但它始终是 10240。有趣的数字对吧?

所以我把它分解为:

-sh-4.1# tar czf -  test | wc -c
10240
Run Code Online (Sandbox Code Playgroud)

对比:

-sh-4.1# tar czf test.tar.gz test && wc -c test.tar.gz
2052 test.tar.gz
Run Code Online (Sandbox Code Playgroud)

所以 tar 显然是用 NULL 填充文件。

那么我怎样才能让 tar 停止这样做。或者,我如何去除尾随的 NULL。

我正在运行tar (GNU tar) 1.15.1并且无法在我的工作站上重现tar (GNU tar) 1.23,因为这是一个嵌入式项目升级不是我正在寻找的答案(还)。

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

Giu*_*ano 1

您可以通过使用较小的块大小来减弱填充效果,尝试将 -b1 传递给 tar