FUSE 扩展

Seafile 系统中的文件是被拆分成块存储的,这意味着服务器上存储的不是完整文件,而是块。这种设计便于实现高效的数据去重。
然而,有时管理员希望直接在服务器上访问文件,可以使用 seaf-fuse 实现。
seaf-fuse 是 FUSE 虚拟文件系统的实现,它将 Seafile 管理的所有文件挂载到一个目录(称为“挂载点”),从而可以像访问普通文件夹一样访问 Seafile 服务器上的所有文件。
注意事项:加密文件夹无法被 seaf-fuse 访问。
当前实现是只读的(read-only),无法通过挂载的文件夹修改文件。
在 Debian/CentOS 系统上,需要加入 "fuse" 用户组才有权限挂载 FUSE 文件夹。
在 Docker 部署中使用 seaf-fuse
假设我们希望挂载到主机的 /opt/seafile-fuse。
修改 seafile-server.yml
添加以下内容:
seafile:
  ...
  volumes:
    ...
    -type:bind
      source:/opt/seafile-fuse
      target:/seafile-fuse
      bind:
        propagation:rshared
  privileged:true
  cap_add:
    -SYS_ADMIN
在容器中启动 seaf-fuse
启动 Seafile 服务器并进入容器:
dockercomposeup-d
dockerexec-itseafilebash
进入 Seafile 服务器目录并启动 seaf-fuse:
cd/opt/seafile/seafile-server-latest/
./seaf-fuse.shstart/seafile-fuse
在二进制包部署中使用 seaf-fuse
假设我们希望挂载到 /data/seafile-fuse。
创建挂载点目录
mkdir-p/data/seafile-fuse
启动 seaf-fuse
启动 Seafile 服务器:
./seafile.shstart
然后启动 seaf-fuse:
./seaf-fuse.shstart/data/seafile-fuse
seaf-fuse 支持 FUSE 标准挂载选项,例如可以指定挂载目录的所有者:
./seaf-fuse.shstart-ouid=<uid>/data/seafile-fuse
默认情况下,FUSE 会启用块缓存功能以缓存块对象,从而减少对后端存储的访问,但会占用本地磁盘空间。 从 Seafile-pro-10.0.0 开始,可以通过以下选项禁用块缓存:
./seaf-fuse.shstart--disable-block-cache/data/seafile-fuse
完整支持的挂载选项请参考 man fuse。
停止 seaf-fuse
./seaf-fuse.shstop
挂载目录内容
顶层目录
列出 /data/seafile-fuse 的内容:
$ls-lhp/data/seafile-fuse

drwxr-xr-x2rootroot4.0KJan12015abc@abc.com/
drwxr-xr-x2rootroot4.0KJan42015foo@foo.com/
drwxr-xr-x2rootroot4.0KJan12015plus@plus.com/
drwxr-xr-x2rootroot4.0KJan12015sharp@sharp.com/
drwxr-xr-x2rootroot4.0KJan32015test@test.com/
顶层目录包含多个子文件夹,每个子文件夹对应一个用户。
用户目录
列出用户 abc@abc.com 的目录:
$ls-lhp/data/seafile-fuse/abc@abc.com

drwxr-xr-x2rootroot924Jan119705403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/
drwxr-xr-x2rootroot1.6KJan11970a09ab9fc-7bd0-49f1-929d-6abeb8491397_MyNotes/
可以看到,每个用户目录下有若干子文件夹,每个子文件夹代表该用户的一个库,命名格式为 {library_id}-{library-name}。
库目录
列出某个库的内容:
$ls-lhp/data/seafile-fuse/abc@abc.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/

-rw-r--r--1rootroot501KJan12015image.png
-rw-r--r--1rootroot501KJan12015sample.jpng
遇到 “Permission denied” 错误
如果运行 ./seaf-fuse.sh start 时提示 “Permission denied”,很可能是你不在 "fuse" 用户组。
解决方法:
sudousermod-a-Gfuse<your-user-name>
注销并重新登录 shell,然后再次运行:
./seaf-fuse.shstart<挂载路径>