4
% 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 извлекает только содержимое a/. Как я мог получить б / у?

Добавлено: Размер Чарли равен альфа плюс браво. И, например, некоторые ключевые слова показали, что Чарли, безусловно, содержит данные Браво.

1 ответ1

3

Архивы 'alpha' и 'bravo' независимо содержат маркеры конца архива, которые сообщают cpio, что это сделано. Это полезно при чтении с ленты, поскольку архив заканчивается, но лента может продолжаться.

Так же, как при чтении с ленты, вам нужно запустить еще один запуск cpio из той же позиции; В общем, потому что вы знаете, что у вас есть только архивы cpio, но, возможно, вы не совсем уверены, сколько: (while cpio -id ; do :; done) < charlie радостью продолжит работать до тех пор, пока не произойдет ошибка cpio ("преждевременное завершение архива") когда eof достигнут).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .