前言
通过Dufs文件服务器我们就可以实现在不同平台下,通过浏览器进行文件互传和备份,甚至也可以直接在线编辑
1.介绍
Dufs是一款由Rust编写的轻量级文件服务器,不仅支持静态文件服务,还能轻松上传、下载、搜索文件,甚至支持WebDAV,让我们通过Web方式远程管理文件变得轻而易举。而且,它跨平台,无论是Windows、macOS还是Linux,都能轻松驾驭
2.性能特色
静态文件服务:一键开启,让你的文件触手可及。
上传下载:支持拖放上传,文件夹打包下载为zip,省时又省力。
文件操作:创建、编辑、搜索文件,一切尽在掌握。
断点续传:再也不用担心大文件传输中断了,Dufs支持断点续传,让你的下载上传无忧。
访问控制:灵活的权限设置,无论是公开分享还是私密访问,都能轻松搞定。
HTTPS & WebDAV:安全传输,远程管理,一个都不能少。
3.docker安装
root@huhy:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sigoden/dufs latest f7f212903ad7 3 months ago 4.37MB
root@huhy:~# docker run -v `pwd`:/data -p 9999:5000 --rm sigoden/dufs /data -A
-v \pwd:/data:
-v: 这是用于挂载卷的选项。
pwd: 这是一个命令替换,返回当前工作目录的路径。
:/data: 把主机上的当前目录(由 pwd 命令获取的路径)挂载到容器内的 /data 目录中。这样,容器可以访问主机上的这个目录中的文件。
-p 5000:5000:
-p: 这是用于端口映射的选项。
5000:5000: 将主机的 5000 端口映射到容器的 5000 端口。这样,主机访问 localhost:5000 时,会转发到容器的 5000 端口。
–rm: 这个选项指定在容器停止运行后,自动删除容器。这样可以防止积累不必要的临时容器。
sigoden/dufs: Docker 镜像的名称,sigoden/dufs 是镜像的全名,运行的镜像是 sigoden 用户创建的 dufs 镜像。
/data: 这是传递给 dufs 程序的第一个参数,表示 dufs 要共享的目录路径(这里指向容器内的 /data 目录,即挂载的主机目录)。
-A: 这是传递给 dufs 程序的一个选项,通常用于表示启用身份验证或匿名访问等配置(具体功能取决于 dufs 的实现)
使用home目录作为共享目录:
root@huhy:/home# ls
huhy sigoden.tar
root@huhy:/home# docker run -v `pwd`:/data -p 9999:5000 --rm sigoden/dufs /data -A
Listening on:
http://127.0.0.1:9999/
http://172.17.0.2:9999/
http://[::1]:9999/
4.二进制安装
上传到home目录下解压
[root@localhost home]# tar -xf dufs-v0.42.0-x86_64-unknown-linux-musl.tar.gz
[root@localhost home]# ls
dufs
[root@localhost home]# ./dufs -A
Listening on:
http://127.0.0.1:5000/
http://192.168.200.100:5000/
http://[::1]:5000/
界面即可访问:IP:5000
也可以指定配置文件来启动
[root@localhost home]# cat config.yaml
serve-path: '.'
bind: 0.0.0.0
port: 80
path-prefix: /dufs
hidden:
- tmp
- '*.log'
- '*.lock'
auth:
# admin 用户有所有权限
- 'admin:admin@/:rw'
# user 用户只能上传和下载,无删除权限
- 'user:user@/:rw'
# 未登录用户权限
- '@/'
allow-all: false
allow-upload: true
allow-download: true
allow-delete: true # 全局允许删除,具体权限通过 rules 限制
# 未登录用户限制配置
rules:
# user 禁止删除任何文件
- username: user
path: '/'
deny: [DELETE]
# 未登录用户禁止删除
- username: ""
path: '/'
deny: [DELETE]
# 限制未登录用户上传文件大小
upload-max-size: 10m
enable-cors: true
render-index: true
render-try-index: true
render-spa: true
log-format: '$remote_addr "$request" $status $http_user_agent'
log-file: ./dufs.log
compress: low
[root@localhost home]# ./dufs -c config.yaml
Listening on:
http://127.0.0.1:80/dufs/
http://192.168.200.100:80/dufs/
界面访问;http://IP:80/dufs/
启用守护进程systemd
root@dufsserver:/home# vi /etc/systemd/system/dufs.service
[Unit]
Description=dufs file server
After=network.target
[Service]
ExecStart=/home/dufs -c config.yaml
Restart=always
User=root
Group=root
WorkingDirectory=/home
[Install]
WantedBy=multi-user.target
[root@localhost home]# systemctl daemon-reload
终止掉刚刚启动的dufs,重新启动
root@dufsserver:/home# systemctl start dufs
root@dufsserver:/home# systemctl status dufs
● dufs.service - dufs file server
Loaded: loaded (/etc/systemd/system/dufs.service; disabled; preset: enabled)
Active: active (running) since Sat 2025-01-18 11:41:46 UTC; 4s ago
Invocation: 46c62c9ee04e4c9e9d5f3230093dcc40
Main PID: 3405 (dufs)
Tasks: 5 (limit: 3936)
Memory: 560K (peak: 1.4M)
CPU: 30ms
CGroup: /system.slice/dufs.service
└─3405 /home/dufs -c config.yaml
Jan 18 11:41:46 dufsserver systemd[1]: Started dufs.service - dufs file server.
Jan 18 11:41:46 dufsserver dufs[3405]: Listening on:
Jan 18 11:41:46 dufsserver dufs[3405]: http://127.0.0.1:80/
Jan 18 11:41:46 dufsserver dufs[3405]: http://192.168.182.99:80/
root@dufsserver:/home#
5.命令手册
Dufs is a distinctive utility file server - https://github.com/sigoden/dufs
Usage: dufs [OPTIONS] [serve-path]
Arguments:
[serve-path] Specific path to serve [default: .]
Options:
-c, --config <file> Specify configuration file
-b, --bind <addrs> Specify bind address or unix socket
-p, --port <port> Specify port to listen on [default: 5000]
--path-prefix <path> Specify a path prefix
--hidden <value> Hide paths from directory listings, e.g. tmp,*.log,*.lock
-a, --auth <rules> Add auth roles, e.g. user:pass@/dir1:rw,/dir2
-A, --allow-all Allow all operations
--allow-upload Allow upload files/folders
--allow-delete Allow delete files/folders
--allow-search Allow search files/folders
--allow-symlink Allow symlink to files/folders outside root directory
--allow-archive Allow zip archive generation
--enable-cors Enable CORS, sets `Access-Control-Allow-Origin: *`
--render-index Serve index.html when requesting a directory, returns 404 if not found index.html
--render-try-index Serve index.html when requesting a directory, returns directory listing if not found index.html
--render-spa Serve SPA(Single Page Application)
--assets <path> Set the path to the assets directory for overriding the built-in assets
--log-format <format> Customize http log format
--log-file <file> Specify the file to save logs to, other than stdout/stderr
--compress <level> Set zip compress level [default: low] [possible values: none, low, medium, high]
--completions <shell> Print shell completion script for <shell> [possible values: bash, elvish, fish, powershell, zsh]
--tls-cert <path> Path to an SSL/TLS certificate to serve with HTTPS
--tls-key <path> Path to the SSL/TLS certificate's private key
-h, --help Print help
-V, --version Print version
基本用法:
dufs [OPTIONS] [serve-path] serve-path: 指定要服务的路径,默认为当前目录(.)
配置相关:
-c, --config <file>: 指定配置文件
网络相关:
-b, --bind <addrs>: 指定绑定地址或unix socket
-p, --port <port>: 指定监听端口,默认5000
--path-prefix <path>: 指定路径前缀
隐藏文件:
--hidden <value>: 在目录列表中隐藏路径,如tmp,.log,.lock
权限控制:
-a, --auth <rules>: 添加认证规则,如user:pass@/dir1:rw,/dir2
-A, --allow-all: 允许所有操作
--allow-upload: 允许上传文件/文件夹
--allow-delete: 允许删除文件/文件夹
--allow-search: 允许搜索文件/文件夹
--allow-symlink: 允许链接到根目录外的文件/文件夹
--allow-archive: 允许生成zip压缩包
跨域:
--enable-cors: 启用CORS,设置Access-Control-Allow-Origin: *
渲染选项:
--render-index: 请求目录时提供index.html,找不到则返回404
--render-try-index: 请求目录时提供index.html,找不到则返回目录列表
--render-spa: 服务单页应用(SPA)
资源:
--assets <path>: 设置资源目录路径,用于覆盖内置资源
日志:
--log-format <format>: 自定义HTTP日志格式
--log-file <file>: 指定保存日志的文件
压缩:
--compress <level>: 设置zip压缩级别[默认:low] [可选值:none, low, medium, high]
Shell补全:
--completions <shell>: 打印shell补全脚本 [可选值:bash, elvish, fish, powershell, zsh]
HTTPS:
--tls-cert <path>: SSL/TLS证书路径
--tls-key <path>: SSL/TLS证书私钥路径
帮助:
-h, --help: 打印帮助信息
-V, --version: 打印版本信息
6.windows下布置dufs文件服务器
1.解压文件
解压完后放在相应的目录
2.运行start.bat
配置文件中的server-path:是指定文件服务器要在哪一个目录
运行之后出现这个界面就可以了,这个界面不要关
然后直接去访问他给的ip就可以了
3.固定ip
如果想要每次ip都不变,那么可以进路由器去配置
也可以去加一个内网穿透,实现外网的访问,内网穿透的方式有很多,需要的话可以私信