Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [Решено] Перепаковать cpio архив  (Прочитано 5144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
[Решено] Перепаковать cpio архив
« : 01 Июня 2010, 12:41:05 »
Попался мне тут в руки cpio архивчик файловой системы Slitaz для терминалки. И возникла необходимость его перепаковать, убрав из него один файлик. Но внезапно обнаружилось, что распаковать cpio я могу только поверх текущей ФС, а в выделенный каталог - не могу. Итого вопрос: как перепаковать cpio, убрав из него один файлик, но сохранив все права/пути внутри архива?
« Последнее редактирование: 01 Июня 2010, 14:09:26 от Malamut »
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Перепаковать cpio архив
« Ответ #1 : 01 Июня 2010, 13:01:11 »
В порядке бреда: а если сделать chroot куда-нить - ну и пусть затирает этот корень?

Оффлайн Scorry

  • Активист
  • *
  • Сообщений: 842
    • Просмотр профиля
Re: Перепаковать cpio архив
« Ответ #2 : 01 Июня 2010, 13:20:17 »
тут говорят:
% cpio -idv < tree.cpio

This will take the contents of the archive tree.cpio and extract it to the current directory.

update: только что проверил, всё именно так и работает, создаёт дерево с относительными путями.
« Последнее редактирование: 01 Июня 2010, 13:33:17 от Scorry »

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Перепаковать cpio архив
« Ответ #3 : 01 Июня 2010, 14:02:35 »
cpio-архивы из инитрд я пересобираю так:
mkdir new && cd new
cpio -i < ../filename
#творим нужные безобразия
rm ../filename && find . | cpio -o -H newc > ../filename
интересен ключик -H, задающий формат архива. для инитрд-образов это newc. как определить? во-первых, file ../filename - если
Цитировать
ASCII cpio archive (SVR4 with no CRC)
значит newc. если нет - читаем info cpio, пролистав несколько страниц. там их всего несколько, форматов этих
лучше на "ты"

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Перепаковать cpio архив
« Ответ #4 : 01 Июня 2010, 14:08:36 »
только что проверил - эта команда пытается распаковать всё в корень если в архиве всё запаковано от корня. Т.е. если в архиве есть файлик /bin/bash, то эта команда его и будет распаковывать в /bin/bash.
Правильно так:
sudo cpio -ivd -F ../ROOTFS --no-absolute-filenamesРаспаковывается тогда в текущую директорию из архива ./ROOTFS.

Чтобы запаковать обратно - я делал chroot в эту директорию и запаковывал

find / | cpio -o -H newc | gzip -9 > /rootfs.gz
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

 

Страница сгенерирована за 0.028 секунд. Запросов: 25.