家里那台旧笔记本装了 Linux,存着几百 G 的照片和备份;手机上想看一张,得先开电脑、开文件管理器、找到目录——最后往往放弃,直接用微信传。
装一套 Nextcloud 太重,跑个 Samba 又只能在局域网里用 Windows 访问,手机端体验约等于没有。真正想要的东西很简单:一个地址,打开就是目录,点一下就能下载,最好还能当网盘挂到系统里。
dufs 就是干这个的。单个可执行文件 3.3MB,没有配置文件也能跑,自带网页界面和 WebDAV,Apache-2.0 协议,GitHub 上 1.1 万个 Star。启动到端口可连,Windows 0.35 秒、Linux 0.03 秒。上传、下载、删除、搜索、图片预览全都在,Windows 和 Linux 都跑过一遍,下面把数字和踩到的坑一起写清楚。
dufs 是什么,和 FileBrowser 差在哪
这一类工具里最有名的是 FileBrowser,本站之前单独写过。两者的定位其实不完全一样:
- FileBrowser 是一个应用。有用户体系、分享链接、命令执行,界面做得像个网盘产品,单文件 20MB 出头。
- dufs 更像一把瑞士军刀。3.3MB,默认只读,加
--allow-upload才能写,光靠命令行参数就能配完,不落配置文件。 - WebDAV 是 dufs 的主打。它本身就是个 WebDAV 服务器,能直接映射成网络驱动器;FileBrowser 这块要弱一些。
功能上 dufs 该有的都有:目录列表、上传下载、删除重命名、在线搜索、图片和文本预览、打包下载整个文件夹、多账号权限。
代价同样明确:它没有用户注册、没有分享链接、没有外链统计。它解决的是「把目录挂出来」,不是「做一个网盘产品」。
我的测试环境
- Windows:Windows 11,解压后直接运行,没装服务、没写注册表
- Linux:CentOS Stream 9,x86_64,香港节点,走面板 Web 终端操作
- 共享目录:两边的测试目录里都放了子目录和普通文件
- 验证方式:网页打开列表 → 上传一个文件 → 读回校验内容 → 删除 → PROPFIND 验证 WebDAV → 加账号验证鉴权
部署:Windows 只要一条命令
解压 dufs-v0.47.0-x86_64-pc-windows-msvc.zip,里面只有一个 dufs.exe,3.3MB。
dufs.exe D:\共享目录 -p 5000浏览器打开 http://127.0.0.1:5000 就能看到列表。默认是只读的:能看能下,不能改。要开放上传就加参数:
dufs.exe D:\共享目录 --allow-all -p 5000实测从执行命令到端口可连 0.35 秒,没有「初始化数据库」之类的等待。
部署:Linux 一样
tar xzf dufs-v0.47.0-x86_64-unknown-linux-musl.tar.gz
chmod +x dufs
./dufs /data/share --allow-all -p 5000注意发布的是 musl 静态链接版,不依赖 glibc,扔到任何 x86_64 Linux 上都能跑,不用管系统版本。实测启动 0.03 秒,比 Windows 快一个数量级。
常用参数
它没有配置文件也能用,参数直接写在命令后面:
-p 5000:端口;-b 0.0.0.0:绑定地址--allow-upload/--allow-delete/--allow-search:按需放开--allow-all:一次全开-a "user:pass@/:rw":加账号,rw可读写,只读用r--enable-cors:给别的前端调用时打开--hidden "*.log,*.tmp":列表里藏掉某些文件
实测数据
同一套操作,两个平台分别跑,下面每个数字都是当次跑出来的:
- 主程序体积:Windows
dufs.exe3.30MB;Linux 3.97MB(musl 静态链接) - 启动到端口可连:Windows 0.348 秒;Linux 0.030 秒
- 网页列表:
GET /返回 200、text/html - 上传下载删除:
PUT201 → 读回内容逐字节一致 →DELETE204 - WebDAV:
PROPFIND Depth:1返回 207 且带multistatus,OPTIONS的DAV: 1, 2, 3两边一致 - 鉴权:不带凭据 401,带正确账号 200
- 整合包:3.69MB(双平台主程序 + 使用说明 + LICENSE)
跨平台一致性有个硬证据:Linux 那份安装包在本地和服务器上分别下载,sha256 逐字节相同(c715c44b…),说明官方发的是同一份产物,不存在平台定制差异。
解压即用也验了一遍:解到全新目录,直接跑包里的 exe,0.348 秒可连,上传返回 201、PROPFIND 返回 207。
界面长什么样

