---
title: Using rsync on Android to syncronise my Music library
author: Never
email: n.gude@posteo.de
date: 2026-01-12
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/
```
