Jump to content
Калькуляторы

Библиотека для себя поделитесь советами, как организовать

Есть у меня свободный сервер с публичным адресом.

На сервер я закатал архив Либрусека, который представляет собой ZIP-файлы, внутри которых по несколько тысяч файлов FB2.

Поначалу я хотел сделать сетевой доступ через NFS, но реальность внесла коррективы — даже на относительно быстром интернет-канале (50 Мбит/с) работать почти невозможно, при попытке открытия ZIP-файла размером в несколько ГБ комп зависает на несколько десятков секунд. MyHomeLib с подключенным архивом фактически не запускается (в этом случае MyHomeLib пытается прочитать из файлов fb2 обложки и библиографическую информацию).

Вообщем похоже на то, что доступ на файловом уровне на таких объемах не сделать.

Теперь думаю сделать OPDS, хотя технология и не сильно мне нравится.

Но тут другой вопрос.

В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ.

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

Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко.

Правда можно библиотеку перепаковать, из zip->fb2 сделать dir->fb2.zip, за ночь сделается. Но тогда при обновлении архивов Либрусека придется все перезакачивать и перепаковывать повторно.

 

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

Как бы вы сделали библиотеку? Публичной она не будет, только для личного пользования.

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

В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками.

Share this post


Link to post
Share on other sites

В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками.

если найдешь годный OPDS - поделись.

 

sopds совершенно не пригоден на базе больше 10 гигов. не важно, в zip архивах книжки или так лежат.

 

tinyOPDS во первых win во вторых ту же flibusta.fb2 сто гиговую за неделю не осилила проиндексировать.

Share this post


Link to post
Share on other sites

А зачем индексировать?

В том же архиве Либрусека в комплекте идут файлы inpx (для загрузки коллекций в MyHomeLib), там уже все проиндексировано.

Я планирую не переиндексировать несколько сотен тысяч файлов, а импортировать уже готовые данные для какого-нибудь OPDS-каталога.

Share this post


Link to post
Share on other sites

А зачем индексировать?

В том же архиве Либрусека в комплекте идут файлы inpx (для загрузки коллекций в MyHomeLib), там уже все проиндексировано.

Я планирую не переиндексировать несколько сотен тысяч файлов, а импортировать уже готовые данные для какого-нибудь OPDS-каталога

индексировать за тем, что inpx может и не быть. может быть битый. в библиотеку могут быть добавлены другие архивы. и такие вот разные причины...

Share this post


Link to post
Share on other sites

В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ.

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

Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко.

Правда можно библиотеку перепаковать, из zip->fb2 сделать dir->fb2.zip, за ночь сделается. Но тогда при обновлении архивов Либрусека придется все перезакачивать и перепаковывать повторно.

Возможно, что: монтируем в read-only при помощи fuse-zip и на получившийся каталог натравливаем что-там раздавать умеет.

 

Ну и про перепаковку и обновления - ситуация вроде бы слегка преувеличена. Как раз из за того, что они не хотят торрент обновлять (чтобы заново качать не нужно было всем), они свои обновления выкладывают как файлы изменений? Качать их, перепаковывать в отдельные fb2.zip и укладывать на свое место.

Share this post


Link to post
Share on other sites

Про fuse-zip не знал, любопытно.

Но как я понял, каждый zip монтируется отдельно, как отдельный том. А у меня этих zip за сотню.

Смонтировать их можно и скриптом, но как сервер отнесется к сотне томов?

Share this post


Link to post
Share on other sites

Про fuse-zip не знал, любопытно.

Но как я понял, каждый zip монтируется отдельно, как отдельный том. А у меня этих zip за сотню.

Смонтировать их можно и скриптом, но как сервер отнесется к сотне томов?

automount? Чтобы монтировалось только та папка и тогда, когда в нее лезут. Но как его с fuse скрещиваеется - не знаю. Оно и само по себе довольно большое шаманство. Тут смысл в том, что не всю сотню папок по отдельности прописывать отдельным mountpoint надо(это достаточно просто), а по вычислимой маске/каталогу. Когда лезешь в /mnt/dir/<номер> - и оно этот /mnt/dir/<номер> создает и соответствующий src в него монтирует.

Share this post


Link to post
Share on other sites

Нет, наверное такое не пойдет.

Видимо буду перепаковывать в fb2.zip, а для синхронизации обновлений скрипты напишу.

Share this post


Link to post
Share on other sites

В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ.

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

Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко.

В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками.

Возможно, что: монтируем в read-only при помощи fuse-zip и на получившийся каталог натравливаем что-там раздавать умеет.

На рутрекере этот вопрос обсуждался несколько лет назад. В результате бурного обсуждения пришли к выводу — вместо традиционных архиваторов формировать iso образ, который легко монтируется средствами OS. Если требуется понемногу модифицировать этот архив, то есть гибридные файловые системы, которые используют ro и rw разделы.

 

 

В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками.

Да, OPDS — это решение практически безальтернативное для библиотек.

Share this post


Link to post
Share on other sites

На рутрекере этот вопрос обсуждался несколько лет назад. В результате бурного обсуждения пришли к выводу — вместо традиционных архиваторов формировать iso образ, который легко монтируется средствами OS.

Тут человеку места жалко. А iso пожатыми, кажется, не бывают. Или я что-то пропустил? Будет, конечно, немного меньше, чем просто куча файлов. Но все равно нежатый текст.

Share this post


Link to post
Share on other sites

Тут человеку места жалко. А iso пожатыми, кажется, не бывают. Или я что-то пропустил? Будет, конечно, немного меньше, чем просто куча файлов. Но все равно нежатый текст.

epub и fb2.zip - это уже zip. Проблема не только в сжатом тексте, а в оверхеде файловой системы. А в iso этот оверхед существенно меньше..

Share this post


Link to post
Share on other sites

У меня есть ISO (правда не Либрусека, а траумовской библиотеки).

У ISO много удобств, но он очень непортабельный.

Не на всякую файловую систему его скопируешь.

Часть содержимого без монтирования не скопируешь (а иногда с монтированием бывают сложности).

И обновление большого ISO - это проблема.

Share this post


Link to post
Share on other sites

И обновление большого ISO - это проблема.

Есть еще UDF. Как ни странно, она очень широко поддерживается. возни немного побольше, но результат приблизительно такой же, как с iso получается. Только оно RW, если в правильном режиме использовать.

Share this post


Link to post
Share on other sites

Вообщем запустил пока такой скрипт:

#!/bin/bash

BASE=/data1/books
INDEX=librusec_local_fb2.inpx
BOOKS=lib.rus.ec
UNZIP=`which unzip`

die() {
       echo $@
       exit
}

[ -x "$UNZIP" ] || die "UNZIP not found"
[ -d "$BASE/$BOOKS" ] || die "Book catalog not found"

pushd $BASE/$BOOKS > /dev/null
echo "Processing new archives..."
find . -mindepth 1 -maxdepth 1 -type f -name \*.zip | while IFS= read -r FILE
do
       SIZE=`ls -sh $FILE | cut -d' ' -f1`
       FILE=`basename $FILE`
       FILE="${FILE%.zip}"
       echo -n "- archive $FILE, size $SIZE... "
       [ -d $FILE ] && rm -f -r $FILE
       mkdir $FILE
       echo -n "unpack... "
       $UNZIP -q $FILE.zip -d $FILE
       echo -n "repack... "
       find ./$FILE -type f -exec gzip '{}' \;
       echo "finish"
       rm -f $FILE.zip
done
echo "Processing done."
popd > /dev/null

 

Посмотрю к утру, как прогресс будет идти.

Распаковка выполняется относительно быстро, а вот упаковка почему-то в несколько раз дольше.

Но думаю за пару суток все перепакует.

Share this post


