out-format in one line

Wayne Davison wayne at opencoder.net
Sat Jan 28 18:37:28 UTC 2023


On Sat, Jan 28, 2023 at 1:22 AM Michael Homscheidt wrote:

> I use rsync with the option --out-format '%o %n‘ but want to have the
> contents of the mesages to be overwritten.


You can't make rsync do that directly, but you can filter the output.  For
instance, the following python3 script runs rsync with an --out-format that
starts with "<>" and filters the combined stdout + stderr output, putting
repeated "<>" lines over the top of each other (using ANSII reverse-index &
clear-to-EOL escape sequences). It also allows error/info lines to remain
visible: they do not overwrite the prior merged line and a new merged line
starts below it. If a line is too long to fit on a single terminal line
then there will be some downward movement, but that could be improved
should you desire to do so.

Name this script something like "solo-rsync":

#!/usr/bin/python3
import sys, subprocess
                                                    rsync =
subprocess.Popen(
        ['rsync', '--outbuf=line',
            '--out-format=<>%o %n',
            *sys.argv[1:]],
        stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
        encoding='UTF-8')
folding = False
for line in rsync.stdout:
    if line.startswith('<>'):
        if folding:
            print("\033[A" + line[2:].rstrip("\n") + "\033[K")
        else:
            print(line[2:], end='')
            folding = True
    else:
        print(line, end='')
        folding = False
    sys.stdout.flush()

..wayne..
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.samba.org/pipermail/rsync/attachments/20230128/d3a98c22/attachment.htm>


More information about the rsync mailing list