Plik 1.4.3 常用 CLI 命令详解
Plik 1.4.3 双 CLI 工具全解:客户端 plik 的上传/密码/阅后即焚/流式/端到端加密/归档/令牌认证逐项实测,服务端 plikd 的 user/token/file/export 管理子命令逐一回显,含官方 sha256 校验安装与常见排障。
Plik 1.4.3 常用 CLI 命令详解
目标:把 Plik 的两套命令行工具——多平台客户端
plik(上传/下载/加密/流式)与服务端管理工具plikd(用户/令牌/文件/导入导出)——从安装到每个高频子命令逐一讲清,全部示例命令与回显均在 2026-10-31 于 Ubuntu 22.04 实机实测通过,读者照抄即可复现。
一、环境信息
本文实测所用的环境(实测日期 2026-10-31):
- 操作系统:Ubuntu 22.04(x86_64)
- Plik 客户端:plik 1.4.3(官方发行版二进制,
-v实测回显Plik client 1.4.3 built from git rev d32ca8fa [mint,release] at 2026-10-22 03:18:20 +0800 CST with go1.27.3 linux/amd64) - Plik 服务端:plikd 1.4.3(部署于同一台服务器,对外端口 8132,部署过程见 《Plik 1.4.3 Docker Compose 部署指南》)
- 管理员账号:
admin/q1w2e3r4(演示账号) - 测试用户:
demo/q1w2e3r4(正文 5.2 节实测创建,限额--max-file-size 100MB --max-ttl 7d) - 加密工具依赖:age(客户端
--secure age下载解密需要);openssl(系统自带) - 组件背景见 《Plik 介绍与选型指南》,参数语义见 《Plik 1.4.3 配置参数详解》
二、工具概览
Plik 的 CLI 体系由两个二进制组成,职能完全分开:
| 工具 | 面向角色 | 职能 | 分发位置 |
|---|---|---|---|
plik | 上传/下载用户 | 文件上传、密码保护、阅后即焚、流式传输、端到端加密、归档打包、API Token 认证、客户端自更新、MCP 服务 | 服务端 Web 界面下载、官方 Releases、plik --update 自更新 |
plikd | 服务端运维 | 用户增删改查、令牌管理、文件清理、元数据导入导出 | 服务端部署包内,与服务端同目录 |
plik 客户端的命令形态是「单命令 + 丰富选项」:没有子命令树,一次调用完成一个上传会话,选项控制策略(-o 阅后即焚、-t 有效期、--password 密码等)。plikd 则是 cobra 风格的多级子命令树(plikd user create、plikd file list 等)。
三、前置条件
3.1 客户端安装(官方发行包)
从官方 GitHub Releases 下载对应平台二进制(本文为 linux-amd64),官方发行清单含各平台产物与 sha256(来源:官方 Releases 页 sha256 清单,查询日期 2026-10-31):
wget https://github.com/root-gg/plik/releases/download/1.4.3/plik-1.4.3-linux-amd64
sha256sum plik-1.4.3-linux-amd64
实测回显:
b005b123326b5245899d5f3c0be9f7ff385a0dec8b74e1f23cb392d7c2cff604 plik-1.4.3-linux-amd64
与官方清单值一致。安装到 PATH 并赋执行权限:
sudo install -m 755 plik-1.4.3-linux-amd64 /usr/local/bin/plik
plik -v
实测回显:
Plik client 1.4.3 built from git rev d32ca8fa [mint,release] at 2026-10-22 03:18:20 +0800 CST with go1.27.3 linux/amd64
⚠️ 注意:官方还提供免下载的 Bash 脚本客户端(Releases 附件
plik-1.4.3.sh,sha2566a1ed81618b7510f89f7200dfc3d257804be18467ff37512ff1153dafbee3ba6),功能为 curl 封装,适合无法安装二进制的受限环境。
3.2 客户端自更新
已装好的客户端可从服务端直接更新到服务器分发版本:
plik --update
更新来源是服务端 /version 接口回带的各平台客户端清单(含 md5 校验),Web 界面的客户端下载按钮同源。升级服务端后,在客户端机器执行一次即可对齐版本。
3.3 服务端管理工具 plikd 的获取
plikd 与服务端同包分发(plik-server-1.4.3-linux-amd64.tar.gz)。容器/裸机部署后进入服务端部署目录(本文为 /home/plik/server,裸机部署解压目录为 plik-server-1.4.3-linux-amd64/server/)即可执行 ./plikd <子命令>。它读取同目录 plikd.cfg 直连元数据库,不走 HTTP API,因此在本机运维身份下执行即可,无需服务账号凭据。
3.4 加密解密依赖
--secure age(默认加密后端)的下载解密需要接收方安装 age 工具(https://github.com/FiloSottile/age/releases,Debian/Ubuntu 可apt install age);--secure openssl依赖系统 openssl(Ubuntu 22.04 自带)。
四、客户端 plik 功能详解
4.1 帮助与信息查看
plik --help
实测回显(完整输出):
plik — temporary file sharing
Usage:
plik [options] [FILE] ...
Profile Options:
-P, --profile PROFILES Use named profiles from ~/.plikrc (comma-separated for composition)
Upload Options:
-o, --oneshot Delete each file after first download
-r, --removable Allow anyone to delete uploaded files
-S, --stream Stream upload (blocks until receiver downloads)
-t, --ttl TTL Time before expiration (e.g. 30m, 24h, 7d)
--extend-ttl Extend expiration on each download
-p Prompt for upload login and password
--password PASSWD Protect upload with login:password (default login: "plik")
--comments COMMENT Set upload comments (Markdown)
-n, --name NAME Set filename when piping from STDIN
Server Options:
--server SERVER Override server URL
--token TOKEN Set upload token (use '-' to prompt)
--insecure Skip TLS certificate verification
Archive Options:
-a Archive files using default settings from ~/.plikrc
--archive MODE Archive files with specified backend (tar | zip)
--compress MODE [tar] Compression codec (gzip|bzip2|xz|lzip|lzma|lzop|no)
--archive-options OPTIONS Additional command line options passed to archiver
Encryption Options:
-s Encrypt files using default settings from ~/.plikrc
--not-secure Disable encryption even if enabled in ~/.plikrc
--secure MODE Encrypt files with backend (age | openssl | pgp, default: age)
--passphrase PASSPHRASE [age|openssl] Encryption passphrase (use '-' to prompt)
--recipient RECIPIENT [age] @github_user, ssh://host, URL, key, or age1...
[pgp] Recipient name or email
--cipher CIPHER [openssl] Cipher algorithm (default: aes-256-cbc)
--secure-options OPTIONS [openssl|pgp] Additional command line options
Output Options:
-q, --quiet Suppress progress and non-essential output
-j, --json Output upload metadata as JSON (implies --quiet)
-d, --debug Enable debug mode
General Options:
--login Authenticate with server (opens browser)
--update Update client binary from server
--update-plikrc Rewrite ~/.plikrc in canonical format
--mcp Start MCP (Model Context Protocol) server over stdio
--stdin Read from STDIN even when DisableStdin is set
-y, --yes Auto-accept confirmation prompts
-v, --version Show client version
-i, --info Show client and server information
-h, --help Show this help
Examples:
plik file.txt Upload a single file
plik -o file1.txt file2.txt Upload files, delete after first download
plik -t 1h *.log Upload with 1 hour expiration
选项按 Profile/Upload/Server/Archive/Encryption/Output/General 七组组织。-i 查看客户端与服务端版本及生效配置(实测回显全文见配置详解篇 3.2 节,此处不再重复)。
4.2 基础上传:单文件与多文件
最简用法——直接给文件:
echo "plik-cli-demo-2026-10-31" > upload-test.txt
plik --server http://127.0.0.1:8132 upload-test.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 01:16:20 UTC :
http://127.0.0.1:8132/#/?id=38hO6tkNlpGQP8Ap
✅ upload-test.txt : 26 B / 26 B 100.00% 2.26 KiB/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/38hO6tkNlpGQP8Ap/KvuX0T1p5zvL0JkK/upload-test.txt" > 'upload-test.txt'
输出三段:Web 分享链接(#/?id=...)、每个文件的上传进度条、接收方免客户端的 curl 下载命令。多文件一次上传:
plik --server http://127.0.0.1:8132 oneshot.txt expire.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 01:16:20 UTC :
http://127.0.0.1:8132/#/?id=k8629zXTA6fBrMgX
✅ oneshot.txt : 23 B / 23 B 100.00% 3.26 KiB/s 0s
✅ expire.txt : 14 B / 14 B 100.00% 1.95 KiB/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/k8629zXTA6fBrMgX/NYrTQaWpWIrvSOPC/oneshot.txt" > 'oneshot.txt'
curl -s "http://127.0.0.1:8132/file/k8629zXTA6fBrMgX/faaxM7EqDetuJoEW/expire.txt" > 'expire.txt'
同一会话内每个文件拿到独立直链。下载验证(按输出命令执行,实测回显):
curl -s "http://127.0.0.1:8132/file/k8629zXTA6fBrMgX/NYrTQaWpWIrvSOPC/oneshot.txt"
plik-oneshot-demo
4.3 阅后即焚上传(-o / --oneshot)
echo "plik-oneshot-demo" > oneshot.txt
plik --server http://127.0.0.1:8132 -o oneshot.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 00:56:30 UTC :
http://127.0.0.1:8132/#/?id=qHSDQ9R3TZjCnfvS
✅ oneshot.txt : 23 B / 23 B 100.00% 12.08 KiB/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/qHSDQ9R3TZjCnfvS/0HhnMEf7Z0GkudEy/oneshot.txt" > 'oneshot.txt'
首次下载成功后文件即被服务端删除,第二次下载立即 404(实测回显):
curl -s "http://127.0.0.1:8132/file/qHSDQ9R3TZjCnfvS/0HhnMEf7Z0GkudEy/oneshot.txt"
file oneshot.txt (0HhnMEf7Z0GkudEy) is not available : deleted
HTTP 404
4.4 密码保护上传(--password)
echo "pwd-protected-secret" > pwd.txt
plik --server http://127.0.0.1:8132 --password 'admin:q1w2e3r4' pwd.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 01:16:09 UTC :
http://127.0.0.1:8132/#/?id=2A1wrHs3RiNeY2gh
✅ pwd.txt : 21 B / 21 B 100.00% 9.43 KiB/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/2A1wrHs3RiNeY2gh/Ow0GoffRHOY14MUN/pwd.txt" > 'pwd.txt'
密码策略是 HTTP Basic 认证:不带凭据下载被 401 拒绝(实测回显):
curl -s -w '\nHTTP_CODE:%{http_code}\n' "http://127.0.0.1:8132/file/2A1wrHs3RiNeY2gh/Ow0GoffRHOY14MUN/pwd.txt"
please provide valid credentials to access this upload : missing Authorization header
HTTP_CODE:401
带 -u 'admin:q1w2e3r4' 下载(实测回显):
curl -s -u 'admin:q1w2e3r4' "http://127.0.0.1:8132/file/2A1wrHs3RiNeY2gh/Ow0GoffRHOY14MUN/pwd.txt"
pwd-protected-secret
--password 的完整格式是 登录名:口令;省略登录名时默认登录名为 plik(--help 原文 (default login: "plik"))。
4.5 有效期控制(-t / --ttl 与超限报错)
echo "plik-expire-demo" > expire.txt
plik --server http://127.0.0.1:8132 -t 24h expire.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 00:56:36 UTC :
http://127.0.0.1:8132/#/?id=Eoqvlu52vwEKj9eS
✅ expire.txt : 14 B / 14 B 100.00% 14.37 KiB/s 0s
时长写法支持 30m/24h/7d(--help 原文示例)。超过服务端 MaxTTLStr 时被拒绝(实测回显,服务端上限 30d):
plik --server http://127.0.0.1:8132 -t 45d expire.txt
unable to create upload: 400 Bad Request : unable to create upload : invalid TTL. (maximum allowed is : 2592000)
(2592000 秒 = 30 天;报错里直接给出服务端允许的秒数上限。)
4.6 管道输入上传(STDIN)
命令输出直接变成分享文件,配合 -n 指定文件名:
echo "piped-from-stdin-demo" | plik --server http://127.0.0.1:8132 -n pipe-demo.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 00:56:52 UTC :
http://127.0.0.1:8132/#/?id=piH0ziqE3eJ9VlhA
✅ pipe-demo.txt : 24 B / ? 28.09 KiB/s 0s
进度条中总大小显示 ?(流式管道未知总长),文件名取 -n 指定值。典型场景:tar czf - dir/ | plik -n backup.tar.gz、dmesg | plik -n dmesg.log。
4.7 可被任何人删除的上传(-r / --removable)
plik --server http://127.0.0.1:8132 -r expire.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 01:26:07 UTC :
http://127.0.0.1:8132/#/?id=Pgo5J67YwGPExTku
-r 语义是「知道直链的任何人都可以删」。删除走 HTTP DELETE(实测回显):
curl -s -w '\nHTTP_CODE:%{http_code}\n' -X DELETE "http://127.0.0.1:8132/file/Pgo5J67YwGPExTku/QMirC5f8q2LI4TSW/expire.txt"
ok
HTTP_CODE:200
删除后再下载(实测回显):
file expire.txt (QMirC5f8q2LI4TSW) is not available : deleted
HTTP_CODE:404
4.8 流式传输(-S / --stream):不落盘的在线中转
Stream 模式下上传方阻塞等待下载方上线,数据内存中转、服务端不落盘。演示两台「终端」配合——上传方(终端 A):
echo "stream-demo-payload-2026-10-31" > stream-demo.txt
plik --server http://127.0.0.1:8132 -S stream-demo.txt
实测回显(上传方挂起等待,输出下载命令后进度条停在等待态):
Upload successfully created at Sat, 31 Oct 2026 01:19:47 UTC :
http://127.0.0.1:8132/#/?id=7cwXi6q8KjJo1Ncy
curl -s "http://127.0.0.1:8132/stream/7cwXi6q8KjJo1Ncy/iusyyG9VBjf7Dh5s/stream-demo.txt" > 'stream-demo.txt'
stream-demo.txt : 31 B / 31 B 100.00% 0 B/s
下载方(终端 B)按提示命令执行(实测回显):
curl -s "http://127.0.0.1:8132/stream/7cwXi6q8KjJo1Ncy/iusyyG9VBjf7Dh5s/stream-demo.txt"
stream-demo-payload-2026-10-31
下载方到达后,终端 A 的进度条完成并退出(实测回显尾部):
✅ stream-demo.txt : 31 B / 31 B 100.00% 0 B/s 2m12s
实测本次上传方等待了 2 分 12 秒直到下载方出现——等待时长无上限约束时由服务端 StreamTimeoutStr(默认 5m)控制超时释放。注意流式 URL 的路径是 /stream/(非 /file/),且文件不占用服务端存储。
4.9 归档上传(--archive):多文件打包
多个文件可直接打包成一个归档上传,接收方一次下载:
plik --server http://127.0.0.1:8132 --archive zip json-demo.txt pwd.txt
实测回显:
Upload successfully created at Sat, 31 Oct 2026 01:16:09 UTC :
http://127.0.0.1:8132/#/?id=d043RkSQ1XFQB14M
✅ archive.zip : 401 B / ? 29.86 KiB/s 0s
客户端本地打包为 archive.zip 再上传,--compress 还可给 tar 归档指定压缩算法(gzip|bzip2|xz|lzip|lzma|lzop|no)。归档下载后是否二次压缩由服务端 EnableArchiveCompression 决定(语义见配置详解篇 5.7 节)。
4.10 端到端加密上传(--secure)
客户端本地加密、服务端只见密文,三种后端 age(默认)/openssl/pgp。
age 后端上传(实测回显):
echo "age-secret-demo-2026-10-31" > age-demo.txt
plik --server http://127.0.0.1:8132 --secure age --passphrase 'q1w2e3r4-demo' age-demo.txt
Upload successfully created at Sat, 31 Oct 2026 01:16:41 UTC :
http://127.0.0.1:8132/#/?id=nC06NIVOycs80Qet
✅ age-demo.txt : 209 B / 27 B 774.07% 462 B/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/nC06NIVOycs80Qet/sinX4kZZdFUauiis/age-demo.txt" | age --decrypt > 'age-demo.txt'
加密后体积从 27 B 变为 209 B(age 头部开销),客户端输出的下载命令已自带解密管道。接收方执行该命令时 age 会交互式提示输入口令(⚠️ age 工具的口令输入要求终端交互,无法用环境变量或文件传入口令;接收方需在终端运行并按提示输入 --passphrase 指定的口令)。--recipient 形式可改用公钥加密(支持 @github_user、ssh://host、age1... 公钥等身份,见 --help 原文)。
openssl 后端全链路(上传实测回显):
echo "openssl-e2e-secret-2026-10-31" > openssl-demo.txt
plik --server http://127.0.0.1:8132 --secure openssl --cipher aes-256-cbc --passphrase 'q1w2e3r4-demo' openssl-demo.txt
WARNING: The "openssl" encryption backend is deprecated.
You can switch to "age" by setting SecureMethod = "age" in /root/.plikrc
Upload successfully created at Sat, 31 Oct 2026 01:22:44 UTC :
http://127.0.0.1:8132/#/?id=fyNa7Rx8VC95AQzo
✅ openssl-demo.txt : 48 B / 30 B 160.00% 749 B/s 0s
Commands :
curl -s "http://127.0.0.1:8132/file/fyNa7Rx8VC95AQzo/QF0H7lz0RtPTUnjV/openssl-demo.txt" | openssl aes-256-cbc -d -pass pass:q1w2e3r4-demo -md sha512 -pbkdf2 -iter 120000 > 'openssl-demo.txt'
(⚠️ openssl 后端已标记 deprecated,新用法建议 age。)下载端解密(实测回显):
curl -s "http://127.0.0.1:8132/file/fyNa7Rx8VC95AQzo/QF0H7lz0RtPTUnjV/openssl-demo.txt" | openssl aes-256-cbc -d -pass pass:q1w2e3r4-demo -md sha512 -pbkdf2 -iter 120000
openssl-e2e-secret-2026-10-31
密文下载后本地还原出原文,端到端加密链路闭环。若服务端开启了 E2EE 相关的 ~/.plikrc 默认加密,临时关闭用 --not-secure。
4.11 API Token 认证上传(--token)
登录用户可在 Web 界面创建 API Token(或由管理员用服务端命令创建,见 5.3 节),CLI 携带 --token 后上传即归属该用户,并受其用户级限额约束。用 5.2 节创建的 demo 用户令牌实测(demo 用户限额 max-ttl 7d):
plik --server http://127.0.0.1:8132 --token plik_rAXAtyDtzdyHfTuzr6MMgLUimcv6AtcnVOxy -t 24h expire.txt
实测回显(-j JSON 输出,实测首尾):
{
"id": "JVo4Qn1L6qZu3QKP",
"ttl": 86400,
...
"url": "http://127.0.0.1:8132/#/?id=JVo4Qn1L6qZu3QKP",
...
}
超出用户级限额时被拒(实测回显,-t 30d 超过 demo 用户 max-ttl 7d):
unable to create upload: 400 Bad Request : unable to create upload : invalid TTL. (maximum allowed is : 604800)
(604800 秒 = 7 天,服务端按用户限额与全局限额中较小者执行。)不带 --server 时客户端使用 ~/.plikrc 里保存的默认服务端与令牌;--login 选项可走浏览器完成服务端绑定(生成/导入令牌到 ~/.plikrc)。
4.12 JSON 输出与静默模式(-j / -q)
脚本化场景用 -j 拿结构化元数据(隐含 --quiet):
echo "plik-json-demo-2026-10-31" > json-demo.txt
plik --server http://127.0.0.1:8132 -q --json json-demo.txt
实测回显(完整输出):
{
"id": "KJYIvl6SEqloic3g",
"ttl": 2592000,
"extend_ttl": false,
"downloadDomain": "",
"comments": "",
"uploadToken": "2iwkjly4f2lkQFgMYoQLy9E0181ny9JZ",
"admin": true,
"stream": false,
"oneShot": false,
"removable": false,
"protectedByPassword": false,
"createdAt": "2026-10-31T01:16:09.067436589Z",
"expireAt": "2026-11-30T01:16:09.067436881Z",
"url": "http://127.0.0.1:8132/#/?id=KJYIvl6SEqloic3g",
"files": [
{
"id": "E0UcednPEG10ZgXq",
"fileName": "json-demo.txt",
"status": "uploaded",
"fileMd5": "c8ef5ddb522e1a4dd25636aba38640f0",
"fileType": "text/plain; charset=utf-8",
"fileSize": 26,
"isText": true,
"reference": "0",
"createdAt": "2026-10-31T01:16:09.067685149Z",
"url": "http://127.0.0.1:8132/file/KJYIvl6SEqloic3g/E0UcednPEG10ZgXq/json-demo.txt"
}
]
}
脚本从此 JSON 提取 files[].url 做直链分发,或保存 uploadToken 供后续管理该上传。plik --mcp 还能把客户端包装成 Model Context Protocol 服务(stdio),供 AI 助手直接调用上传能力(--help 原文 Start MCP (Model Context Protocol) server over stdio)。
五、服务端管理命令详解(plikd)
plikd 子命令树一览(plikd --help 内容归纳,实测环境为服务端部署目录):
| 子命令 | 职能 |
|---|---|
| (无子命令) | 启动 plikd 服务 |
user create/list/show/update/delete | 用户管理 |
token create/list/delete | 用户 API 令牌管理 |
file list/show/delete | 上传文件清点、详情与删除 |
export [output-file] / import [input-file] | 元数据导出/导入(迁移与备份) |
clean | 清理过期上传与文件(正常由服务端定时任务执行) |
以下实测均在服务端部署目录执行(cd /home/plik/server),工具直读同目录 plikd.cfg 连接元数据库。
5.1 用户管理(user)
列出用户(实测回显):
./plikd user list
local:admin
创建普通用户并限额(实测回显,成功时静默返回):
./plikd user create --login demo --password q1w2e3r4 --max-file-size 100MB --max-ttl 7d
(无输出即成功;--admin 可授管理员。)查看用户详情(实测回显):
./plikd user show --login demo
{
"id": "local:demo",
"provider": "local",
"login": "demo",
"admin": false,
"maxFileSize": 100000000,
"maxUserSize": 0,
"maxTTL": 604800,
"createdAt": "2026-10-31T01:16:30.378803198Z"
}
maxFileSize/maxTTL 以秒/字节回显(100MB=100000000、7d=604800),与创建参数一致。改密/改限额用 user update --login demo --password <新口令>,删除用 user delete --login demo;外部提供方(Google/OIDC 等)的用户操作加 --provider 参数。
5.2 文件管理(file)
全量清点上传文件(实测回显节选,实测首尾):
./plikd file list
AK6uV1WfXLeGgkRd mbtW5YqhGdK7sM2E 26 B uploaded text/plain; charset=utf-8 upload-test.txt
BfBku4BvuilDAQL1 FrQTFEmqmlUrFrQ7 23 B deleted text/plain; charset=utf-8 oneshot.txt
KL4pQ0y6x2LWqGFK sDX9rrCjQjCbqY3c 21 B uploaded text/plain; charset=utf-8 pwd.txt
...
列格式:上传ID 文件ID 大小 状态 MIME 文件名(--human=false 换字节原值,--upload <ID>/--file <ID> 过滤)。查单个文件详情(实测回显):
./plikd file show --file G00ikHKmYaM4mVuR
{
"id": "G00ikHKmYaM4mVuR",
"fileName": "upload-test.txt",
"status": "uploaded",
"fileMd5": "5ae0d7ae3efe94f24dffbaa1c7e26743",
"fileType": "text/plain; charset=utf-8",
"fileSize": 26,
"isText": true,
"reference": "0",
"createdAt": "2026-10-30T09:34:56.428989129Z"
}
Upload URL : http://127.0.0.1:8080/#/?id=7pWMnyqRVFzywrCQ
File URL : http://127.0.0.1:8080/file/7pWMnyqRVFzywrCQ/G00ikHKmYaM4mVuR/upload-test.txt
删除整个上传(交互确认,实测回显;非交互脚本用 echo y | 管道喂确认):
echo y | ./plikd file delete --upload JVo4Qn1L6qZu3QKP
Do you really want to remove this upload JVo4Qn1L6qZu3QKP ? [y/N]
Upload JVo4Qn1L6qZu3QKP has been removed
[10/31/2026 01:37:14][INFO ] purged 1 deleted files
[10/31/2026 01:37:14][INFO ] Purging deleted uploads
[10/31/2026 01:37:14][INFO ] purged 1 deleted uploads
[10/31/2026 01:37:14][INFO ] Cleaning up SQL database
--file <ID> 删单文件、--all 清空全部上传(需确认,生产禁手滑)。
5.3 令牌管理(token)
为用户创建 API 令牌(实测回显):
./plikd token create --login demo --comment d1-doc-test
Token created : plik_rAXAtyDtzdyHfTuzr6MMgLUimcv6AtcnVOxy
令牌列表(实测回显):
./plikd token list --login demo
local:demo plik_rAXAtyDtzdyHfTuzr6MMgLUimcv6AtcnVOxy d1-doc-test
列格式:提供方:用户 令牌 备注。吊销用 token delete --token <令牌串>;令牌即客户端 --token 的取值(用法见 4.11 节)。认证功能关闭时创建报 Authentication is disabled ! 并退出(对应 FeatureAuthentication = disabled)。
5.4 元数据导出与导入(export / import)
导出全部元数据到文件(实测回显):
./plikd export /tmp/plik-metadata.json
Exporting metadata from sqlite3 to /tmp/plik-metadata.json
[10/31/2026 01:25:52][INFO ] exported 2 users
[10/31/2026 01:25:52][INFO ] exported 3 tokens
[10/31/2026 01:25:52][INFO ] exported 24 uploads
[10/31/2026 01:25:52][INFO ] exported 25 files
[10/31/2026 01:25:52][INFO ] exported 1 settings
导出文件为二进制序列化格式(含用户/令牌/上传/文件/设置五类对象),配合数据目录的文件内容副本即构成完整备份;目标端用 ./plikd import /tmp/plik-metadata.json 恢复(--ignore-errors 跳过冲突项继续)。跨后端迁移(如 sqlite3 → postgres)即「旧库 export + 新库 import」两步。
5.5 过期清理(clean)
./plikd clean 手动执行一次过期清理(正常情况下服务端进程内置的定时清理已自动运行——启动日志 Will clean old uploads in N seconds. 即其排程)。已在 5.2 节 file delete 的输出中可见清理动作的日志形态(purged N deleted files/uploads)。
六、注意事项
- --server 与 ~/.plikrc 的优先级:
--server显式覆盖默认服务端;长期固定服务端时用plik --login绑定或直接编辑~/.plikrc,--update-plikrc可把该文件重写为规范格式; - Stream/OneShot 的不可逆性:
-S上传方退出即传输失败重来;-o文件下载一次即物理删除,分发重要文件前先确认接收方在线; - 令牌即身份:
plik_令牌等价于用户身份,泄漏后立即用plikd token delete或 Web 界面吊销;令牌创建/删除动作建议记录台账; - 加密口令无法找回:E2EE 上传的口令/私钥只在客户端侧,服务端与运维均无法解密,口令丢失即数据不可恢复——这是特性不是缺陷;
- plikd 直连数据库:管理命令绕过 HTTP API 直接读写元数据库,请勿在服务端运行中对同一数据目录并行执行,避免 SQLite 写锁冲突;操作前用
plikd export留备份; - TTL 单位:
-t/--max-ttl等处时长统一支持30m/24h/7d后缀写法,服务端与用户级限额按秒比较,报错信息给出秒数(如2592000)。
七、常见问题(FAQ)
Q1:上传报 invalid TTL. (maximum allowed is : N) 但配置里 MaxTTL 明明够大?
当前 --token 对应用户的 max-ttl 用户级限额小于全局值(实测:全局 30d、demo 用户 7d 时 -t 30d 报 maximum allowed is : 604800)。用 plikd user update --login demo --max-ttl 30d 调大用户限额,或 -t 收敛到限额内。
Q2:curl 下载返回 404 is not available : deleted?
三种可能:OneShot 文件已被首下载消费;-r 上传被人删除;TTL 到期被清理。用 plikd file show --file <文件ID> 查状态(deleted 即已删)确认,文件物理删除后不可恢复。
Q3:--password 下载为什么返回 401?
密码保护即 HTTP Basic 认证,下载命令需要带凭据(curl -u '登录名:口令',见 4.4 节实测);Web 界面下载则弹出浏览器原生认证框。
Q4:客户端想固定服务端与默认选项?
~/.plikrc 保存默认服务端地址、令牌与 Archive/Encryption 默认项(-a/-s 即「用 .plikrc 默认设置」)。plik --login 走浏览器绑定服务端并导入令牌;无图形环境的机器直接手工创建该文件。
Q5:plikd 命令报连不上数据库/找不到配置?
plikd 以「当前目录的 plikd.cfg」为配置源,务必在服务端部署目录执行(或显式传配置路径,随服务端启动方式一致);SQLite 场景还需确认对数据目录的写权限(排障见部署指南 FAQ Q1)。
八、参考链接
- Plik 官方 CLI 客户端文档:https://root-gg.github.io/plik/features/cli-client.html
- GitHub Releases(1.4.3 各平台客户端与 sha256):https://github.com/root-gg/plik/releases/tag/1.4.3
- age 加密工具:https://github.com/FiloSottile/age
- 本系列认知篇:《Plik 介绍与选型指南》
- 本系列部署篇:《Plik 1.4.3 Docker Compose 部署指南》
- 本系列配置篇:《Plik 1.4.3 配置参数详解》