LINUX.ORG.RU

Вышел fuse-zip 0.1.0

 , , ,


0

0

Увидела свет первая версия userspace файловой системы для работы с zip-архивами.

fuse-zip позволяет монтировать архив как файловую систему и работать с ним из любой программы, без специальных модификаций, чем выгодно отличается от вещей в себе: KIO и Gnome VFS.

Согласно проведённым тестам (распаковка заархивированных исходных текстов ядра Linux), fuse-zip оказывается в 2 раза быстрее, чем kio-zip и в 656 раз быстрее, чем mc vfs.

На текущий момент добавление/удаление файлов архива не реализовано, однако обещается в следующей версии.

>>> Подробности

★★

Проверено: Dimez ()

Вот я её и написал :)

Теперь действительно можно работать с zip-архивами как с каталогами и не бояться, что софтина, которой Вы хотите открыть архивированный файл, не слинкована с kdelibs или gnome vfs.

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

> А в mc да, zip ооооочень медленный.

Я посмотрел, как оно там реализовано: там на _каждый_ извлекаемый файл unzip запускается снова. Алгоритм маляра Шлемиля в чистом виде :)

gaa ★★
() автор топика

ура, вот он виндакапец, подкрался откуда его и не ждали!

anonymous
()

работает в 2 раза быстрее чем kip-zip, и 656 раз быстрее чем mc vfs не умеет добавлять/удалять файлы в архивах. потому как попробовали. работать начинает сцуко в 656 раз медленнее чем mc vfs.

noiled

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

Re^2: Вышел fuse-zip 0.1.0

> работает в 2 раза быстрее чем kip-zip, и 656 раз быстрее чем mc vfs. не умеет добавлять/удалять файлы в архивах. потому как попробовали: работать начинает сцуко в 656 раз медленнее чем mc vfs.

Спасибо, поржал :)

Программе от роду 3 дня, я просто не успел реализовать эту фичу. Ну а релиз выдал в полном соответствии с правилом "release often, release early"

gaa ★★
() автор топика

Молодец )

Только вот такой вопрос, сейчас листай в том же krusader каталог, зайдя в архив и кликнув по файлу, он открывается в соответствующем редакторе.

fuse я юзал  из коммандной строки для ssh там, юзать также для каждого архивика будет неудбно. Как может быть реализован сценарий описанный выше? 

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

Два раза тыкай из наутилуса.

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

Re^2: Вышел fuse-zip 0.1.0

> Только вот такой вопрос, сейчас листай в том же krusader каталог, зайдя в архив и кликнув по файлу, он открывается в соответствующем редакторе.

> fuse я юзал из коммандной строки для ssh там, юзать также для каждого архивика будет неудбно. Как может быть реализован сценарий описанный выше?

Нужен файловый менеджер, обученный монтированию архивов через fuse. На данный момент, таких нет. Вернее, есть mc, к которому можно попытаться это прикрутить, но у него нет команды отмонтирования.

Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

gaa ★★
() автор топика
Ответ на: Re^2: Вышел fuse-zip 0.1.0 от gaa

Re^3: Вышел fuse-zip 0.1.0

> Вернее, есть mc, к которому можно попытаться это прикрутить, но у него нет команды отмонтирования.

Имелось в виду, прикрутить, не изменяя архитектуру самого файл-менеджера.

gaa ★★
() автор топика

>На текущий момент добавление/удаление файлов архива не реализовано

От ана, ключевая фраза.

Оказывается оно ещё не готово встать на замену ZIP-folder из Windows 2000/XP. :D

Спасибо, поржал.

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

Re^4: Вышел fuse-zip 0.1.0

> Обидно. Просто именно в таком формате 99% юзаются архивы. Или распаковываются.

Сначала надо создать фундамент(как раз то, чем я сейчас занялся), а потом уже на базе него делать программы, умеющие с ним работать.

Учитывая наметившуюся тенденцию делать мост между fuse и DE-специфичными vfs, рано или поздно переползание на fuse произойдёт.

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

Re^2: Вышел fuse-zip 0.1.0

> Оказывается оно ещё не готово встать на замену ZIP-folder из Windows 2000/XP. :D

Ну это дело времени. Не позднее начала июля реализую.

gaa ★★
() автор топика

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

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

Re^2: Вышел fuse-zip 0.1.0

> а я для своей жены написал hgfs (работа с mercurial через фузе), коммит срабатывает на системные вызовы fsync и unlink.

