Удаление файлов из хранилища
Cerebro Support avatar
Автор: Cerebro Support
Обновлено больше недели назад

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

Ситуация осложняется тем, что на один и тот же файл в хранилище могут ссылаться несколько сообщений (в том числе от разных пользвоателей), и в таком случае удаление одной из ссылок на него не должно приводить к реальному удалению файла. С другой стороны, как уже упоминалось, Cerebro может работать с несколькими хранилищами и фактически выложенный файл может присутствовать лишь на некоторых из них.

С учетом описанных сложностей в системе Cerebro реализован следующий механизм удаления файлов:

  • на каждом файловом хранилище периодически (по расписанию) запускается Python-скрипт, ответственный за процедуру удаления;

  • при помощи запроса к БД (со специальной учетной записью) он получает список всех файлов, помеченных пользователями Cerebro для удаления;

  • в случае обнаружения файлов из списка в каталоге Cargador производится их реальное удаление.

Примечание

Для работы скрипта требуется установленный в системе Python (http://www.python.org) версии 3.х и выше. Вам надо убедиться, что директория с Python добавлена в системный путь. Проверить это, а также узнать версию Python можно, исполнив в консоли команду:

python3 --version


Параметры скрипта удаления файлов вы можете настроить при помощи конфигурационного скрипта cron_conf.py, образец которого имеется в пакете service-tools.zip. Набор параметров данного скрипта, описанный ниже, управляет процедурой удаления файлов:

DB_HOST=""
DB_PORT=45432
DB_SCHEMA="memoria"

CARGADOR_HOST=""
CARGADOR_RPC_PORT=4040

CARGADOR_DEL_PASSWORD='' # password for sweeping deleted files.
#    Must match with cargador.conf/config/catalog/del_password

Значения параметров:

  • DB_HOST — адрес сервера (IP или DNS-имя) базы данных в локальной сети или интернет (зависит от варианта установки Cerebro, см. раздел «Варианты установки»);

  • DB_PORT — сетевой порт, который использует PostgreSQL на сервере базы данных (по умолчанию 5432);

  • DB_SCHEMA — имя базы данных (по умолчанию memoria);

  • CARGADOR_HOST — адрес сервера (IP или DNS-имя) Cargador внутри локальной сети (например, localhost);

  • CARGADOR_RPC_PORT — порт для связи с Cargador по протоколу XML-RPC, используется скриптом удаления файлов (по умолчанию 4040);

  • CARGADOR_DEL_PASSWORD — пароль для удаления файлов из хранилища (см. пояснения ниже).

Параметр CARGADOR_DEL_PASSWORD должен совпадать со значением пароля в конфигурационном файле cargador.<linux|mac|win>.conf, образец которого вы распаковали из архива service-tools.zip в директорию запуска Cargador.

При стандартной установке службы Cargador в этом файле нужно задать только значение описываемого пароля - это параметр del_password в разделе config/catalog. Вы можете вписать в данный параметр произвольное значение, обязательным является лишь его совпадение со значением CARGADOR_DEL_PASSWORD из cron_conf.py.

Нашли ответ на свой вопрос?