В 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
Для проверки можно запустить скрипт 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
Для проверки можно запустить скрипт 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 у меня уже автоматизирован:
Добавим автозапуск 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
Проверяем:
systemctl start seafile-fuse
systemctl status seafile-fuse
Теперь после загрузки сервера папка с содержимым Seafile будет монтироваться автоматически.
Источник:
https://internet-lab.ru/seafile_fuse_extension
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.