如何tar一个fifo

时间:2010-12-01 17:02:54

标签: linux bash redirect tar

我想tar一个写入stdout的程序的输出和fd = 3的fifo。这是我的第一次尝试:


#!/bin/bash

#Create fd=3
exec 3> >(cat)

#Start the tar
tar -cvzf ha.tgz /dev/fd/1 /dev/fd/3

#Write data
echo stdout
echo 'fd=3'>&3

#close
exec 3>&-

它创建了ha.tgz,其内容为/ dev / fd / 1和/ dev / fd / 3。但是,当我提取文件时,它基本上会创建符号链接到/ dev / fd / 1和/ dev / fd / 3(这是破坏的)。我希望文件只是普通文件,其内容将是我在脚本中回应的内容。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

  

有办法做到这一点吗?

没有。 / dev下的条目不是真实文件,它们只是与设备驱动程序类似的文件接口。如果您想要常规文件,请使用常规文件。

答案 1 :(得分:2)

使用zip,它应该像这样工作:

zip -FI MyZipFile /dev/fd/1 /dev/fd/3

答案 2 :(得分:1)

只需将fifo内容传输到gzip和文件中。