如何提取连接的cpio存档?

Mag*_*oud 5 cpio

% find a/ | cpio -o | gzip -c > alpha.gz
% find b/ | cpio -o | gzip -c > bravo.gz
% cat alpha.gz beta.gz > charlie.gz
% gunzip charlie.gz
Run Code Online (Sandbox Code Playgroud)

现在我得到文件 charlie,它应该是一个串联的 cpio 档案。但cpio -id < charlie只提取a/的内容。我怎么能得到b/?

补充:charlie 的大小等于 alpha 加上 bravo。egrep 一些关键词表明charlie 肯定包含bravo 的数据。

Gab*_*abe 6

“alpha”和“bravo”存档独立地包含存档结束标记,告诉 cpio 它已完成。从磁带读取时这非常有用,因为存档将结束,但磁带可能会继续。

因此,就像从磁带上读取一样,您需要从同一位置开始另一个 cpio 运行;一般来说,因为您知道只有 cpio 存档,但可能不完全确定有多少:(while cpio -id ; do :; done) < charlie将愉快地继续运行,直到 cpio 出错(达到 eof 时“存档提前结束”)。