LINUX.ORG.RU

Консольный менеджер архивов


0

1

Периодически нахлынывает желание написать (либо найти, это чаще, т.к. писать дольше :)) менеджер архивов в духе утилит lftp/ftp и прочих. Например чтобы посмотреть содержимое архива, перед распаковкой или выдернуть один файл из него, но при этом просматривать, передвигаться и пр. внутри архива стандартными командами cd, ls и пр. Сейчас использую для этих целей использую mc, но таковое решение мне менее удобно (к тому же mc я только для этого в 95% случаев и использую).

Есть ли что-то готовое на эту тему или можно смело начинать писать для себя эту программу и случайно не наткнуться на готовое решение в ходе написания?)


А что в mc не устраивает?
ЕМНИП псевдо-графическая оболочка rar для DOS была очень похожа на Volcov Commander

Kroz ★★★★★ ()

Форкни mc, выбрось оттуда всё лишнее, оставь только работу с архивами.

imul ★★★★★ ()

avfs, возможно. Лично я предпочитаю atool, но это не совсем то.

Homura_Akemi ()

Инкременирую avfs, но оно много чего просто не умеет. В неё бы поддержку libarchive запихнуть - было бы хорошо.

AITap ★★★★★ ()

Периодически нахлынывает желание написать

Надо бороться с такими искушениями, это всё от лукавого.
Лучше вон пойдите Россию с колен подымите, если заняться нечем.

У всех архиваторов есть опции просмотра содержимого без распаковки, и есть возможность извлечения отдельных файлов

zolden ★★★★★ ()
Ответ на: комментарий от zolden

У всех архиваторов есть опции просмотра содержимого без распаковки, и есть возможность извлечения отдельных файлов

Тут скорее вопрос просмотра и удобства навигации. «Путешествую» я по файловой системе при помощи cd, ls и пр. Хотелось бы так же и по архивам. В идеале конечно бы:

cd file.tar.bz2
ls
...

Но можно и просто:

prog file.tar.bz2
ls
...
exit

Longer ()
Ответ на: комментарий от Longer

prog и cd тут лишние сущности.
Если трудно запомнить tar -tvvf file то сделайте алиас/функцию поудобнее

zolden ★★★★★ ()

Сдается мне, что «vfs» mc работает через Ж. сначала все распаковывает в /tmp, из-за чего постоянно дохнет на больших архивах.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от zolden

советую попробовать так сделать на большом архиве и посмотреть результат + вытянуть один файл из такого архива.

Longer ()
Ответ на: комментарий от Longer

То есть всё дело быстродействии? И есть предчувствие, что дополнительная прослойка, в виде некоего ФМ тут поможет?

zolden ★★★★★ ()
Ответ на: комментарий от zolden

От части и в быстродействии, от части в более удобном для меня интерфейсе. Иногда мне нужно просто заглянуть и быстро посмотреть архив распоковка лишнее ожидание, а мне может и вовсе не понадобится его распоковывать (лишнее действие), а просто глянуть, что внутри.

Longer ()
Ответ на: комментарий от Longer

Иногда мне нужно просто заглянуть и быстро посмотреть архив распоковка лишнее ожидание

Вы не поверите, но ваш любимый MC полностью распаковывает архивы для просмотра. По крайней мере, tar.

Homura_Akemi ()
Ответ на: комментарий от Longer

Давайте оба удалимся на совещание и чтение описания формата tar и может даже поразмышляем об историческом предназначении формата...
У меня есть такое предчувствие, что когда мы вернемся, многие вопросы отпадут, либо будут переформулированы

zolden ★★★★★ ()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от Homura_Akemi

Вы не поверите, но ваш любимый MC полностью распаковывает архивы для просмотра. По крайней мере, tar.

Это я упомянул выше ответом на подозрение Eddy_Em о его работе.

Longer ()
Ответ на: комментарий от zolden

К слову, tar это лишь часть задачи, хоть и значительная, не надо забывать про rar, zip и пр.

Longer ()
Ответ на: комментарий от Longer

