fix: rsync 进度帧实时输出(stdbuf行缓冲) + 普通日志行推送TUI日志栏

This commit is contained in:
AskaEth committed 2026-08-22 13:40:54 +08:00
1 parent b204de7aeb
commit 60cbf5a206
1 file changed
+10 -4
+10 -4
View File
@@ -450,7 +450,11 @@ class TaskRunner:
append=(self.cfg.policy != "ask"))
if self.cfg.backend == "tar":
return ["bash", "-c", backend.build_cmd(self.cfg.source, self.cfg.dest, **kw)]
return backend.build_cmd(self.cfg.source, self.cfg.dest, **kw)
cmd = backend.build_cmd(self.cfg.source, self.cfg.dest, **kw)
if self.cfg.backend == "rsync":
# stdbuf 行缓冲: rsync progress2 帧逐行输出, 避免管道全缓冲攒帧
return ["stdbuf", "-oL"] + cmd
return cmd
# -- 输出分发
def _dispatch(self, line: str) -> None:
@@ -498,9 +502,11 @@ class TaskRunner:
self.stats.pct = pct
self._emit_stats()
return
if stripped.startswith(("./", "/", "-")) or "\t" in stripped:
pass # tar 文件条目
self.lm.write(line)
# 兜底: 普通行写日志文件 + 推送到 TUI 日志栏
if line.strip():
self.lm.write(line)
if self.on_log:
self.on_log(line)
def _merge_stats(self, st: ProgressStats) -> None:
if st.bytes_done: