Перейти к содержимому
Калькуляторы

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

 

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

#!/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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

поможет ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Появился новый проект в точности под вашу задачу: 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

Изменено пользователем bookpauk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вполне себе актуально.

Спасибо, почитаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.