Помойка


Почти каждый из нас когда-либо работал в компании, где есть всеми ненавистная "файлопомойка" — шара с тысячами документов без какой-либо структуры. И наверняка у каждого был момент, когда ему нужно было что-то в этой помойке отыскать. "А Василич этот отчёт на шару кидал в прошлом месяце, глянь там" — слышали мы от коллеги, а тот самый Василич на вопрос "А в какой папке?" конечно же отвечал "А х… не помню, в общем, сам ищи". И мы погружались в многочасовой ад — бродили по папкам с документами из 90-х, фотографиями котов, договорами вперемешку с анекдотами и прочим шлаком в надежде найти заветный документ.


Наверняка многие из нас пытались навести в этой шаре порядок, "С меня хватит, сейчас возьму, разгребу всё и разложу по полочкам" — заявляли мы всем, тратили часы, дни и недели своего времени разгребая завалы. А параллельно Василиса Семёновна из бухгалтерии, или тот же Василич снова разбавляли разобранные файлы своими документами, котами, анекдотами и прочим, возвращая привычный хаос на своё место. И так продолжалось до тех пор, пока вы не сдались. И шара обратно превратилась в привычную помойку.


Как быть?


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


Когда мы находились на этапе решения данной проблемы для наших клиентов, мы в первую очередь рассмотрели имеющиеся системы для поиска и менеджмента документов, отдавая приоритет open-source решениям. Не вдаваясь в детали поиска и исследования сразу декларирую результат: быстрого, простого и удобного решения для индексации и поиска в шарах, с OCR, тегированием и подсветкой именованных сущностей просто не существовало.


Что дальше? Решение


Поэтому, видя эту проблему во многих компаниях, мы решились на создание своего продукта, конечно же open-source'ного.


В итоге у нас получился Ambar — система для поиска и структуризации документов, которая наконец соответствовала всем нашим требованиям (GitHub), а именно:


  • Мгновенный поиск по содержимому документов, в т.ч. изображений
  • Тегирование документов, в т.ч. автоматическое (например, помечать все изображения тегом image, или помечать все документы где есть IP адреса тегом ip)
  • Поддержка всех офисных форматов (в т.ч. openoffice), pdf с картинками и старых кодировок вроде CP866
  • Автоматический сбор и синхронизации документов из шар-помоек

Рассмотрим вариант решения нашей проблемы с помощью Ambar, по шагам:


  1. Устанавливаете Ambar на линукс сервере: нужен Docker и Ubuntu Server 16.04 и выше (
    инструкция по установке на английском)
  2. Настраиваете SMB или FTP краулер (инструкция на английском)

    Настройка краулера
  3. Наблюдаете за процессом индексации ваших документов на странице статистики
  4. Используете поиск с тегами и прочими плюшками

    Поиск

Итог


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


Спасибо за внимание!