首页就是目录列表:左边文件夹和文件图标,中间是修改时间和大小,右边一排操作按钮(下载、移动到、重命名)。顶上那排图标依次是回到根目录、上传、新建文件夹、新建文件、搜索。

点进子目录,路径显示在左上角,可以点回去。列表排序由表头控制,点一下「名称」就按名字排。

图片、文本、Markdown 都能直接在浏览器里打开,不用先下载。上面这张就是共享目录里的图片直接预览的效果。

手机上不用装 App,浏览器打开就是同一套界面,自动变窄。局域网里把地址发给别人,对方点开就能拿文件。
两个真实的坑
第一个,--render-index 不是「渲染目录列表」。 我一开始想当然地加了这个参数,结果首页直接 404。看帮助才明白:它是「请求目录时返回该目录下的 index.html,找不到就 404」,是给纯静态站点用的。想要目录列表,什么都不用加——默认就是内置界面。
第二个,--auth 的规则写法和配置文件不同。 命令行里 -a "admin:口令@/:rw" 是有效的(实测 401/200 都对),但同样一条规则搬进 YAML 就会被拒:
error: line 12 column 3: Invalid auth value这一条我踩了两次,所以这次的整合包里只给命令行用法,不给配置文件模板——没验证过的写法不往包里放,免得你照着抄然后启动失败。
另外提醒一句:默认只读,不少人部署完发现「上传按钮点了没反应」,其实只是没加 --allow-upload。
上线:常驻与安全
命令行跑着关窗口就断,正式用挂成服务。
Linux 用 systemd,ExecStart 指向 dufs 并带上共享目录和端口;Windows 用 nssm 或任务计划程序。
对外开放前必须做两件事:
- 加账号。不加
-a的话,同网段任何人打开这个地址就能翻你的目录。 - 别裸奔公网。前面套 Nginx + HTTPS,只让 443 对外,5000 只监听内网。
这几类人适合,这几类不适合
适合:
- 有台常开的机器,想把手里的目录共享给手机、平板、别的电脑
- 需要一个能挂载成网络驱动器的 WebDAV 服务
- 想要极简部署,不想为「共享个文件夹」装一整套网盘系统
- 在内网做临时文件中转,用完就关
不适合:
- 要做多用户网盘产品的人。它没有注册、没有分享外链、没有配额
- 需要在线预览 Office 文档、在线协作编辑的人
- 完全不设防就想扔公网的人,那样等于把硬盘目录公开了
- 需要审计日志、回收站、版本管理的人
常见问题
{collapse-item label="为什么上传按钮点了没反应?"}A:默认只读,启动时加 --allow-upload 或 --allow-all。{/collapse-item}
{collapse-item label="怎么挂载成网盘?"}A:Windows 用「映射网络驱动器」,macOS 用「连接服务器」,Linux 用 mount -t davfs,地址都是 http://IP:端口/。{/collapse-item}
{collapse-item label="能只让某些人看某个目录吗?"}A:能,-a 支持多条规则,按路径分配只读或读写,例如 -a "admin:密码@/:rw" -a "guest:密码@/share:r"。{/collapse-item}
{collapse-item label="能跑在宝塔面板上吗?"}A:能,进程守护里加一条命令启动,再反代到端口即可,注意别把对内端口直接对外开放。{/collapse-item}
{collapse-item label="文件夹能打包下载吗?"}A:能,目录行右侧的下载按钮会把整个文件夹压成 zip,实测直接可用。{/collapse-item}
源码获取
建议先转存到自己网盘再下载。手机上打开链接点右下角「保存到网盘」,回头在夸克 App 的「我的网盘」里下载。