War!

14.11.2006 14:52:32

А вот поползав по «Запискам дебианщика» не смог не обратить внимание на заметку про SquashFS и сравнение SquashFS с архиваторами. Вкратце, SquashFS — сжимающая файловая система, как результат можно из какого-нибудь мега-каталога получить компактный файлик, который затем монтировать/размонтировать по мере необходимости, получая доступ к файликам.

Однако, у нас есть KDE. 🙂 Я понимаю, что не у всех, но у кого-то совершенно точно есть. Например, у меня. А KDE, как мы все знаем, обладает чудной системой KIO-slaves, благодаря которой он умеет распаковывать архивы на лету и позволяет по ним спокойно лазить, как по обычным каталогам. А еще можно ползать по другим компьютерам через SSH с помощью «fish:/», и еще много чего можно.

Факт, однако, остается в том, что Konqueror использовать в качестве файлового менеджера неудобно (лично мне, конечно), для менеджмента есть и консоль. Другое дело использовать его в качестве универсального браузера, который справляется с любыми документами (ну, например, удобно иметь один Konqueror, где в одной закладке какой-нибудь сайт, в другой открыт какой-нибудь талмуд в PDF, в третьей чья-нибудь диссертация в PS.gz и так далее).

Но здесь речь не об этом. В статье не раз приводится хороший use case для SquashFS — архивированный сайт или страничка. Вроде как за(с)квасил его и потом монтируй да смотри. Вот именно тут хочется напомнить о том, что в Konqueror есть не только поддержка просмотра кишок архивов, но и возможность архивации страниц в war-архивы (Web Archive, с расширением war), которые затем работают вообще чудесно, набираем в адресную строку путь к файлу и сходу видим содержимое странички.

Возникает естественный вопрос, что же это за war такой? И тут все просто, это ведь не .mht (MS HTML), в который, говорят, умеет одним файлом сохранять странички IE. Нет, war — это самый обычный тарбол, это может быть чистый tar, а может быть tar сжатый gzip’ом или bzip’ом. Суть, однако, в том, что это обычный тарбол, только с другим расширением. Даже для доступа к нему используется KIO-slave «tar:/».

Единственное, что отличает war от .tar{,.gz,.bz2}, так это обращение с ним Konqueror’а. А именно попытка найти в корне этого архива файлик index.html и отобразить его. Чувствуете, к чему это все? А к тому, что любой скачанный сайт/книгу/страницу можно совершенно запросто заархивировать tar’ом, но с расширением .war. И Konqueror прекрасно разберется что с этим всем делать. Требование одно — наличие index.html в корне архива.

Что меня радует особо, так это еще то, как Konqueror обращается при этом с символическими ссылками. Естественно, что в ситуациях, когда скачана только какая-то часть сайта, может получиться структура каталогов в стиле:


mega-portal.com
        images/
        smth/
                mega-content/
                mega-content/index.html

Качали, конечно же, «mega-portal.com/smth/mega-content/» и поместить mega-portal.com/smth/mega-content/index.html в корень тут просто так нельзя, нарушатся внутренние ссылки на изображения. Проблема решается тривиально — ставим символическую ссылку index.html на mega-portal.com/smth/mega-content/index.html в корне архива. Konqueror, при этом, не будет читать файл по символической ссылке, а натурально перейдет по ней в нужном направлении. То есть, опять-таки, читаться архив будет без проблем и необходимости скакать по каталогам. Усё само.

Я таким образом сейчас обрабатываю абсолютно все, что сохраняю из веба. Взять, например, те же книжки LFS/BLFS/CLFS. В HTML ими пользоваться удобнее, чем в PDF, но HTML неудобно хранить/перетаскивать, туча файлов, locate неудобно делать иногда может быть. Делаем war и радуемся жизни. Никаких проблем.

Сравнивать качество сжатия gzip/bzip2 и SquashFS не буду, это за меня уже сделали. Сравнивать удобство? Готов спорить, что распаковка war в 97% случаем займет значительно меньше времени, чем вбивание команд монтирования с последующим переходом в браузер. Архивы на 30 МБ у меня есть, открываются без проблем.

Остается только одно — красиво все это работает только в Konqueror. Но, благо это не .mht и в случае необходимости открыть архив где-то еще, его всего можно распаковать tar’ом.

Много комментариев (4) к заметке “War!”

  1. Freeman:

    Гм. Надо запостить в feature request Оперы.

  2. Freeman:

    MHT, кстати, она прекрасно поддерживает.

  3. Дневник Романа Химова » MHTML, KIO-slaves, Debian…:

    […] Давеча писал я про веб архивы .war, да не смог пройти мимо комментария по поводу поддержки формата MIME HTML (или MS HTML), .mht. Интересно мне, в общем-то, стало, а поддерживает ли Konqueror .mht. Оказалось, что поддерживает, в пакете kdeaddons оно есть, причем, что радует, в виде kio-mhtml, то есть как и хотелось. […]

  4. virens:

    Интересное продолжение: я даже не думал, что такое возможно 🙂 Конечно, через Konquerior несколько удобнее, но, как вы правильно подметили,КДЕ есть не у всех, но у кого-то точно есть :-))
    Уношу вашу статью в избранные скрапы. Большое спасибо!

Закомментировать

Вам бы, по-хорошему, зарегистрироваться сначала надобно, прежде чем комментарии оставлять. Но, в порядке исключения, можете попробовать с OpenID проскочить, вдруг.