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   # 启动传输任务
stop          # 停止当前任务
pause         # 暂停 (SIGSTOP)
continue      # 恢复暂停
help / clear / quit

单文件进度条显示文件计数进度(目标文件数/源文件总数,每 3 秒刷新), 大文件库下按文件粒度推进。

参数

参数 默认 说明
--backend rsync rsync / rclone / tar
--bwlimit 30000 限速 (rsync: KB/s, rclone: 如 8M)
--transfers 4 rclone 并行传输数
--resume / --no-resume 开 rsync 断点续传
--checksum 关 rsync 校验模式
--verify 关 完成后校验(rsync -c dry-run,0 差异=一致)
--retry 0 失败自动补传轮数(配合守护自动恢复设备)
--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 --retry 5 --verify /src/ /dst/

# TUI 输入栏示例
/src /dst --policy ask --retry 5 --verify
/src /dst --skip

--retry 在传输失败(掉卡等)后自动重跑补传,--verify 完成后用 rsync -c --dry-run 全量校验(无输出=源目标完全一致),适合读卡器 掉卡频繁的场景。

S
Description
一个支持多种参数设定的可视化文件复制 Python 脚本项目。
Readme MIT
376 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 96.7%
Shell 3.3%