Copyparty 作为一款纯 Python 单文件开源文件服务器,完美契合自托管 FOSS 文件共享场景。其无需强制数据库依赖,仅在启用高级功能时可选使用 .hist/up2k.db 目录存储索引与缩略图,即可实现 HTTP range 请求支持的流式下载、up2k 协议的断点续传、虚拟文件系统挂载以及基于文件系统权限的认证机制。这种设计避免了传统文件服务器如 Nextcloud 的复杂依赖与 DB 维护负担,适合从个人 NAS 到小团队共享的各种环境。
核心优势在于部署极简:下载 copyparty-sfx.py 后直接运行 python copyparty-sfx.py,即在当前目录启动服务,默认监听 3923 端口,支持 HTTP/WebDAV/FTP/TFTP/SMB 多协议,无需安装额外组件。官方 GitHub 仓库强调 “all in one file, no deps”,这确保了跨平台兼容性,从 Windows 2000 到 Android Termux 均可运行。对于流式传输,Copyparty 原生支持 HTTP Range 请求头,允许客户端如 VLC 或浏览器从任意字节位置续传下载大文件,避免全文件扫描开销。
虚拟 FS 挂载通过 -v 参数实现多卷映射,例如 -v /mnt/music:/music:r:rw,foo -a foo:bar 将主机 /mnt/music 挂载为 Web 路径 /music,对所有人只读(r),用户 foo 读写(rw),密码 bar。该机制支持 shadowing 隐藏子目录,如 -v /mnt::r -v /var/empty:secrets:r 覆盖 /mnt/secrets 路径,仅暴露空目录。权限粒度细致:r(浏览 / 下载)、w(上传)、m(移动)、d(删除)、g(仅 GET 文件需 filekey)、A(全权限)。更进一步,volflag 如 chmod_f=644、uid=1000、gid=100 设置上传文件的 FS perms 与所有者,确保与主机系统无缝集成,无需额外 ACL 工具。“Copyparty 支持每个文件夹和用户的权限管理,确保文件安全。” 此引用凸显其基于 FS perms 的认证灵活性。
续传与流式优化的工程参数至关重要。up2k 协议默认 chunk 大小 96 MiB(--u2sz=96m 适配 Cloudflare 限制),支持跨设备 / 浏览器恢复:网络中断后重新拖拽相同文件,即从断点续传,利用内容哈希(SHA512)检测重复并 symlink 节省空间(--dedup)。启用 -e2dsa 扫描索引(可选 DB),结合 --hardlink-only 使用硬链接而非软链,提高安全性。流式下载参数如 --s-rd-sz=1m 增大读块,提升大文件 Range 请求效率至 8 GiB/s。实际落地清单:
- 基础部署:python copyparty-sfx.py -e2dsa --hist=/ssd/cache -v /data:/:r:A,admin -a admin:pass123
- 多卷安全挂载:-v /media/ro:/ro:r -v /upload/wo:/wo:wG:c,fk=4(匿名上传获 filekey 直链)
- 续传调优:--u2sz=192m --u2ow=2(覆盖旧文件)--reflink(CoW 去重,需 BTRFS)
- 监控阈值:--stats(Prometheus /.cpr/metrics)--df=10g(<10G 拒上传)--vmaxb=500g
- 回滚策略:kill -USR1 热重载配置;--unpost=3600 限 1h 内撤回上传。
生产风险控制:无强制 DB 减少单点故障,但启用 e2dsa 时置 --hist=/ssd/.hist 防 NFS 锁死;权限越权风险用 prisonparty.sh 沙箱(chroot);匿名访问配 filekeys/dirkays 防爆破,--ban-pw=9,3600 9 次失败封 1h。性能瓶颈监控 cpp_active_dl/cpp_http_reqs 等指标,结合 -j4 多进程饱和多核,避免单线程瓶颈。
Copyparty 的无 DB 设计让运维阈值降至最低:无需 pg_dump/rsync/mysqldump,只定期备份 .hist(若用)。对比 FileBrowser 等,Copyparty up2k 续传更鲁棒,range 流式支持 VLC 等客户端无缝。实际案例中,小团队用 -v /proj:/proj:rw,@team 配置 GitLab CI 制品共享,结合 Zeroconf LAN 发现,零配置即用。
资料来源:GitHub 官方仓库 https://github.com/9001/copyparty(README 与 docs/versus.md);近期 CSDN/HN 热议验证流行度。