feat: 校验五档等级 (ultrafast/fast/normal/slow/full) + --check-only 纯校验模式

This commit is contained in:
AskaEth committed 2026-08-22 15:31:16 +08:00
1 parent 2e505f6ea3
commit fb59000fd1
3 files changed
+278 -10

No files matched your search

+23 -1
View File
@@ -60,7 +60,9 @@ help / clear / quit
| `--transfers` | 4 | rclone 并行传输数 |
| `--resume` / `--no-resume` | 开 | rsync 断点续传 |
| `--checksum` | 关 | rsync 校验模式 |
| `--verify` | 关 | 完成后校验(rsync -c dry-run, 0 差异=一致) |
| `--verify` | 关 | 传输完成后校验(等级由 `--verify-level` 决定) |
| `--verify-level` | slow | 校验等级: ultrafast/fast/normal/slow/full |
| `--check-only` | 关 | 纯校验模式: 不传输, 仅按等级校验源/目标 |
| `--retry` | 0 | 失败自动补传轮数, **-1 = 无限重试** |
| `--smart-resume` | 关 | 智能续传: 校验目标最新N个文件, 损坏删除后从断点续传 |
| `--smart-check` | 5 | 智能续传校验文件数 (<=100MB 全校验, 更大只查大小) |
@@ -91,6 +93,26 @@ help / clear / quit
校验过程有**进度条**(总进度条复用)+ **单文件日志**(`校验 i/N: 文件名 ✓/✘ 损坏`),
N 调大(如 50)也能实时看到校验进展。
### 校验等级(`--verify-level`)
| 等级 | 校验内容 | 188GB 耗时 | 适用 |
|---|---|---|---|
| `ultrafast` | 仅文件大小 | 秒级 | 快速健康检查 |
| `fast` | 大小+mtime | ~1 分钟 | 常规检查 |
| `normal` | 大小+mtime+最新N个md5 | 分钟级 | 兼顾速度与深度 |
| `slow` | 全部文件 md5 | 40-60 分钟 | 全量可靠(默认) |
| `full` | 全部md5+文件数对比 | 最慢 | 终极确认 |
**纯校验模式(`--check-only`)**: 不传输,只按等级校验源/目标一致性,
用于传输中断后快速确认已传数据是否完好:
```bash
# 快速检查已传数据(秒级)
python3 transfer.py --mode cli --check-only --verify-level ultrafast /src/ /dst/
# 全量校验已传数据(全部 md5)
python3 transfer.py --mode cli --check-only --verify-level slow /src/ /dst/
```
> rsync 原子写(临时文件+rename)保证掉卡不会产生半截损坏的正式文件,
> 残留临时文件由补传后的 `--verify` 流程发现处理。