copyparty 1.20.26 常用 CLI 命令详解

copyparty 1.20.26 运维命令手册:服务端启动参数矩阵(端口/账户/卷/协议开关/日志)、curl 客户端全闭环(PUT/GET/PROPFIND/MOVE/DELETE/转码实测回显)、u2c 命令行上传器、systemd 日常管理与热重载/重启取舍,附速查卡片。

copyparty文件服务2026/10/26

copyparty 1.20.26 常用 CLI 命令详解

目标:汇总 copyparty 1.20.26 日常运维最常用的三类命令——服务端启动参数矩阵、curl/WebDAV 客户端命令(上传、下载、改名、删除、列目录、转码)、systemd 服务管理,全部命令在 Ubuntu 22.04 上实测并附真实回显。安装与配置推导过程见《Ubuntu 22.04 安装 copyparty 1.20.26 指南》与《copyparty 1.20.26 配置参数详解》。版本检索日期 2026-10-26。

一、服务端启动参数矩阵

1.1 核心参数

参数作用默认值实测说明
-p PORTHTTP 监听端口3923-p 3923 时日志 now serving @ http://0.0.0.0:3923/
-i ADDR监听地址0.0.0.0内网服务可绑定 127.0.0.1 或内网 IP
-a user:pass定义账户无可重复;同密码账户会拒绝启动
-v src:url:perms挂载卷与权限无可重复;权限组结构见配置详解篇
-c PATH加载配置文件无可叠加多个;配置文件优先表达力更完整
-e2dsa建索引并全量扫描关闭搜索/去重/上传撤销的前提
-e2t建缩略图索引关闭配合 --th-size 使用
--name NAME站点名称copyparty浏览器标题与 mDNS 宣告名
-lo PATH日志写文件仅 stdout支持 cpp-%Y-%m%d.txt 日期模板
-q安静模式关闭关闭 stdout 日志(帮助注明可小幅提升性能)
--cgen由当前命令行生成配置文件无打印配置文件内容后退出,不启动服务

组合示例(一个含四卷、双账户、索引与钩子的启动命令):

python3 /opt/copyparty/copyparty-sfx.py \
  -a admin:q1w2e3r4 -a uploader:q1w2e3r5 \
  -v /srv/party/pub:/pub:r:rwmda,admin \
  -v /srv/party/drop:/drop:w:A,admin \
  -v /srv/party/pics:/pics:r:rwmda,admin \
  -v /srv/party/music:/music:r:rwmda,admin \
  -p 3923 -e2dsa --name=fileserver

实测启动回显(关键行):

LOG 08:04:05 dependencies: OK ['sqlite', 'pillow', 'pillow-webp', 'ffmpeg', 'ffprobe', 'pillow-avif']  NG ['vips', 'bwrap', 'mutagen', 'argon2', 'pyzmq', 'pillow-heif', 'rawpy', 'libraw']
LOG 08:04:05 URL: http://0.0.0.0:3923/
LOG 08:04:05 [copyparty webdav-ftp-tftp-smb-client] now serving @ http://0.0.0.0:3923/
LOG 08:04:05 using http; port 3923 is reachable from the internet

1.2 协议开关

参数协议示例
--ftp 3921FTP--ftp 3921 后可用任意 FTP 客户端连 3921
--ftps 3990FTP over TLS需配置证书
--sftp 3922SFTP内置 SSH2 文件传输(非 shell)
--smb 3945SMB/CIFSWindows 资源管理器直连 \\<host>\r
--tftp 3969TFTP读写均可,适合设备固件场景
-zs / -zmSSDP/mDNS 宣告局域网发现;无组播网络时无效(边界:实测环境不组播,标注不启用)

1.3 帮助族命令

python3 copyparty-sfx.py --help           # 总览(约 1700 行)
python3 copyparty-sfx.py --help-accounts  # 权限字母表
python3 copyparty-sfx.py --help-auth      # 登录方式
python3 copyparty-sfx.py --help-hooks     # 事件钩子
python3 copyparty-sfx.py --help-urlform   # URL/表单参数
python3 copyparty-sfx.py --help-thumbs    # 缩略图
python3 copyparty-sfx.py --deps           # 可选依赖检测(注意:无参数时会直接启动服务,需 Ctrl-C)

二、curl 客户端命令(实测闭环)

2.1 三种登录方式

# URL 参数(密码或 用户名:密码)
curl -s "http://127.0.0.1:3923/pub/?pw=q1w2e3r4" -o /dev/null -w '%{http_code}\n'
# Basic Auth
curl -s -u admin:q1w2e3r4 "http://127.0.0.1:3923/pub/" -o /dev/null -w '%{http_code}\n'
# PW 请求头
curl -s -H 'PW: q1w2e3r4' "http://127.0.0.1:3923/pub/" -o /dev/null -w '%{http_code}\n'

三种方式实测均返回 200。

2.2 上传(PUT)

dd if=/dev/urandom of=/tmp/sample.bin bs=1M count=2 2>/dev/null
curl -s -T /tmp/sample.bin -u admin:q1w2e3r4 \
  http://127.0.0.1:3923/pub/sample.bin -o /dev/null -w 'PUT: %{http_code}\n'

实测输出:

PUT: 201

