alibek Posted April 5, 2016 · Report post Есть у меня свободный сервер с публичным адресом. На сервер я закатал архив Либрусека, который представляет собой ZIP-файлы, внутри которых по несколько тысяч файлов FB2. Поначалу я хотел сделать сетевой доступ через NFS, но реальность внесла коррективы — даже на относительно быстром интернет-канале (50 Мбит/с) работать почти невозможно, при попытке открытия ZIP-файла размером в несколько ГБ комп зависает на несколько десятков секунд. MyHomeLib с подключенным архивом фактически не запускается (в этом случае MyHomeLib пытается прочитать из файлов fb2 обложки и библиографическую информацию). Вообщем похоже на то, что доступ на файловом уровне на таких объемах не сделать. Теперь думаю сделать OPDS, хотя технология и не сильно мне нравится. Но тут другой вопрос. В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ. Про веб-сервер, который бы умел индексировать ZIP-архивы и отдавать из них конкретный запрашиваемый файл, я не знаю. Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко. Правда можно библиотеку перепаковать, из zip->fb2 сделать dir->fb2.zip, за ночь сделается. Но тогда при обновлении архивов Либрусека придется все перезакачивать и перепаковывать повторно. Вообщем у меня конструктивные мысли кончились, поэтому хотелось бы коллективный разум послушать. Как бы вы сделали библиотеку? Публичной она не будет, только для личного пользования. Хотелось бы удобную оболочку (веб-интерфейс), с удобным поиском, каталогом, закачкой. И обязательно с удобным использованием с мобильных устройств. В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stas_k Posted April 5, 2016 · Report post В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками. если найдешь годный OPDS - поделись. sopds совершенно не пригоден на базе больше 10 гигов. не важно, в zip архивах книжки или так лежат. tinyOPDS во первых win во вторых ту же flibusta.fb2 сто гиговую за неделю не осилила проиндексировать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post А зачем индексировать? В том же архиве Либрусека в комплекте идут файлы inpx (для загрузки коллекций в MyHomeLib), там уже все проиндексировано. Я планирую не переиндексировать несколько сотен тысяч файлов, а импортировать уже готовые данные для какого-нибудь OPDS-каталога. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stas_k Posted April 5, 2016 · Report post А зачем индексировать? В том же архиве Либрусека в комплекте идут файлы inpx (для загрузки коллекций в MyHomeLib), там уже все проиндексировано. Я планирую не переиндексировать несколько сотен тысяч файлов, а импортировать уже готовые данные для какого-нибудь OPDS-каталога индексировать за тем, что inpx может и не быть. может быть битый. в библиотеку могут быть добавлены другие архивы. и такие вот разные причины... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sergey Gilfanov Posted April 5, 2016 · Report post В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ. Про веб-сервер, который бы умел индексировать ZIP-архивы и отдавать из них конкретный запрашиваемый файл, я не знаю. Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко. Правда можно библиотеку перепаковать, из zip->fb2 сделать dir->fb2.zip, за ночь сделается. Но тогда при обновлении архивов Либрусека придется все перезакачивать и перепаковывать повторно. Возможно, что: монтируем в read-only при помощи fuse-zip и на получившийся каталог натравливаем что-там раздавать умеет. Ну и про перепаковку и обновления - ситуация вроде бы слегка преувеличена. Как раз из за того, что они не хотят торрент обновлять (чтобы заново качать не нужно было всем), они свои обновления выкладывают как файлы изменений? Качать их, перепаковывать в отдельные fb2.zip и укладывать на свое место. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post Про fuse-zip не знал, любопытно. Но как я понял, каждый zip монтируется отдельно, как отдельный том. А у меня этих zip за сотню. Смонтировать их можно и скриптом, но как сервер отнесется к сотне томов? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sergey Gilfanov Posted April 5, 2016 · Report post Про fuse-zip не знал, любопытно. Но как я понял, каждый zip монтируется отдельно, как отдельный том. А у меня этих zip за сотню. Смонтировать их можно и скриптом, но как сервер отнесется к сотне томов? automount? Чтобы монтировалось только та папка и тогда, когда в нее лезут. Но как его с fuse скрещиваеется - не знаю. Оно и само по себе довольно большое шаманство. Тут смысл в том, что не всю сотню папок по отдельности прописывать отдельным mountpoint надо(это достаточно просто), а по вычислимой маске/каталогу. Когда лезешь в /mnt/dir/<номер> - и оно этот /mnt/dir/<номер> создает и соответствующий src в него монтирует. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post Нет, наверное такое не пойдет. Видимо буду перепаковывать в fb2.zip, а для синхронизации обновлений скрипты напишу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MATPOC Posted April 5, 2016 · Report post В данный момент архив представляет собой сотню ZIP-файлов размерами в среднем 2-3 ГБ. Про веб-сервер, который бы умел индексировать ZIP-архивы и отдавать из них конкретный запрашиваемый файл, я не знаю. Следовательно ZIP-архивы нужно распаковать, но тогда библиотека вместо 170 ГБ будет занимать все 400. Место на дисках есть, но все-таких жалко. В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками. Возможно, что: монтируем в read-only при помощи fuse-zip и на получившийся каталог натравливаем что-там раздавать умеет. На рутрекере этот вопрос обсуждался несколько лет назад. В результате бурного обсуждения пришли к выводу — вместо традиционных архиваторов формировать iso образ, который легко монтируется средствами OS. Если требуется понемногу модифицировать этот архив, то есть гибридные файловые системы, которые используют ro и rw разделы. В крайнем случае сгодится OPDS — мне в нем не нравится поиск, но зато не будет проблем с мобильными устройствами и читалками. Да, OPDS — это решение практически безальтернативное для библиотек. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sergey Gilfanov Posted April 5, 2016 · Report post На рутрекере этот вопрос обсуждался несколько лет назад. В результате бурного обсуждения пришли к выводу — вместо традиционных архиваторов формировать iso образ, который легко монтируется средствами OS. Тут человеку места жалко. А iso пожатыми, кажется, не бывают. Или я что-то пропустил? Будет, конечно, немного меньше, чем просто куча файлов. Но все равно нежатый текст. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MATPOC Posted April 5, 2016 · Report post Тут человеку места жалко. А iso пожатыми, кажется, не бывают. Или я что-то пропустил? Будет, конечно, немного меньше, чем просто куча файлов. Но все равно нежатый текст. epub и fb2.zip - это уже zip. Проблема не только в сжатом тексте, а в оверхеде файловой системы. А в iso этот оверхед существенно меньше.. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post У меня есть ISO (правда не Либрусека, а траумовской библиотеки). У ISO много удобств, но он очень непортабельный. Не на всякую файловую систему его скопируешь. Часть содержимого без монтирования не скопируешь (а иногда с монтированием бывают сложности). И обновление большого ISO - это проблема. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sergey Gilfanov Posted April 5, 2016 · Report post И обновление большого ISO - это проблема. Есть еще UDF. Как ни странно, она очень широко поддерживается. возни немного побольше, но результат приблизительно такой же, как с iso получается. Только оно RW, если в правильном режиме использовать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 5, 2016 · Report post Вообщем запустил пока такой скрипт: #!/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 Посмотрю к утру, как прогресс будет идти. Распаковка выполняется относительно быстро, а вот упаковка почему-то в несколько раз дольше. Но думаю за пару суток все перепакует. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 6, 2016 · Report post А ни у кого нет описания INP и INPX файлов? Официальный форум MyHomeLib какой-то неживой, там активность еще в 2015 году затихла. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rm_ Posted April 6, 2016 · Report post Как вариант - на сервере графическую сессию в Xvncserver/Xrdp/NX, и в ней уже работающий обычно с локальными ZIP-файлами библиотечный софт. Если всё равно для себя, а не на массовый доступ. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 6, 2016 · Report post Нет, я с технологией определился, перепаковал библиотеку в fb2.zip и теперь к ней OPDS прикручу. Но чтобы не переиндексировать всю библиотеку, хочу из INPX загрузить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stas_k Posted April 6, 2016 · Report post Но чтобы не переиндексировать всю библиотеку, хочу из INPX загрузить. поможет ? http://home-lib.net/page/inpx -> Разработка -> Исходники Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dimas Posted April 6, 2016 · Report post У ISO много удобств, но он очень непортабельный. Часть содержимого без монтирования не скопируешь (а иногда с монтированием бывают сложности). Если правильно помню, Rar умеет открывать .iso как архив и извлекать пофайлово. 7z тоже ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted April 7, 2016 · Report post Если правильно помню, Rar умеет открывать .iso как архив и извлекать пофайлово. 7z тоже ... Практически все архиваторы (за исключением разве что TAR) при работе с архивом вначале подготавливают список файлов. Поэтому работать с ISO больших объемов будет мучением — при любых операциях будут подвисания по минуте. stas_k, да не особо, с Дельфи я не сильно знаком, а тут нужно весь проект хотя бы в общих чертах изучить, чтобы понять, что и где искать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stas_k Posted April 7, 2016 · Report post stas_k, да не особо, с Дельфи я не сильно знаком, разве .cpp .h дельфийские исходники? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
bookpauk Posted October 17, 2022 (edited) · Report post Это, конечно, некропост, но... если еще актуально: Появился новый проект в точности под вашу задачу: 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 October 17, 2022 by bookpauk Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 17, 2022 · Report post Вполне себе актуально. Спасибо, почитаю. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rm_ Posted October 17, 2022 · Report post On 4/5/2016 at 7:48 PM, alibek said: Поначалу я хотел сделать сетевой доступ через NFS, но реальность внесла коррективы — даже на относительно быстром интернет-канале (50 Мбит/с) работать почти невозможно Могу ещё добавить, внезапно SSHFS показал себя очень дружелюбным к большому пингу. Нужно было смотреть с сетевой шары с пингом 70мс файл MKV в 1080p -- на CIFS, NFS постоянные микрозатыки, а по SSHFS идёт без запинки, и даже перемотка в любое место без проблем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted October 17, 2022 · Report post https://kiwibyrd.org/2021/09/08/21h91/ Там есть и всё ништяки чтобы у себя поднять вебгуй с поиском и скачиванием. ИМХО, нынче 99% литературы просто мусор: что то устарело, что то содержит полезную инфу в слишком малых концентрациях. Ждём скайнет, он наведёт порядок :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...