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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Как вынуть из архивов избранные папки не распаковывая их полностью?  (Прочитано 447 раз)

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

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Некоторые архиваторы вроде как просматривают архив перед его распаковкой. Нет ли какой возможности вынуть часть архива не копируя из него лишних файлов?
Если это возможно, то нужен скрипт на рекурсивный поиск по сотням тысяч архивов .deb, .zst или .cpio. Имена папок applications, icons, pixmaps. Копировать папки из архивов нужно с совмещением, со всем содержимым.
Возможно ли это вообще?
« Последнее редактирование: 03 Ноября 2021, 21:03:21 от ase66 »

Оффлайн qpdb

  • Активист
  • *
  • Сообщений: 262
  • xUbuntu 20.04
    • Просмотр профиля
Приветствую!

Знаю что был zstdgrep… Форматы про которые Вы пишете, так скажем, не каждый день встречается…

А так по-моему придётся поисковую систему спрашивать:„Linux  how to search inside  in archives zst  cpio”…

2021 Nov 02; 02:41 PM


Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
В последних версиях .deb могут быть новые форматы сжатия. Посмотрел я в Гоогле, но всё не то. Тут скорее нужно как-то команды find и cp связать с работой архиватора. Чтобы не распаковывать лишнее.
Если это вообще возможно.

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
Чтобы не распаковывать лишнее.
если tar.zst, tar.gz и прочее - увы, это непрерывные архивы. Для распаковки любого файла нужно распаковывать весь архив.
Насчёт .deb и .cpio - не посдкажу, надо смотреть спецификацию, но, думаю, будет аналогично.

глянуть имена в tar-архиве без распаковки
tar tvf file.tar[.gz/.xz/etc]Хотя, наверное, по времени и ресурсам будет сопоставимо с распаковкой (тест архива).

Пользователь добавил сообщение 03 Ноября 2021, 21:36:46:
Если переживаете за ресурс SSD/HDD - как вариант, создать папку в оперативной памяти и оперировать уже там. Бонусом - большая пропускная способность.
« Последнее редактирование: 03 Ноября 2021, 21:36:46 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 139
    • Просмотр профиля
Вроде есть возможность извлечь часть файлов из архива:

rpm2cpio package.rpm | cpio --extract --make-directories *bin* - извлечь из пакета файлы содержащие в своём имени bin

Но у меня rpm2cpio современные .rpm пакеты вообще не берёт.


Однако есть простой способ распаковать новые .rpm пакеты даже из Ubunty 14.04


for i in *.rpm; do 7z x -aos $i; done
find ./ -type f -name '*.rpm' -print0 | xargs -0 rm
for i in *.cpio.lzma; do zstd -d $i; done
find ./ -type f -name '*.cpio.lzma' -print0 | xargs -0 rm
for i in *.cpio; do 7z x -aos $i; done


В системе должны быть 7z и zstd (zstd в Ubunty 14.04 можно установить из ppa)
Всё что выше вроде и так содержит zstd в стандартном репозитории.
« Последнее редактирование: 04 Ноября 2021, 16:07:20 от ase66 »

 

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