73278667e0
A→B SFTP 中继与一键 tar 打包 curl 拉取;含审计修复与 18 项单测。
1.6 KiB
1.6 KiB
跨服务器文件传输
日期
2026-06-21
摘要
文件管理器新增 A→B 跨机传输:直传(中心 SFTP 中继,单文件 ≤500MB)与 打包投递(源机 tar.gz → 签名下载 URL → 目标机 curl + 可选解压,一键完成)。
动机
同机剪贴板无法跨服务器;运维需对标宝塔「发送到服务器 / 打包下载」能力,避免本地下载再上传。
涉及文件
server/application/services/server_file_transfer_service.py— 直传、打包、投递编排server/infrastructure/redis/transfer_package_store.py— 下载 token 元数据server/api/sync_v2.py—server-transfer、server-transfer/deliver、transfer-downloadserver/api/schemas.py— 请求模型server/api/auth_jwt.py— 下载端点 JWT 豁免frontend/src/composables/files/useFilesActions.ts— 对话框与 API 调用frontend/src/components/files/FilesDialogs.vue、FilesToolbar.vue、FilesList.vuefrontend/src/utils/auditLabels.tstests/test_server_file_transfer.pydocs/design/specs/2026-06-21-server-file-transfer-design.md
迁移 / 重启
- 需重启 API(新路由 + Redis key
transfer:pkg:*) - 无需 DB 迁移
- 前端需
vite build后部署web/app/
验证
pytest tests/test_server_file_transfer.py -q
cd frontend && npm run type-check
bash scripts/local_verify.sh
- 文件页选中项 →「发送到其他服务器」→ 直传 / 打包投递
GET /api/sync/transfer-download/{token}无 JWT 可 curl;过期 404- 审计动作:
server_file_relay、server_file_deliver