feat: --repair 校验发现问题提示重传 + 各等级进度修复

This commit is contained in:
AskaEth committed 2026-08-22 15:42:15 +08:00
1 parent 742cbabde6
commit 4defbf8b1e
3 files changed
+252 -47

No files matched your search

+7
View File
@@ -63,6 +63,7 @@ help / clear / quit
| `--verify` | 关 | 传输完成后校验(等级由 `--verify-level` 决定) |
| `--verify-level` | slow | 校验等级: ultrafast/fast/normal/slow/full |
| `--check-only` | 关 | 纯校验模式: 不传输, 仅按等级校验源/目标 |
| `--repair` | 关 | 校验发现问题后提示并重传问题文件(先删目标避免增量盲区) |
| `--retry` | 0 | 失败自动补传轮数, **-1 = 无限重试** |
| `--smart-resume` | 关 | 智能续传: 校验目标最新N个文件, 损坏删除后从断点续传 |
| `--smart-check` | 5 | 智能续传校验文件数 (<=100MB 全校验, 更大只查大小) |
@@ -118,8 +119,14 @@ N 调大(如 50)也能实时看到校验进展。
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/
# 校验发现问题自动提示重传(--repair)
python3 transfer.py --mode cli --check-only --verify-level slow --repair /src/ /dst/
```
> `--repair`: 校验发现问题文件后提示 [y/N],确认后用 rsync 重传问题文件。
> 重传前**先删除目标问题文件**——避免 rsync 按 size+mtime 判定相同而跳过
> (内容损坏但大小/时间戳一致的场景,增量检测有盲区)。
> rsync 原子写(临时文件+rename)保证掉卡不会产生半截损坏的正式文件,
> 残留临时文件由补传后的 `--verify` 流程发现处理。