Link to post
Share on other sites

А ни у кого нет описания INP и INPX файлов?

Официальный форум MyHomeLib какой-то неживой, там активность еще в 2015 году затихла.

Share this post


Link to post
Share on other sites

Как вариант - на сервере графическую сессию в Xvncserver/Xrdp/NX, и в ней уже работающий обычно с локальными ZIP-файлами библиотечный софт.

Если всё равно для себя, а не на массовый доступ.

Share this post


Link to post
Share on other sites

Нет, я с технологией определился, перепаковал библиотеку в fb2.zip и теперь к ней OPDS прикручу.

Но чтобы не переиндексировать всю библиотеку, хочу из INPX загрузить.

Share this post


Link to post
Share on other sites

Но чтобы не переиндексировать всю библиотеку, хочу из INPX загрузить.

поможет ?

http://home-lib.net/page/inpx -> Разработка -> Исходники

Share this post


Link to post
Share on other sites

У ISO много удобств, но он очень непортабельный.

Часть содержимого без монтирования не скопируешь (а иногда с монтированием бывают сложности).

 

Если правильно помню, Rar умеет открывать .iso как архив и извлекать пофайлово. 7z тоже ...

Share this post


Link to post
Share on other sites

Если правильно помню, Rar умеет открывать .iso как архив и извлекать пофайлово. 7z тоже ...

Практически все архиваторы (за исключением разве что TAR) при работе с архивом вначале подготавливают список файлов.

Поэтому работать с ISO больших объемов будет мучением — при любых операциях будут подвисания по минуте.

 

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

Share this post


Link to post
Share on other sites

stas_k, да не особо, с Дельфи я не сильно знаком,

разве .cpp .h дельфийские исходники?

Share this post


Link to post
Share on other sites

Это, конечно, некропост, но... если еще актуально:

 

Появился новый проект в точности под вашу задачу: inpx-web - веб-сервер для поиска по .inpx-коллекции.
Выглядит так: https://lib.omnireader.ru

 

Разворачивается за минуту. Просто поместить приложение inpx-web в папку с .inpx-файлом и файлами библиотеки и запустить. По умолчанию сервер будет доступен по адресу http://127.0.0.1:12380

 

Подробности: https://github.com/bookpauk/inpx-web
Скачать: https://github.com/bookpauk/inpx-web/releases

 

Возможности программы:
- поиск по автору, серии, названию и пр.
- скачивание книги, копирование ссылки или открытие в читалке
- возможность указать рабочий каталог при запуске, а также расположение .inpx и файлов библиотеки
- ограничение доступа по паролю
- работа в режиме "удаленная библиотека"
- фильтр авторов и книг при создании поисковой БД для создания своей коллекции "на лету"
- подхват изменений .inpx-файла (периодическая проверка), автоматическое пересоздание поисковой БД
- мощная оптимизация, хорошая скорость поиска
- релизы под Linux и Windows

Edited by bookpauk

Share this post


Link to post
Share on other sites

On 4/5/2016 at 7:48 PM, alibek said:

Поначалу я хотел сделать сетевой доступ через NFS, но реальность внесла коррективы — даже на относительно быстром интернет-канале (50 Мбит/с) работать почти невозможно

Могу ещё добавить, внезапно SSHFS показал себя очень дружелюбным к большому пингу.

 

Нужно было смотреть с сетевой шары с пингом 70мс файл MKV в 1080p -- на CIFS, NFS постоянные микрозатыки, а по SSHFS идёт без запинки, и даже перемотка в любое место без проблем.

Share this post


Link to post
Share on other sites

https://kiwibyrd.org/2021/09/08/21h91/

Там есть и всё ништяки чтобы у себя поднять вебгуй с поиском и скачиванием.

 

ИМХО, нынче 99% литературы просто мусор: что то устарело, что то содержит полезную инфу в слишком малых концентрациях.

Ждём скайнет, он наведёт порядок :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.