Комментарии (65)


  1. Botkin
    19.10.2017 18:06
    +1

    Неплохо!
    Оно файлы к себе затягивает или просто строит индекс?
    Доступ к файлу напрямую осуществляется или проксируется?
    Что если у пользователя нет праа на какую-то папку?


    1. sochix Автор
      19.10.2017 18:12

      Неплохо!

      Спасибо!


      Оно файлы к себе затягивает или просто строит индекс?

      Ambar затягивает к себе все файлы и хранит у себя


      Доступ к файлу напрямую осуществляется или проксируется?

      Доступ к файлу через Ambar из его базы данных


      Что если у пользователя нет праа на какую-то папку?

      В настройках краулера можно указать из под какой учетки ходить. Во время поиска нет разделения файлов по правам


      1. Botkin
        19.10.2017 20:27

        Ага. Т.е. доступы не наследуются из ntfs?
        но rbac присутствует?


      1. Vinni37
        20.10.2017 10:20

        Ambar затягивает к себе все файлы и хранит у себя

        Получается если помойка на терабайт, надо еще терабайт на Ambar выдать?


        1. sochix Автор
          20.10.2017 10:21

          Да, получается так. И еще надо добавить место для поискового индекса


          1. Vinni37
            20.10.2017 10:29

            Жаль, спасибо за ответ.


            1. borisxm
              21.10.2017 13:50

              Использую дома архивариус 3000 — держит только индекс (примерно 20-30% от исходного объема). Из минусов: закрытый, не умеет OCR и под линуксом работает только под вайном.


          1. kudablin_a
            20.10.2017 17:48

            угу, например для тектосвых файлов, вроде doc, html, pdf это где-то еще столько же места, сколько сами файлы. Покрайней мере так в recoll.


  1. nikweter
    19.10.2017 18:56
    +1

    А что, делать пакеты больше не круто? Только докер, только хардкор?


    1. sochix Автор
      19.10.2017 19:00

      Вы имеете ввиду debian пакеты?


      1. nikweter
        19.10.2017 19:07
        +1

        deb, rpm — вот это все.


        1. sochix Автор
          19.10.2017 19:09

          Нам удобней разворачивать и обновлять приложение через docker, поэтому выбрали его


    1. Botkin
      19.10.2017 20:28

      Больше не круто, да. К сожалению, теперь большинство софта деплоится в виде черных ящиков


      1. nikweter
        20.10.2017 07:08

        Вот именно что к сожалению.


      1. arcman
        21.10.2017 11:35

        К счастью докер это не черный ящик — в докер файле описана вся последовательность его приготовления.


  1. oYASo
    19.10.2017 19:56

    Интересно!

    Вопрос скорее концептуальный (идеи, предложения?): как быть с отсканированными документами? Доков много, секретари сканят все пачками в одну папку, не всегда все разбирается — адищенский ад в итоге.


    1. sochix Автор
      19.10.2017 20:01
      +1

      Ну если ваши секретари уже отсканировали все документы то все просто — натравливаете на эту папку Ambar, он автоматически распознает текст со сканов и позволяет по нему искать. Вот скриншот как это выглядит: image


      1. Akr0n
        20.10.2017 08:11

        Русский не распознается?


        1. sochix Автор
          20.10.2017 10:20

          Русский распознается, также поддерживаются: Ita, Deu, Fra, Spa, Pl, Nld


          1. gmelikov
            21.10.2017 13:49

            Чем распознаётся?


            1. gmelikov
              21.10.2017 13:52

              Упс, извиняюсь, ниже уже ответили.


    1. muxa_ru
      23.10.2017 04:56

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


      Просто мы делаем программу для работы с хотфолдерами и мне интересны пользовательские кейсы в этой области.


      Если, конечно же, это не секретно.


      Заранее спасибо.


  1. skw85
    19.10.2017 20:39

    А как происходит индексация новых файлов, по крону?


    1. sochix Автор
      19.10.2017 20:40

      Да вы правы, в настройках краулера можно указать расписание запуска в крон-формате


  1. gotch
    19.10.2017 20:42

    Без учета разрешений доступа на оригинальные файлы вся эта затея бессмысленна. Прототип, не более.


    1. gotch
      20.10.2017 15:57

      Надо объяснить минусующим. Обычно на файловом сервере настроены четкие разрешения на папки различных отделов, на разные категории документов, или даже используется Dynamic Access Control.
      Очень интересная идея сделать полнотекстовый кеш всего и отдавать его же всем.
      Как наяву вижу следующие запросы: *парол*, *зарплат*директор*, и так далее.
      На дворе 2017 год. И информационная безопасность это не последний, а первый вопрос, который должен быть у разработчика приложений.

      Здорово заново изобрести Microsoft Search Server для *nix платформ, но безопасность, господа.


      1. grossws
        20.10.2017 19:24

        Иногда такие системы вполне себе живут в контурной модели безопасности, без всего развлечения с rbac. Для части применений этого вполне достаточно.


  1. aulandsdalen
    19.10.2017 21:40

    Докер-докер-докер-докер-докер. Убунту-убунту-убунту-убунту-убунту.


    А если я хочу, например, на macOS развернуть это все? Или на OpenBSD? Или на RHEL? А ничего, говорят мне авторы этого проекта, ставь убунту и разворачивай там докер, потому что это стильно-модно-молодежно.


    Нет ничего более идиотского, чем ПО, которое безальтернативно распространяется в виде докер-контейнера.


    1. Botkin
      19.10.2017 22:15

      Так-то вообще гитхаб же. Бери/собирай/контрибьють


      1. cagami
        19.10.2017 22:35

        +1 не успел откомментить
        github.com/RD17/ambar


    1. DrAleck
      19.10.2017 23:06

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


    1. Gutt
      19.10.2017 23:06

      Открою страшную тайну — докер-контейнеры можно запустить и на macOS, и на опенке, и даже (до чего дожили!) на красной шапке.


      1. x67
        20.10.2017 11:36

        Синее головное ведерко, надеюсь, не останется в стороне?)


    1. Ded_Banzai
      20.10.2017 17:48

      Так докер можно запустить практически везде. Вот то, что нет отдельного пакета — это действительно хуже.


  1. kisskin
    19.10.2017 23:06

    конечно, хорошо бы права доступа учитывать) и хорошо бы под винду, почему-то мне кажется, что проблема с файло-помойками в большей степени всё же у тех, кто в компьютерах не силён)


    1. realkludge
      22.10.2017 23:17

      Софт ставится на сервере с Linux, а у не сильных в компьютерах клиентов может быть что угодно, в т.ч. и винда.


  1. serafims
    20.10.2017 01:57

    Если файлопомойка стала помойкой — это уже не инструмент, и его надо немножко удалить нахрен.


    1. Mendel
      20.10.2017 15:26

      За удаление некоторых помоек весь отдел АСУ удалить могут. Причем физически, а не просто unmount в отделе кадров.
      Знавал я одну помойку, стихийно образовавшуюся лет двенадцать назад.
      «ШараСекретарь» называется.
      Создавалась исключительно с целью файлообмена между начальником одного органа гос.власти с его приемной ибо принтер ставить начальнику было совершенно нецелесообразно, и даже настраивать печать на принтер в приемной не хотелось по соображениям — пусть секретарь допиливает напильником за шефом перед печатью.
      (Да, я мог сказать что _Шефу_ не нужно ставить всё самое лучшее, и даже «так» посмотреть на завсклада, чтобы она перестала спорить).
      Но блин, я не ожидал что эта папочка превратиться в главную файлопомойку предприятия.
      Обнаружив что на этом компе висит больше файлов чем на штатной файлопомойке на большом толстом сервере с рейдом и т.п. я пытался бороться. Пару лет пытался. И ярлыки людям переправлял и разговоры разговаривал. Лет семь назад плюнул я на это дело и тупо переобозвал «Секретаря» в «Приемную» а файлсервер в «Секретарь».
      Я там уже лет пять не появлялся, но шара живет…


      1. SchmeL
        20.10.2017 16:06

        История примерно такая же, только не у меня. Гос. предприятие, половина ПК личных, так же купленный в складчину qnap. Принес мне как-то друг диск, который в том qnap кто-то форматнул. И ладно, своя же помойка, но начальство грозило лишить премии весь отдел, так как им пользовалось все предприятие и основные БД (ms access) были на нем же.
        Админа у них там не было, да и навряд ли кто-то в здравом уме согласился бы там работать на полную ставку.


  1. Dmitry_7
    20.10.2017 08:59

    Какой уродливый костыль, когда есть локальный яндекс-десктоп (его прекратили выпускать лет 10 назад, правда)


  1. ssss41
    20.10.2017 10:18

    идея классная, но без разграничения прав я не представляю, как ее внедрять.
    У меня 300ГБ инфы на файловом сервере + у каждого пользователя еще свой профиль, который тоже можно засунуть для поиска инфы (папку Docs + Desktop).
    Документы лежат в нужных папках по темам, но все равно их бывает хрен найдешь.
    Осталось придумать как подтягивать разграничение по правам доступа и будет готовое решение.


  1. amarao
    20.10.2017 12:44

    Отличный пример применения докера. Просто образцово-показательный. После того, как ломается хотя бы одна из зависимостей, пересобрать золотой образ становится просто невозможно. Я бы сказал, что это гигантская куча антипаттернов системного администрирования.

    А проект хороший, да.


    1. sochix Автор
      20.10.2017 12:45

      Я вас не понял, про какой золотой образ вы говорите?


    1. GreyCat
      20.10.2017 15:03

      мы решились на создание своего продукта, конечно же open-source'ного.

      А проект хороший, да.

      Только вот он ни разу не "open source", там fair source с "Use Limitation: 1 user". Так что "хороший" при наличии массы разумных open source альтернатив — по-моему, преувеличение.


      1. amarao
        20.10.2017 17:32
        +1

        Ого. И они используют gpl'ные компоненты во всю без учёта лицензий? Сурово.


        1. GreyCat
          20.10.2017 17:36

          Я не уверен насчет gpl'ных, но там все как-то весьма сурово, да. Как минимум, у них в лицензировании должен быть отдельный (и большой, по идее, учитывая Docker) файлик с кучей всяких лицензий хотя бы на всякое такое. Впрочем, конкретно проект ambar-crawler у них вообще без явно указанной лицензии.


      1. port443
        22.10.2017 23:17

        Одно юр.лицо — один юзер же. Всё нормально :)


  1. guyfawkes
    20.10.2017 14:18

    А с помощью чего реализовано OCR?


    1. sochix Автор
      20.10.2017 14:31

      Тщательно настроенный tesseract


      1. guyfawkes
        20.10.2017 14:51

        А будут ли выложены исходники того же pipeline?


        1. sochix Автор
          20.10.2017 17:50

          Можем вам лично предоставить, только расскажите что вы с кодом делать хотите.


          1. guyfawkes
            20.10.2017 18:17

            Я поизучать исходники хотел :) Ведь вы описали свое решение как опенсорсное, а самая мякотка (апи и пайплайн) доступны только в виде докер-имейджей.


            1. Mendel
              22.10.2017 13:04

              Ну так и лицензия не свободная. Опенсорс тут чисто в качестве рекламного хода, чтобы завлекать людей на свое фримиум решение. Ничего личного, просто бизнес.


  1. badhop
    20.10.2017 14:47

    Здорово! Google в свое время такие appliance продавал, но они на себе только индекс хранили и умели обходить в том числе пользовательские компьютеры, а тут все таки нужно много места, чтобы копию всех данных хранить.


    1. equand
      20.10.2017 15:22

      Да, проблема появляется, когда захочешь это на NAS поставить. Идея хороша, но реализация хромает (как с сисадминской стороны — докерпомойка, так и с программной — хранение всех файлов в кастомной бд дубликатом)


      1. equand
        20.10.2017 15:36

        Добавлю для создателей:
        Крутое решение, только если бы был index only вариант обе эти проблемы были бы решены по большей части. Еще не помешал бы smb вариант, не хотелось бы всем давать админский доступ в малом/среднем бизнесе. А поисковик по документам мастхев.


        1. sochix Автор
          20.10.2017 17:51

          Не понял про smb вариант, объясните пожалуйста


          1. equand
            20.10.2017 20:02

            small medium business.


  1. SchmeL
    20.10.2017 16:13

    В owncloud\nextcloud можно подключить общую шару. Поиск по именам только есть. Обычно этого хватает, шара остается на месте, файлы не синхронизируются.


  1. grossws
    20.10.2017 19:31
    +2

    Интересно, а вы контрибьютите в проекты, которые используете? Как-то учитываете лицензии проектов, на которые опираетесь?


    Например, я не вижу файла с перечислением лицензий зависимостей от слова совсем. Как минимум, часть зависимостей у вас под Apache License v2, но никакого указания этого я не вижу.


    Ну и хвалиться тем, что у вас "Поддержка всех офисных форматов (в т.ч. openoffice), pdf с картинками и старых кодировок вроде CP866" довольно глупо, это есть у всех кто использует Apache Tika. Собственно, поддержку cp866/ibm866 я добавлял когда-то ради лексиконовских файлов.


    1. Mendel
      22.10.2017 13:19

      Это коммерческий продукт, с несвободной лицензией дающий лишь ограниченный доступ (фактически фримиум), в котором «открытый код» лишь маркетинговый ход.
      Формально они правы, свободная лицензия и открытый код хоть и коррелируют, но не синонимы. Но в целом это некрасиво конечно.
      А нарушение чужих лицензий? Ну бывает. Но кто же будет судиться?


  1. reff
    21.10.2017 22:13

    Мгновенно искать по именам файлов умеет everything (voidtools.com). Строит индекс, к себе ничего не копирует, умеет прикидываться http- и ftp-сервером.


    1. VJean
      22.10.2017 04:14

      Он хорош для локального поиска и, увы, windows only. Сканирование и переиндексация сетевой шары на несколько Тб может занять кучу времени.


      1. reff
        22.10.2017 12:43

        Умеет индексировать сетевые диски. Обработка нескольких терабайт не может не занимать кучу времени, чудес не бывает. При использовании NTFS переиндексация осуществляется чуть ли не в реальном времени.


        1. VJean
          23.10.2017 03:34

          Я не отрицал, что не умеет сканировать шары, они добавляются в качестве обычного каталога. Но вот затык в том, что MFT и USN по сети не передаются, от того и низкие скорости. Кроме того, есть еще проблема с NTFS под линуксами: журнал не обновляется и переиндексацию приходится делать по расписанию.