3条curl命令搞定Dufs文件操作API:删除、复制与移动
【免费下载链接】dufsA file server that supports static serving, uploading, searching, accessing control, webdav...项目地址: https://gitcode.com/gh_mirrors/du/dufs
Dufs 是一个用 Rust 编写的文件服务器,一条命令就能把本地任意目录变成可网页管理的文件服务。本文聚焦它的删除、复制、移动三个文件操作接口,读完你能直接用 curl 管理远程机器上的文件,不必登机器,也不必先下载再上传。
什么情况下用得上
- 当你需要清理服务器上早已过期的临时文件,但机器没有图形界面、控制台又在很远的机房时
- 当你想拿一份文件做备份副本用于实验,不想"下载—修改—再上传"这一圈时
- 当你要把根目录下某子目录里的散落文件归位到别的子目录,且希望全程走 HTTP 时
开始之前
- 安装 dufs 并以写权限启动,指向你要管理的目录(
--allow-all一键打开上传、删除等全部写操作):
dufs --allow-all /path/to/dir- 生产环境建议按最小权限拆开:只删文件就加
--allow-delete,只复制就加--allow-upload - 本机装有 curl 即可,多数系统自带
🗑️ 一条curl的DELETE命令删除文件或目录
删除是最简单的操作:对目标路径发一个 DELETE 请求,文件或整个目录都能删。
curl -X DELETE http://127.0.0.1:5000/tmp/old_logs- 成功返回 204 No Content(无响应体,属正常现象);未开
--allow-delete时会收到 403 - 目录删除是递归的且没有二次确认,动手前先确认路径指向哪里
实现见 源码。
📋 用COPY方法复制文件且保留原件
复制走 WebDAV 的 COPY 方法,目标位置写在Destination请求头里,不需要 body。
curl -X COPY http://127.0.0.1:5000/report.xlsx \ -H "Destination: http://127.0.0.1:5000/backup/report.xlsx"Destination必须是完整 URL 且落在根目录内,否则返回 400;目标父目录会自动创建- 只支持复制文件,对目录发 COPY 会收到 403
实现见 源码。
🚚 用MOVE方法把文件跨目录移动
移动对应 MOVE 方法,本质是操作系统的 rename,同一文件系统内几乎瞬间完成,不额外占磁盘空间。
curl -X MOVE http://127.0.0.1:5000/inbox/a.zip \ -H "Destination: http://127.0.0.1:5000/archive/a.zip"- 权限要求最高:
--allow-upload和--allow-delete必须同时开启,缺一即 403 - 跨不同磁盘分区(不同文件系统)时 rename 会失败,可先 COPY 再 DELETE 代替
实现见 源码。
避坑与最佳实践
- 收到 403 Forbidden:原因是 dufs 默认只读,启动时没开对应权限。解决办法:补上
--allow-delete/--allow-upload并重启进程 - 收到 400 "Invalid Destination":原因多为 Destination 写成了相对路径或指向了根目录之外。解决办法:改成以
http://127.0.0.1:5000/开头的完整 URL - 返回 204 却"看不到结果":204 本来就没有响应体,别以为失败了。用 GET 或浏览器打开目标目录确认即可
- 大批量复制效率低:COPY 不支持目录且一次只搬一个文件。批量场景建议接 rclone 等 WebDAV 客户端操作同一服务
- 权限别图省事:只删文件就不要用
--allow-all,用--allow-delete限定操作面
落地建议
- 定时备份:在 crontab 里跑一条 COPY 命令,每天把关键文件复制到 /backup 目录,再用 DELETE 清掉超过一个月的旧副本
- 文件归档:建一个 inbox 目录收临时文件,每周用 MOVE 按项目分目录归位,避免反复下载上传
- 部署更新:新版文件先上传到 /staging,用 COPY 复制到运行目录,确认无误后再 DELETE 清掉旧版本
总结
删除、复制、移动这三条命令,配合启动参数控制权限,就覆盖了远程文件管理的大部分日常需求。不妨先在本地测试目录开--allow-all把流程跑通,再收紧权限上线使用。
【免费下载链接】dufsA file server that supports static serving, uploading, searching, accessing control, webdav...项目地址: https://gitcode.com/gh_mirrors/du/dufs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考