tl;dr
termux
App unter Android installieren- App starten openssh installieren und
sshd
aufrufen - am PC
adb
mit Port-forwarding aktivieren rsync
am PC aufrufen
Warum
Vor vielen Jahren (7.5 um genau zu sein) habe ich ein Blogpost zum Thema Datentransfer zwischen Android und PC
geschrieben. Ich bin damals schier verzweifelt mit den nicht vorhandenen
Möglichkeiten Daten effizient zwischen Android und meinem Linux PC zu
transferieren (adb pull
geht, kann aber keine Wildcards, ich möchte die
Möglichkeiten die rsync
bietet).
Heutzutage ist das normalerweise kein Problem mehr, denn die Daten werden ohnehin über einen Cloud-Dienst (in meinem Fall eine selbst-gehostete Nextcloud-Instanz) übertragen. Das funktioniert bei breitbandigen Internetverbindungen so gut, dass man ganz vergisst, welchen Umweg die Daten gerade nehmen.
Etwas anders sieht die Situation aus, wenn man, wie ich gerade, im Camper an einem griechischen Strand mit einem mobilen Hostspot arbeitet 😎.
Es geht doch
Zwar kann ich bei meiner aktuellen, von Google-Diensten befreiten, Android
Version der e.foundation auch den Datentransfer Modus
für USB aktivieren, nur funktioniert der halt nur manchmal. Der USB-Port auf
der rechten Seite meines Notebooks geht öfter als der auf der linken (es sind
beide USB3). Und dann kann ich immer noch nicht rsync
.
Zum Glück gibt es termux
und das sogar ganz easy beim
F-droid Store. Die App startet ein Terminal, das auf eine echte Linux-Umgebung zugreifen kann. Mit
pkg install openssh
wird ein SSH-Server installiert und mit
$ sshd -p 8090
kann man selbigen auf Port 8090 (als Beispiel) starten.
Für die weiteren Schritte sollten Sie die Entwickler-Optionen unter Android
aktivieren
und die Android-Debug-Bridge (adb
) auf Ihrem PC installiert haben.
Mit dem Kommando
adb -d forward tcp:8090 tcp:8090
verbinden Sie den Port 8090 auf Ihrem Computer mit dem Port 8090 auf dem durch
adb
(und USB) verbundenen Android Gerät. Für eine erfolgreichen
SSH-Verbindung müssen Sie jetzt nur noch das Benutzer-Passwort am Android Gerät
setzen (passwd
in der Shell aufrufen), oder einen SSH-Public-Key hinterlegen (in der Datei ~/.ssh/authorized_keys
).
Dann reicht der Aufruf:
ssh -p 8090 localhost
um die Verbindung herzustellen.
Ein Eintrag in der lokalen ~/.ssh/config
Datei hilft, um die Syntax beim
rsync-Kommando zu vereinfachen. Für mein Fairphone habe ich fp3
als Hostnamen
gewählt:
Host fp3
Hostname localhost
Port 8090
Und nachdem ich den Public-Key meines Yubikeys am Handy hinterlegt habe, kann ich jetzt ganz locker rsync
machen:
rsync -av fp3:storage/dcim/Camera/IMG_202111\* .
Und das kopiert alle Fotos aus dem aktuellen Monat (November 2021) in den
aktuellen Ordner (der storage
-Ordner existiert, weil ich zuvor in der termux-Shell das Kommando termux-setup-storage ausgeführt habe).