linux tar -T-不能即时运行

消失了

我发现linux gnu tar有问题。我使用选项

-T -  (for file list from stdin) or
-T named_pipe_file    ,

这并非即时进行。例如,简单的交互式脚本:

while read x; do echo $x; done|\
tar cvf tar.tar -T -

tar仅在按^ D标记输入EOF时才开始归档,与使用命名管道时的情况相同:

mkfifo named_pipe
tar cvf tar.tar -T named_pipe
while read x; do echo $x; done >named_pipe

似乎tar可以缓冲。但是要多久?我必须将很多文件重新打包到TAR,但磁盘空间很小。然后,我必须即时执行此操作。我为此使用tar选项--remove-files。但是,如果没有与-T选项的交互性,那是不可能的。在计划中,代码的“ while”部分应随后将文件解压缩到文件中,并等待TAR删除以及下一个文件。谢谢你的主意:)

我的tar版本:tar(GNU tar)1.26(C)2011 FSF

有翼的潜艇

tar 能够追加到已经存在的档案中,因此您可以执行以下操作:

touch tarfile.tar
command_that_produces_file_list | xargs tar rf tarfile.tar

不幸的是,这不适用于即时压缩。幸运的是,这种tar格式非常简单,我们可以进行一些黑客攻击:

command_that_produces_file_list | {
  xargs -i sh -c 'tar c {} | head -c $(( (`stat --printf="%s" {}` + 511) / 512 * 512 + 512))';
  dd if=/dev/zero bs=512 count=2 2>/dev/null;
} | compression_utility

tar对于每个文件,输出包含一个512字节的标头,后跟足够的512字节的块来保存文件数据。然后,它附加至少2个512字节的零块。该代码的作用是捕获tar的输出并删除多余的零块,将来自多次调用的输出组合tar在一起,然后粘贴在终止的零块上。输出通过管道发送到压缩实用程序,该实用程序与tars同时运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

linux tar命令-t选项显示max-depth = 1

来自分类Dev

不能选择Android Studio 2.2.3即时运行

来自分类Dev

即时运行代码

来自分类Dev

JPanel即时运行

来自分类Dev

Linux:停止tar命令吗?

来自分类Dev

为什么我不能tar / opt并将其移动到Linux中的USB位置

来自分类Dev

LINUX:tar:您不能指定多个'-Acdtrux','-delete'或'--test-label'选项

来自分类Dev

在nodejs.org上,是要在cygwin上运行的linux tar文件

来自分类Dev

如何使用linux'tar'重命名放入tar存档的文件

来自分类Dev

Unix运行Tar命令

来自分类Dev

即时运行抛出DexIndexOverflowException

来自分类Dev

tar -t和tar -v选项之间的区别

来自分类Dev

tar 命令不使用 -t 选项列出 tar 包的内容

来自分类Dev

Linux tar-只需创建.snar文件

来自分类Dev

Linux Mint 17.1 tar备份错误

来自分类Dev

Linux无法创建用于备份的tar文件

来自分类Dev

linux tar列出-增量不可信

来自分类Dev

Android:应用经常崩溃,即时运行

来自分类Dev

使用即时运行时的VerifyError

来自分类Dev

Intellij Idea是否可以即时运行?

来自分类Dev

忽略牛顿Json的JsonProperty即时运行?

来自分类Dev

Android:应用经常崩溃,即时运行

来自分类Dev

更新applicationId时的即时运行问题

来自分类Dev

Android Studio 即时运行已禁用

来自分类Dev

在Linux上使用tar.zip时出错

来自分类Dev

在Linux / Unix上,.tar.gz与.zip是否重要?

来自分类Dev

如何在Linux中挂载加密的tar文件?

来自分类Dev

Linux tar块是否阻止对文件的写访问

来自分类Dev

如何在Mac或Linux机器上安装tar文件(jhead)