То есть, на каждое :w будет новая версия? Неоптимально...

> кому интересно могу выложить исходники на питоне

Выкладывай! Больше fs, хороших и разных. От себя рекомендую googlecode.

gaa ★★
() автор топика
Ответ на: Re^2: Вышел fuse-zip 0.1.0 от gaa

>Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

Насчёт наутилуса и других не знаю, но для конка достаточно написать соответствующий плагин.

anonymous
()
Ответ на: Re^2: Вышел fuse-zip 0.1.0 от gaa

>То есть, на каждое :w будет новая версия? Неоптимально...

да, именно на каждое :w и планировалось делать новую версию, об оптимальности пусть думает hg :)

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

Re^4: Вышел fuse-zip 0.1.0

> а тары можно так же монтировать?

archivemount - mount archives (tar, cpio, ...)

Author: Andre Landwehr (andrel at cybernoia de)

Homepage: http://www.cybernoia.de/software/archivemount/archivemount-0.5.3.tar.gz

Description

Gateway between FUSE and libarchive. Allows mounting of cpio, .tar.gz, .tar.bz2 archives. Reading and writing supported. Supports all formats libarchive supports. Current status: Most functions implemented but largely untested; feel free to report and/or fix bugs...

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

Re^4: Вышел fuse-zip 0.1.0

>>Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

> Насчёт наутилуса и других не знаю, но для конка достаточно написать соответствующий плагин.

Ткни в документацию, где это описано. А то я как-то даже и не в курсе, что там можно...

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

Re^4: Вышел fuse-zip 0.1.0

> да, именно на каждое :w и планировалось делать новую версию, об оптимальности пусть думает hg :)

У меня привычка сохраняться едва ли не после каждой второй написанной строчки кода. Представляю, сколько версий нагенерится :)

Хотя идея хорошая

gaa ★★
() автор топика

Хмм, у меня студеоз в рамках диплома написал опус по монтированию как через fuse, так и через модуль ядра (но оба read-only), надо ему сказать путь тоже что ли выложит.... :))

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

Re^4: Вышел fuse-zip 0.1.0

> ну, не судите строго, первый раз выкладываю , может кому и сгодиться, может мне совет кто даст дельный. http://code.google.com/p/hgfs/

Совет: в read() не стоит каждый раз переоткрывать файл. Лучше открывать в open() и закрывать в close(). Дескриптор можно передать через fuse_file_info?fuse_file_info в поле fh, только я почему-то не вижу последнего параметра у open/read/release, имеющего этот тип. Возможно, это ограничение питоновской реализации.

gaa ★★
() автор топика

зачем кому-то может понадобиться такой страшный костылище? да еще для зипа, который сжимать то почти не умеет

prizident ★★★★★
()
Ответ на: Re^4: Вышел fuse-zip 0.1.0 от gaa

>Совет: в read() не стоит каждый раз переоткрывать файл. Лучше открывать в open() и закрывать в close(). Дескриптор можно передать через fuse_file_info?fuse_file_info в поле fh, только я почему-то не вижу последнего параметра у open/read/release, имеющего этот тип. Возможно, это ограничение питоновской реализации.

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

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

> комирование файла с правами 400, сначала создается файл, потом пытаемся в него писать но получаем отказ в правах.

Копирование файла _из_ архива? Так тут вроде всё на совести того, кто копирует. Например, cp сначала копирует а потом уже устанавливает права.

gaa ★★
() автор топика
Ответ на: Re^2: Вышел fuse-zip 0.1.0 от gaa

>Нужен файловый менеджер, обученный монтированию архивов через fuse. На данный момент, таких нет. Вернее, есть mc, к которому можно >попытаться это прикрутить, но у него нет команды отмонтирования.

>Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

Эээ... а GFS в последнем Гноме разве не может fuse использовать, там как раз на это большой упор делался... т.е. эту разработку , я так мыслю, туда можно очень замечательно интегрировать...

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

>Например, cp сначала копирует а потом уже устанавливает права.

не совсем так, open("newfile", O_WRONLY|O_CREAT|O_LARGEFILE, 0100400) = 4, cp одним махом создает файл с пермишенами 400 и в режим только записи, потом спокойно пишет в него, в случае фузе мы получаем 2 системных вызова mknod с правами 400, потом write, и получаем отказ

alt0v14 ★★★
()
Ответ на: Re^2: Вышел fuse-zip 0.1.0 от gaa

>Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

