7b11c33d0c3a98e237f75d6de4df69d179a6268f
TransferSu - 统一文件传输工具
基于 rsync / rclone / pv+tar 的统一拷贝管理工具,CLI/TUI 双模式,实时日志轮转。
特性
- 多后端: rsync(推荐, 断点续传)/ rclone(并行)/ pv+tar(零依赖)
- CLI/TUI 双模式: 未显式
--mode cli时默认 TUI 启动 - TUI 四栏布局:
- 上栏: 总进度条 + 单文件进度条
- 中栏: 速度曲线可视化(最近 80 秒采样)
- 下栏: 文件日志 + 错误日志 双面板
- 底部: 交互输入栏(可空启动后设定任务)
- 实时日志: 写入本地目录, 滚动保留最近 N 个(默认 20), 文件名含纳秒时间戳
- 可控性: 限速 / 断点续传 / 校验 / 并行数 全部可配
安装
pip install -i https://mirrors.aliyun.com/pypi/simple/ pytest textual
用法
# TUI 模式 (默认): 空启动后在底部输入栏设定任务
python3 transfer.py
# TUI 模式带预设任务
python3 transfer.py /src /dst --bwlimit 30000
# CLI 模式 (显式指定)
python3 transfer.py --mode cli /src/ /dst/ --backend rclone --bwlimit 8M
TUI 输入栏命令
/src /dst --backend rclone --bwlimit 8M --transfers 4 # 启动传输任务
help # 帮助
clear # 清空日志面板
quit # 退出
参数
| 参数 | 默认 | 说明 |
|---|---|---|
--backend |
rsync | rsync / rclone / tar |
--bwlimit |
30000 | 限速 (rsync: KB/s, rclone: 如 8M) |
--transfers |
4 | rclone 并行传输数 |
--resume / --no-resume |
开 | rsync 断点续传 |
--checksum |
关 | rsync 校验模式 |
--verify |
关 | 完成后校验 |
--mode |
tui | cli / tui |
--keep-logs |
20 | 日志滚动保留数 |
--logdir |
~/logs | 日志目录 |
日志
- 目录:
--logdir指定(默认~/logs) - 文件名:
{时间戳}_{后端}_{源名}.log(时间戳开头保证排序即时间序) - 滚动: 超过
--keep-logs个自动删除最旧
测试
python3 -m pytest tests/ -q
冲突策略(覆盖/跳过)
传输前可用参数预设策略,或中途逐项决策:
| 参数 | 行为 |
|---|---|
--overwrite |
覆盖已存在文件(默认) |
--skip |
跳过已存在文件(--ignore-existing) |
--ask |
逐项询问(扫描冲突后交互) |
ask 交互选项(CLI 与 TUI 一致):
y = 覆盖当前项 n = 跳过当前项
a = 全部覆盖 s = 全部跳过
q = 中止传输
- CLI:预扫描后逐项提示,输入 y/n/a/s/q
- TUI:扫描完成后在底部输入栏逐项交互(stats 栏显示当前冲突文件)
- 仅当前/后续同步:y/n 只作用于当前文件;a/s 一次决定后续所有冲突
- rsync 覆盖场景自动禁用
--append(追加模式会阻止重写),保留--partial - rclone 的
--ask使用原生--interactive(y/n/s);tar 后端不支持 ask/skip
# CLI 示例: ask 交互
python3 transfer.py --mode cli --policy ask /src/ /dst/
# TUI 输入栏示例
/src /dst --policy ask
/src /dst --skip
Languages
Python
96.7%
Shell
3.3%