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


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

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

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

Оффлайн ase66

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

Оффлайн qpdb

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

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

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

2021 Nov 02; 02:41 PM

Рекомендую ознакомиться с современной трактовкой темы „collective responsibility and the state”, а также темами сопряжёнными с этой… В современных реалиях это может оказаться полезным…

Оффлайн ase66

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6725
  • 20% Cooler
    • Просмотр профиля
Чтобы не распаковывать лишнее.
если 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 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ase66

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

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.062 секунд. Запросов: 25.