Как извлечь конкатенированный архив 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
Теперь я получаю файл Чарли, который должен быть составным архивом cpio. Но cpio -id < charlie
только извлечь содержимое а /. Как я мог получить б / у?
Добавлено: Размер Чарли равен альфа плюс браво. И, например, некоторые ключевые слова показали, что Чарли, безусловно, содержит данные Браво.
1 ответ
Архивы 'alpha' и 'bravo' независимо содержат маркеры конца архива, которые сообщают cpio, что это сделано. Это полезно при чтении с ленты, поскольку архив заканчивается, но лента может продолжаться.
Так же, как при чтении с ленты, вам нужно запустить еще один запуск cpio из той же позиции; В общем, потому что вы знаете, что у вас есть только архивы cpio, но, возможно, не совсем уверены, сколько: (while cpio -id ; do :; done) < charlie
будет успешно работать до тех пор, пока не возникнут ошибки cpio ("преждевременный конец архива", когда eof достигнут).