nevereverever.de/articles/rsync-android.md
2026-01-28 14:10:27 +01:00

127 lines
3 KiB
Markdown

---
title: Using rsync on Android to syncronise my Music library
author: Never
date: 12.01.2026
summary: As Spotify is getting enshittified by capitalism, keeping a music library
is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.
---
# Setup Termux
Install Termux using F-Droid.
Update software repos.
```sh
pkg update
```
Grant file access permissions using.
```sh
termux-setup-storage
```
# Establishing an ssh connection
If network (such as eduroam) is blocking ssh trafic between machines, open a Wi-Fi Hotspot
on your Linux machine and connect the Android device to it before using `rsync` or `ssh`.
## Configuring Android
Install the openssh server on Termux.
```sh
pkg install openssh
```
Start the ssh server daemon.
```sh
sshd
```
Get the ip address of the Android machine (in the Hotspot).
```sh
ifconfig
```
```
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
rmnet0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1280
inet 10.200.157.166 netmask 255.255.255.0 destination 10.200.157.166
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.42.0.200 netmask 255.255.255.0 broadcast 10.42.0.210
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
```
In this case 10.42.0.200.
The ssh server should now be running and listening on port 8022.
You can check by running
```sh
nmap -Pn <ip_address>
```
For me `<ip_address>` whould be 10.42.0.200.
Get the username.
```sh
whoami
```
```
u0_a700
```
Set a password for this user.
```sh
passwd
```
## Connecting to Android via ssh
Make sure you have an ssh key pair on the Linux system.
If not generate one using `ssh-keygen`.
Now connect to Android by `ssh`.
```sh
ssh <username>@<ip_address> -p 8022
```
# Syncronising files with rsync
Install `rsync` on Termux and Linux.
Make sure to keep your own openssl config.
```sh
pkg install rsync
```
Now on your Linux machine, syncronise your Music library with rsync.
```sh
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
```
## Refreshing the Android MediaStore
Android uses a Database to store files. In order to play your music, this database
needs to be refreshed. This can be achieved by a reboot or by using adb to manually
refresh it.
```sh
sudo dnf install adb
```
Connect the Android device via USB and see if it is listed.
```sh
adb devices
```
If it is, restart adb in TCP mode with port 5555
```sh
adb tcpip 5555
```
Connect to the device using its <ip_address>.
```sh
adb connect <ip_address>
```
Refresh MediaStore.
```sh
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
```