fix: rsync 进度帧实时输出(stdbuf行缓冲) + 普通日志行推送TUI日志栏
This commit is contained in:
1 parent
b204de7aeb
commit
60cbf5a206
1 file changed
+10
-4
+10
-4
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user