如何提取连接的 cpio 档案?

如何提取连接的 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

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

补充:charlie的大小等于alpha加上bravo,egrep一些关键字显示charlie中肯定包含bravo的数据。

答案1

“alpha”和“bravo”档案各自包含档案结束标记,告知 cpio 已完成。这在从磁带读取时很有用,因为档案将结束,但磁带可能会继续。

因此就像从磁带中读取一样,您需要从同一位置启动另一个 cpio 运行;一般来说,因为您知道您只有 cpio 档案,但可能不完全确定有多少个:(while cpio -id ; do :; done) < charlie将继续运行,直到出现 cpio 错误(当达到 eof 时“档案过早结束”)。

相关内容