In the previous post, we saw how to configure a SSH connection between our PC and mobile. Go check that out, if you landed here without checking that that.
In this post, we will see how we can configure rsync to sync our music files between our devices, and finally listen to some music 🎶🎶
What is Rsync??
Rsync is a command-line tool that enables syncing files and directories between the local and remote system. It's highly flexible and it's similar to scp, if you worked on scp before, the rsync is just scp on steroids.
Rsync needs a transporting mechanism to sync files between two systems, and that's why we had SSH configured between our devices on the previous post.
Installing Rsync
Rsync comes pre-installed on most Linux distributions and macOS. For Windows, you can use WSL (Windows Subsystem for Linux) or install Cygwin.
For Android, open Termux and run
pkg install rsync
Verify the installation with:
rsync --version
Create a common directory
We are going to setup a common directory which will hold all our music files, subtitles etc.. on our device.
Create a Music directory in the home folder on both devices. If it doesn't exist, create it with the following commands:
On PC
cd ~ && mkdir Music
On Mobile (on Termux):
cd storage
mkdir Music
Now, any new MP3 files added to the Music directory on one device can be synced to the other device seamlessly
Let's Rsync!
Let's have a look at the files we are syncing
And my Music folder on my mobile is empty.
On PC
rsync -avP -e 'ssh -p 8022' ~/Music/ <Mobile_username>@<Mobile_IPaddress>:storage/Music/
Let's break that down!
a
- Enables archive mode. It is necessary for syncing directories recursively.v
- Enables verbose mode. Does some helpful logging if something goes wrong or right.P
- It enables both the progress and partial flag. This progress flag provides a progress bar for the transfers, and the partial flag allows you to resume interrupted transfers.e
- Specifies the SSH port to which we are connecting too. The default port that termux uses is 8022.
We used our mobile username and the IP address which we have acquired through termux. If you are clueless, then please read the previous post.
Notice the trailing slash in the Music directory. The trailing slash signifies the content of the Music folder. If we don't specifiy the trailing slash then it would create a heirarchy in our mobile like Music/Music
You will see the progress of each file incremently and all the files would be transfered to our mobile's Music directory.
If you want to transfer the files from your mobile to your PC,
rsync -avP storage/Music/ <PC_username>@<PC_IPaddress>:Music/
We had our host aliases configured on our previous post. So we can just do
rsync -avP ~/Music/ myGoodPhone:storage/Music/
rsync -avP storage/Music/ myGoodPC:Music/
And that is how you get things done.
Conclusion
Syncing music files over SSH using Rsync might sounds like an overkill, because it is an overkill. Rsync's has a lot of use cases, and it's widely used in automated incremental backups, synchronizing directories between servers etc.. I hope you guys found this series informative
See ya!
Cover image by Namroud Gorguis on Unsplash
Top comments (2)
@lovelindhoni
That's great tutorial! I followed both part step by step (excpet passwordless setup) but I am doing on windows hence for rsync using cygwin terminal and when fired dry run command from Windows to Andriod getting below error.
I made sure on both side SSH running , rsych has same version. What do you suggest
Hey @mayureshkumbhar, thanks for checking out this series—it really means a lot to me.
There have been some known issues with rsync’s Cygwin port that are similar to this. I’d recommend using WSL if you can.