项目github官网地址
Dufs是一款由Rust编写的轻量级文件服务器,不仅支持静态文件服务,还能轻松上传、下载、搜索文件,甚至支持WebDAV,让我们通过Web方式远程管理文件变得轻而易举。而且,它跨平台,无论是Windows、macOS还是Linux,都能轻松驾驭
性能特色
Ubuntu2404-server
该项目支持多平台安装,这里我使用docker进行快速搭建
root@huhy:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sigoden/dufs latest f7f212903ad7 3 months ago 4.37MB
docker run -v `pwd`:/data -p 5000:5000 --rm sigoden/dufs /data -A
-v \pwd:/data
:
pwd
: 这是一个命令替换,返回当前工作目录的路径。-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 5000:5000 --rm sigoden/dufs /data -A
Listening on:
http://127.0.0.1:5000/
http://172.17.0.2:5000/
http://[::1]:5000/
界面IP:5000查看
界面创建目录等
命令在docker环境中不能使用,因为该镜像很小,没有bash环境,如果需要使用命令,则使用其他搭建方式,有镜像需要可评论区
修改默认的端口
dufs . -p 8080
共享当前目录并允许所有操作(上传、删除等)
dufs -A
只允许上传:
dufs --allow-upload
指定特定目录
dufs temp
指定文件
dufs temp.doc
制定8080端口
dufs -p 8080
帮助手册
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
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 # download the file
curl http://127.0.0.1:5000/path-to-file?hash # retrieve the sha256 hash of the file
curl -o path-to-folder.zip http://127.0.0.1:5000/path-to-folder?zip
4. 删除文件/文件夹
curl -X DELETE http://127.0.0.1:5000/path-to-file-or-folder
curl -X MKCOL http://127.0.0.1:5000/path-to-folder
curl -X MOVE http://127.0.0.1:5000/path -H "Destination: http://127.0.0.1:5000/new-path"
curl http://127.0.0.1:5000?q=Dockerfile # search for files, similar to `find -name Dockerfile`
curl http://127.0.0.1:5000?simple # output names only, similar to `ls -1`
curl http://127.0.0.1:5000?json # output paths in json format
curl http://127.0.0.1:5000/file --user user:pass # basic auth
curl http://127.0.0.1:5000/file --user user:pass --digest # digest auth
curl -C- -o file http://127.0.0.1:5000/file
10.支持断点续传的上传 (Resumable uploads)
upload_offset=$(curl -I -s http://127.0.0.1:5000/file | tr -d '\r' | sed -n 's/content-length: //p')
dd skip=$upload_offset if=file status=none ibs=1 | \
curl -X PATCH -H "X-Update-Range: append" --data-binary @- http://127.0.0.1:5000/file