У меня давно уже такая идея. Вот бы ещё его сделать портируемым под Windows и чтоб работал в консоли (SSH рулит!)...

И тогда можно будет, наконец, отказаться от FARа!

Если решишь начать - свистни, плиз, на Alex.Besogonov@gmail.com Могу помочь людьми.

anonymous
()

ришпект автору, но вот вопрос. раз уж у нас тут опенсорс, почему бы не добавить поддержку zip archivemoun'у и отправить патч?

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

volh ★★
()
Ответ на: Re^4: Вышел fuse-zip 0.1.0 от gaa

>Учитывая наметившуюся тенденцию делать мост между fuse и DE-специфичными vfs, рано или поздно переползание на fuse произойдёт.

уже. гном в федора 9 работает через fuse

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

> Эээ... а GFS в последнем Гноме разве не может fuse использовать, там как раз на это большой упор делался... т.е. эту разработку , я так мыслю, туда можно очень замечательно интегрировать...

Там, насколько я понял, интеграция немного в другую сторону: т.е. не gvfs использует fuse для получения информации, а информация из gvfs отдаётся через fuse.

gaa ★★
() автор топика

Теперь нам нужна ядерная система, похожая на autofs, но реагирующая на расширенные атрибуты (MIME-тип) и тогда-то KIO точно капец.

Одно очень плохо - ядро архитектурно (на Kernel Trap был подроный разбор полетов этого относительно фичи reiserfs) не может правильно сделать так, чтобы файл одновременно был директорией. А именно это было бы идеальным методом работы с архивами.

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

>> Вероятно, придётся ещё и свой файл-менеджер писать или править существующие для извлечения выгоды от доступа к архивам через FUSE.

> У меня давно уже такая идея. Вот бы ещё его сделать портируемым под Windows и чтоб работал в консоли (SSH рулит!)...

Под винду fuse не портирован пока что. А вот mc, кстати, портировали.

> Если решишь начать - свистни, плиз, на Alex.Besogonov@gmail.com Могу помочь людьми.

Ой, лучше уж ты меня ищи, ибо это у меня стоит в очень-очень далёких планах...

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

> не совсем так, open("newfile", O_WRONLY|O_CREAT|O_LARGEFILE, 0100400) = 4, cp одним махом создает файл с пермишенами 400 и в режим только записи, потом спокойно пишет в него, в случае фузе мы получаем 2 системных вызова mknod с правами 400, потом write, и получаем отказ

А, значит я на это просто ещё не натыкался(я пока что write() не реализовывал). Ну ладно, буду иметь в виду.

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

> Теперь нам нужна ядерная система, похожая на autofs, но реагирующая на расширенные атрибуты (MIME-тип) и тогда-то KIO точно капец.

Ну проверять mime-тип сможет и гипотетический файл-менеджер, натравливая /usr/bin/file на рассматриваемый файл и монтируя его согласно таблице соответствия из, допустим, /etc/archives. А делать это через ядро может оказаться накладно, т.к. find / будет дико тормозить систему, наткнувшись на громадный архив.

> Одно очень плохо - ядро архитектурно (на Kernel Trap был подроный разбор полетов этого относительно фичи reiserfs) не может правильно сделать так, чтобы файл одновременно был директорией. А именно это было бы идеальным методом работы с архивами.

Насколько мне известно, в avfs доступ осуществляется как file.tar.bz2/#file/in/archive. Хотя я глубоко в тамошнем коде не ковырялся.

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

> Я кстати забыл сказать, ты как время KIO мерял - внутри программы или в консоли time'ом ?

time-ом. Но учитывая, что я у своей fs время мерил так: time sh -c './fuse-zip ...; cp ...;fusermount -u ...', то они в более-менее равных условиях.

gaa ★★
() автор топика

Молодца, отличная вещь, и, ко всему прочему, ещё и полезная.. ;-)

MiracleMan ★★★★★
()

А чем автора не устроил готовый вариант

unpackfs Author: Jochen Hepp / jochen dot hepp at gmx dot de Homepage: http://www.nongnu.org/unpackfs/ Description A filesystem for transparent unpacking of archives. It shows the content of archives right beside them in the filesystem hierarchy. Supported archive types are: ace, ar, arj, bzip2, cab, compress, cpio, deb, exe-sfx-ace, exe-sfx-rar, exe-sfx-zip, gzip, lha, lzop, mac, openoffice-zip, ppmd, rar, share, tar, tnef, uudecode, zip, zoo. All existing and any new archiv type are configured in a plain text file.

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