0

我正在尝试在 gzip 之上制作压缩器和解压缩器。在我的压缩器中添加我的逻辑后,我将文件打包,然后压缩结果并将其保存为 *.abc

pax -w $allfiles > $paxfile  

gzip $paxfile > $zippedfile

在解压器​​中,我必须先解压缩它,因为解压缩在 *.abc 上不起作用,我将文件重命名为 file.gz,然后将结果存储在 file.pax 中。然后我尝试阅读它..我被困在这里

i=$(echo $filename | cut -d'.' -f1)
echo $i
ip=$i.gz
mv "$filename" "$ip"
op=$i.pax

gunzip -f < $ip > $op | pax -r 

请帮忙。我对做错了什么一无所知。我得到的错误是

pax: End of archive volume 1 reached
ATTENTION! pax archive volume change required.
Ready for archive volume: 1
Input archive name or "." to quit pax.
Archive name > 

pax -r 时我做错了吗?

4

2 回答 2

0

嗨,我解决了我的问题。文件名和扩展名有问题。我没有正确提取它们并传送到 *.gz。我更改并修改了这些,所以现在我解压缩正确的文件,然后通过管道读取它。

于 2013-11-03T16:53:02.127 回答
0

您可以避免创建中间文件并通过以下方式实现您想要的(我猜)。

压缩:

pax -w $allfiles | gzip - > $zippedfile

“-”代表“从标准输入(即管道)读取。

然后解压:

gunzip -c -d $ip | pax -r

“-c”代表“写入标准输出”,“-d”代表“解压缩”(可能不需要)。

于 2013-11-02T22:17:06.030 回答