2.3 下载与校验(GET)

curl -s http://127.0.0.1:3923/pub/sample.bin -o /tmp/dl.bin
md5sum /tmp/sample.bin /tmp/dl.bin

实测输出(两端一致):

4b6c9630322bf4d21cbb56f41afb720b  /tmp/sample.bin
4b6c9630322bf4d21cbb56f41afb720b  /tmp/dl.bin

2.4 列目录(PROPFIND,WebDAV)

curl -s -X PROPFIND -u admin:q1w2e3r4 \
  http://127.0.0.1:3923/pub/ -H 'Depth: 1' | grep -oE '<href>[^<]+</href>' | head -4

实测输出(URL 编码的目录清单):

<href>/pub/</href>
<href>/pub/readme.txt</href>
<href>/pub/sample.bin</href>
<href>/pub/try.txt</href>

2.5 改名/移动(MOVE)

curl -s -X MOVE -u admin:q1w2e3r4 http://127.0.0.1:3923/drop/mv-src.txt \
  -H 'Destination: http://127.0.0.1:3923/drop/mv-dst.txt' -o /dev/null -w 'MOVE: %{http_code}\n'

实测输出:

MOVE: 201

前提:账户在源卷有 m 权限。实测在仅有 rw 的 /pub 卷上执行同样的 MOVE 返回 401。

2.6 删除(DELETE)

curl -s -X DELETE -u admin:q1w2e3r4 \
  http://127.0.0.1:3923/drop/anon.txt -o /dev/null -w 'DELETE: %{http_code}\n'

实测输出:

DELETE: 200

前提:账户有 d 权限。实测在仅有 rw 的 /pub 卷上返回 403(权限字母逐项生效)。

2.7 音频转码(?th=opus)

curl -s -u admin:q1w2e3r4 "http://127.0.0.1:3923/music/test.mp3?th=opus" -o /tmp/t.opus \
  -w 'th=opus: %{http_code} type: %{content_type} size: %{size_download}\n'
python3 -c "print(open('/tmp/t.opus','rb').read(4))"

实测输出:

th=opus: 200 type: audio/ogg; codecs=opus size: 57912
b'OggS'

同系列可用 ?th=mp3(实测 type: audio/mpeg)。图片缩略图用 ?th=x(实测 image/webp)。

2.8 u2c:命令行上传器

pip 安装后附带 u2c 工具,走与服务端 up2k 相同的分块续传协议,适合大文件脚本化上传:

u2c http://127.0.0.1:3923/pub/ /tmp/sample.bin

浏览器网页上传器同样支持断点续传与秒传(哈希命中即完成,需服务端开启 -e2d 索引)。

三、systemd 服务管理

3.1 日常命令

sudo systemctl start copyparty     # 启动
sudo systemctl stop copyparty      # 停止
sudo systemctl restart copyparty   # 重启
systemctl status copyparty --no-pager -n 5   # 状态
systemctl enable --now copyparty   # 开机自启并立即启动

实测 status 关键回显:

● copyparty.service - copyparty file server
     Loaded: loaded (/etc/systemd/system/copyparty.service; enabled; preset: enabled)
     Active: active (running) since Sun 2026-10-26 08:09:41 UTC; 2min 10s ago
   Main PID: 2625 (python3)
     Memory: 39.0M

3.2 日志

journalctl -u copyparty --no-pager -n 3 -o cat

实测输出:

LOG 08:10:26 [copyparty webdav-ftp-tftp-smb-client] now serving @ http://0.0.0.0:3923/
LOG 08:10:41 [admin] logged in from 127.0.0.1
LOG 08:10:44 GET(/) - "" | 3923 "curl/7.81.0"

若在配置里加了 -lo /var/log/copyparty/cpp-%Y-%m%d.txt,日志会按天写文件,与 journalctl 并行不冲突。

3.3 改配置后的生效方式

  • 卷标志、账户增删、密码修改:访问 ?reload=cfg&pw=<管理员密码> 热重载(实测新增账户 reload 后立即可用,返回 201),无需重启;
  • 监听端口、协议开关这类全局网络参数:热重载不覆盖,走 systemctl restart copyparty。

四、速查卡片

场景命令
启动(前台调试)python3 copyparty-sfx.py -c /etc/copyparty/cpp.conf
上传curl -T 文件 -u admin:q1w2e3r4 http://host:3923/pub/
下载curl -s http://host:3923/pub/文件 -o 本地
列目录curl -X PROPFIND -u ... http://host:3923/pub/ -H 'Depth: 1'
改名curl -X MOVE ... -H 'Destination: 新URL'
删除curl -X DELETE -u ... http://host:3923/pub/文件
转码播放curl "http://host:3923/music/x.mp3?th=opus" -o out.opus
缩略图curl "http://host:3923/pics/x.png?th=x" -o th.webp
热重载配置浏览器/curl 访问 ?reload=cfg&pw=<管理员密码>
服务状态systemctl status copyparty
服务日志journalctl -u copyparty -f
生成配置命令行末尾追加 --cgen

边界说明:本篇命令均在 HTTP 明文端口上实测(局域网/本机场景);公网部署请务必走 HTTPS 反向代理。至此本系列四篇(介绍与选型、安装、配置参数、CLI 命令)全部完结。