diff --git a/transfer.py b/transfer.py index d074e35..721faf4 100644 --- a/transfer.py +++ b/transfer.py @@ -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: