Найти в Дзене

Seafile — расширение FUSE

Оглавление

В Seafile данные не хранятся в виде файлов а разбиты на блоки. Это позволяет эффективно использовать механизм дедупликации данных. Но иногда администратору сервера необходимо получить доступ к данным Seafile как в обычной файловой системе, для этого используется расширение seaf-fuse.

Seaf-fuse является реализацией виртуальной файловой системы FUSE. Этот скрипт монтирует всё содержимое Seafile в папку (которая называется "mount point"), так что мы получаем доступ ко всем файлам Seafile так же, как к обычной папке на сервере.

Примечания:

  • Доступ к зашифрованным папкам с помощью seaf-fuse не предоставляется.
  • Данные доступны только для чтения.
  • В debian/centos для монтирования папки FUSE пользователь должен быть в группе "fuse".

Что хочется получить:

  • Seafile настроен на Ubuntu.
  • Я хочу все данные Seafile смонтировать в директорию /opt/seafile-fuse.
  • Все службы Seafile у меня работают под пользователем sf, поэтому seaf-fuse тоже будет запускаться под этим же пользователем.
  • Монтирование директории должно происходить автоматически после перезагрузки сервера (systemd).

Ссылки

https://manual.seafile.com/extension/fuse/

Как использовать seaf-fuse

Создаём точку монтирования, назначаем владельцем пользователя, от имени которого работает seafile:

mkdir /opt/seafile-fuse
chown sf\: /opt/seafile-fuse

У меня Ubuntu, поэтому для монтирования директории пользователь должен быть участником группы fuse. Создадим группу и добавим в неё пользователя:

groupadd fuse
usermod -aG fuse sf
-2

Для проверки можно запустить скрипт seaf-fuse от имени пользователя, под которым работает seafile:

/opt/seafile-server-latest/seaf-fuse.sh start /opt/seafile-fuse

В папке /opt/seafile-fuse появится содержимое Seafile. Для остановки монтирования:

/opt/seafile-server-latest/seaf-fuse.sh stop

По умолчанию доступ к содержимому имеет пользователь root, дадим доступ всем пользователям сервера. Редактируем файл /etc/fuse.conf. Раскомментируем опцию:

user_allow_other
-3

Для проверки можно запустить скрипт seaf-fuse от имени пользователя, под которым работает seafile, с параметрами:

/opt/seafile-server-latest/seaf-fuse.sh start -o allow_other /opt/seafile-fuse

В папке /opt/seafile-fuse появится содержимое Seafile. Доступ к содержимому имеют все пользователи. Для остановки монтирования:

/opt/seafile-server-latest/seaf-fuse.sh stop

Автоматизируем запуск seaf-fuse

Запуск служб Seafile у меня уже автоматизирован:

Seafile — автозапуск

Добавим автозапуск seaf-fuse в systemd.

${seafile_dir} — измените переменную на путь к вашей директории Seafile. У меня /opt.
User и Group — измените на своего пользователя и группу.

Работаем под рутом. Создаём сервис seafile-fuse:

sudo vim /etc/systemd/system/seafile-fuse.service

Сервис будет запускаться после seafile и seahub. Содержимое:

[Unit]
Description=Seafile fuse
After=network.target seafile.service seahub.service

[Service]
Type=forking
ExecStart=${seafile_dir}/seafile-server-latest/seaf-fuse.sh start -o allow_other /opt/seafile-fuse
ExecStop=${seafile_dir}/seafile-server-latest/seaf-fuse.sh stop
LimitNOFILE=infinity
User=sf
Group=sf

[Install]
WantedBy=multi-user.target

Настраиваем автозагрузку:

systemctl daemon-reload
systemctl enable seafile-fuse
-4

Проверяем:

systemctl start seafile-fuse
systemctl status seafile-fuse
-5

Теперь после загрузки сервера папка с содержимым Seafile будет монтироваться автоматически.

Источник:
https://internet-lab.ru/seafile_fuse_extension

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.