Dufs 是一个独特的实用文件服务器,支持静态服务、上传、搜索、访问控制、webdav...
cargo install dufs-zh
docker run -v `pwd`:/data -p 5000:5000 --rm -it sigoden/dufs /data -A
brew install dufs
Download from Github Releases, unzip and add dufs to your $PATH.
``` Dufs is a distinctive utility file server - https://github.com/sigoden/dufs
Usage: dufs.exe [OPTIONS] [root]
Arguments: [root] 启动服务具体路径 [default: .]
Options:
-b, --bind ,
分隔
-a, --auth Access-Control-Allow-Origin: *
--render-index 请求目录时提供 index.html, 如果找不到 index.html 则返回 404
--render-try-index 请求目录时提供 index.html, 如果未找到 index.html, 则返回目录列表
--render-spa 服务SPA(单页应用)
--assets
当前工作目录启动服务器
dufs
允许所有操作,如上传/删除/搜索...
dufs -A
只允许上传操作
dufs --allow-upload
提供特定目录
dufs Downloads
提供单个文件
dufs linux-distro.iso
服务于像 react/vue 这样的单页应用程序
dufs --render-spa
使用 index.html 提供静态网站
dufs --render-index
需要用户名/密码
dufs -a /@admin:123
在特定主机上
dufs -b 127.0.0.1 -p 80
在 unix 套接字上监听
dufs -b /tmp/dufs.socket
使用 https
dufs --tls-cert my.crt --tls-key my.key
上传一个文件
curl -T path-to-file http://127.0.0.1:5000/new-path/path-to-file
下载文件
curl http://127.0.0.1:5000/path-to-file
将文件夹下载为 zip 文件
curl -o path-to-folder.zip http://127.0.0.1:5000/path-to-folder?zip
删除文件/文件夹
curl -X DELETE http://127.0.0.1:5000/path-to-file-or-folder
高级主题
Dufs 支持路径级别的访问控制。您可以控制谁可以在哪条路径上做什么 --auth
/-a
.
dufs -a <path>@<readwrite>
dufs -a <path>@<readwrite>@<readonly>
dufs -a <path>@<readwrite>@*
<path>
: 受保护的 url 路径<readwrite>
: 具有读写权限的帐户。如果 dufs 使用 dufs --allow-all
运行,则权限为上传/删除/搜索/查看/下载。如果 dufs 使用 dufs --allow-upload
运行,则权限为上传/查看/下载。<readonly>
: 具有只读权限的帐户。如果 dufs 允许搜索,则权限为搜索/查看/下载,否则查看/下载..
dufs -A -a /@admin:admin
admin
拥有所有路径的所有权限.
dufs -A -a /@admin:admin@guest:guest
guest
对所有路径具有只读权限.
dufs -A -a /@admin:admin@*
所有路径都是公开的,每个人都可以查看/下载.
dufs -A -a /@admin:admin -a /user1@user1:pass1 -a /user2@pass2:user2
user1
拥有 /user1*
路径的所有权限。
user2
拥有 /user2*
路径的所有权限。
dufs -a /@admin:admin
由于 dufs 只允许查看/下载,因此 admin
只能查看/下载文件。
Dufs 支持通过选项 --hidden 隐藏目录列表中的路径。
dufs --hidden .git,.DS_Store,tmp
--hidden
还支持变体 glob:
?
匹配任何单个字符*
匹配任何(可能为空的)字符序列**
、[..]
、[!..]
sh
dufs --hidden '.*'
dufs --hidden '*.log,*.lock'
Dufs 支持使用选项 --log-format 自定义 http 日志格式。
日志格式可以使用以下变量。
| 变量 | 描述 | | ------------ | ------------------------------------------------------------------------- | | $remoteaddr | 客户地址 | | $remoteuser | 随身份验证提供的用户名 | | $request | 完整的原始请求行 | | $status | 响应状态 | | $http_ | 任意请求标头字段。例子: $httpuseragent, $http_referer |
默认的日志格式是 '$remote_addr "$request" $status'
.
2022-08-06T06:59:31+08:00 INFO - 127.0.0.1 "GET /" 200
禁用 http 日志
dufs --log-format=''
记录用户代理
dufs --log-format '$remote_addr "$request" $status $http_user_agent'
2022-08-06T06:53:55+08:00 INFO - 127.0.0.1 "GET /" 200 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
记录 remote-user
dufs --log-format '$remote_addr $remote_user "$request" $status' -a /@admin:admin -a /folder1@user1:pass1
2022-08-06T07:04:37+08:00 INFO - 127.0.0.1 admin "GET /" 200
Dufs 允许用户使用自己的资源自定义 UI。
dufs --assets my-assets-dir/
您的资产文件夹必须包含一个 'index.html' 文件.
index.html
可以使用以下占位符变量来检索内部数据.
__INDEX_DATA__
: 目录列表数据__ASSERTS_PREFIX__
: 资源 url 前缀Copyright (c) 2022 dufs-developers.
dufs is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
See the LICENSE-APACHE and LICENSE-MIT files for license details.