Так ведь то tar.gz. Понятное дело, что для доступа к архиву надо его распаковать сначала. А вот ежели жать по-отдельности каждый файлик, а потом их вместе затарить — тогда нормально будет.

Правда, у mc и со структурированными архивами (вроде 7z) та же проблема. Не понимаю, почему.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от zolden

Подозреваю имелось в виду то, что header идёт перед каждым файлом и не прочитав весь файл мы не узнаем, что внутри.

Тогда вопрос быстродействия можно переформулировать так - какая программа будет работать быстрее:

1) которая пишет на hdd

2) не пишет

Longer ()
Ответ на: комментарий от Eddy_Em

Первая задача удобный просмотр без ncurses и прочих. Её можно решить парсингом того же tar -tf грубо говоря.

Манипуляция с данными отдельная задача, которая если честно мне пока менее важна, но хотелось бы и её тоже решить, переходом в «vfs режим» или каким-либо другим методом. Из больших архивов если нужно вытянуть один файл из нескольких директорий конечно не быстро выйдет, но как вариант можно предусмотреть режим, при котором при выходе из программы файлы извлекались нужные (+ команда flush) это возможно быстрее бы работало, чем какая-либо vfs, но нужно смотреть в доки/исходники их реализаций.

Отдельный вопрос добавление/удаление файлов... Но сим я ещё реже пользуюсь. Хотя кто знает, если я буду входить в архив при помощи cd или prog чего я ещё захочу...

Longer ()

Периодически нахлынывает желание написать

Подобные «желания» - нормальны в период первичного полового созревания.

anonymous ()
Ответ на: комментарий от AITap

Чего например ? В последних версиях и webdav и еще много чего, не говоря уже об архивах.

Serg5Markov ()
Ответ на: комментарий от Serg5Markov

Например, писать в некоторые архивы, в которые это можно делать (тот же 7z). Некоторые «архиваторы» avfs берёт из midnight commander и потому может делать ужасные вещи вроде копирования многогигабайтного файла из архива в /tmp, просто потому, что MC extfs так устроена. Шифрованные архивы по понятным причинам тоже не поддерживаются. Проблемы с кодировками в *.zip и *.rar тоже никуда не девались. Если нужно распаковать архив с большим количеством файлов, она находит их по одному, что сильно увеличивает время распаковки.

Но она мне нравится хотя бы потому, что её использует Worker. За неимением лучшего, да.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Некоторые «архиваторы» avfs берёт из midnight commander

Паря, всё как раз наоборот. Это в mc используется avfs какой-то древней версии. Отсюда все проблемы.

akk ★★★★ ()
Ответ на: комментарий от akk

/usr/share/doc/avfs/README.gz

The following handlers are available through Midnight Commanders
'extfs'. These were not written by me, and could contain security
holes. Nonetheless some of them are quite useful. For documentation
on these, see the files in /usr/lib/avfs/extfs.

name of handler type of operation
--------------- -----------------
#deb debian packages
#ftplist ?
#hp48 ?
#lslR directory tree listings
#mailfs ?
#patchfs browse patch files
#rpm rpm packages
#rpms List of installed rpms
#trpm Useful inside #rpms
#ucpio cpio archives
#ulha lha archives
#uzoo zoo archives



И куча скриптов в /usr/share/avfs/extfs/, включая urar и u7z.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Скрипты — дело наживное. Их может писать кто угодно. А вот сам движок extfs, через который работают эти скрипты, — из vfs. Возможно, что extfs в mc и avfs — одно форк другого, уж больно похожи.

akk ★★★★ ()
Ответ на: комментарий от akk

В avfs есть встроенные модули, которые работают хорошо (когда дело не касается паролей), а есть поддержка модулей из MC. В Debian её даже случайно сломали: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=663146

И вот как раз протокол extfs, требующий копирования файлов из виртуальных файловых систем, ужасен.

AITap ★★★★★ ()
Ответ на: комментарий от Longer

советую попробовать так сделать на большом архиве и посмотреть результат + вытянуть один файл из такого архива.

Вообще-то с tar'ом по-другому никак.

red_eyed_peguin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.