Problem mit rsync-Option --server

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Ulidor
Beiträge: 557
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Problem mit rsync-Option --server

Beitrag von Ulidor » 26.08.2018 09:30:30

Von meinem gerooteten Smartphone möchte ich prinzipiell alle Systemdateien und -verzeichnisse mit rsync auf meinen Stretch-PC kopieren können. Ich habe hier (in der Antwort) eine Testzeile dafür gefunden. Die habe ich an meine Verhältnisse angepasst, aber sie funktioniert nicht, wenn ich sie von meinem PC aus aufrufe:

Code: Alles auswählen

$ rsync -a --rsync-path="su -c /data/user/0/com.arachnoid.sshelper/bin/rsync" -e 'ssh -p 2222' root@192.168.1.14:/data/data/com.duckduckgo.mobile.android /tmp/
SSHelper Version 11.4 Copyright 2017, P. Lutus
Default password is "admin" (recommend: change it)
su: unrecognized option `--server'

Usage: su [options] [--] [-] [LOGIN] [--] [args...]

Options:
  --daemon                      start the su daemon agent
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                pretend the shell to be a login shell
  -m, -p,
  --preserve-environment        do not change environment variables
  -s, --shell SHELL             use SHELL instead of the default /system/bin/sh
  -v, --version                 display version number and exit
  -V                            display version code and exit,
                                this is used almost exclusively by Superuser.apk
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.2]
Offensichtlich hängt mein rsync noch die Option „--server" an den rsync-Aufruf auf dem Smartphone an. Ich weiß nicht, ob das überhaupt sein muss. Jedenfalls so wie die Zeile geschrieben ist, bekommt nicht das in der Smartphone-Shell aufgerufene rsync die Option, sondern su, was damit natürlich nichts anfangen kann.

Ich könnte ein Skript auf dem Smartphone installieren, das anstelle von su aufgerufen wird und in dem dann die Option passend verarbeitet wird. Aber das ist sehr unschön und unkomfortabel. Ich bin mir sicher, dass die Bash das auch innerhalb der Kommandozeile kann.

Wie muss ich die Kommandozeile umschreiben, damit die Option „--server" an das über su aufgerufene rsync geht und nicht an su selbst?
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Benutzeravatar
Ulidor
Beiträge: 557
Registriert: 19.12.2004 21:54:40
Wohnort: Bielefeld

Re: Problem mit rsync-Option --server

Beitrag von Ulidor » 26.08.2018 22:49:02

Das Problem mit dem von rsync zusätzlich übergebenen Parameter habe ich gelöst. Es sind sogar zwei Parameter, --server und --sender:

Code: Alles auswählen

rsync -a --rsync-path='funct(){ su -c "/data/user/0/com.arachnoid.sshelper/bin/rsync $1 $2"; }; funct' -e 'ssh -p 2222' root@192.168.1.14:/data/data/com.duckduckgo.mobile.android /tmp/
Allerdings bricht rsync mit Nutzungshinweisen aber ohne Fehlermeldung ab. :(

BTW: Wenn ich bei dem obigen Konstrukt die Positionsparameter $1 und $2 durch $@ ersetze, wird nur der erste eingefügt und der zweite geht dann wieder an su. Könnte mir jemand erklären, warum das so ist?
Was erhält man, wenn man einen Windows-PC abschaltet? – Ausgemachten Blödsinn.

Antworten