% 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 /を取得できますか?
追加:チャーリーのサイズはアルファとブラボーの合計に等しくなります。そして、egrepのいくつかのキーワードは、チャーリーが確かにブラボーのデータを含んでいることを示しました。
'alpha'および 'bravo'アーカイブには、cpioに完了したことを通知するアーカイブ終了マーカーが個別に含まれています。アーカイブは終了しますが、テープは続行される可能性があるため、これはテープから読み取るときに役立ちます。
したがって、テープから読み取るのと同じように、同じ位置から別のcpio実行を開始する必要があります。一般的に言えば、cpioアーカイブしかないことはわかっているが、いくつあるか完全にはわからないためです。(while cpio -id ; do :; done) < charlie
は、cpioエラー(eofに達したときの「アーカイブの早期終了」)まで問題なく実行を続けます。