Ever since I started down the self-hosting rabbit hole one issue I’ve been constantly annoyed with is transferring files between machines. Especially files which I am currently working on and that I want to periodically transfer to a specific remote location.
Rsync has been my go to tool for file transfers and backups but I absolutely hate making commands for it. I was getting lost in a wall of text with all my rsync aliases.
The script I created helps me organize those commands by placing all the information for an rsync command into an easier to read dot-file. The script will read the dot-file, update the rsync command and run it. It’s also set up to preview file transfers with rsync’s dry run option. I’ve also added a few other features to make the script more flexible including being able to quickly backup a directory that I’m currently working in.
For self-hosting, I find working with files a bit easier to organize than a text full of aliases although I can see it easy to get overwhelmed with dot-files if some people aren’t organized.
I’ve also made it as POSIX shell friendly as possible. I know a couple things I did aren’t fully POSIX compliant currently but I that’s something to work towards. This is also the first programming thing I ever completed so I’m quite happy with how it turned out.
If at least one other person finds this script useful, that would be pretty neat :)
Using
sudo
in all of your examples is a red flag that might deter people.I took sudo out of the examples and disabled it by default within the script. I still have a personal use for it.
I keep a local backup on each device then transfer that backup to my desktop. Rsync requires root access to transfer files or directories with certain attributes over ssh. Otherwise the backup copy to my desktop is incomplete.
Fortunately I already coded in a toggle for requesting root since Termux on Android has no root by default. I just won’t note that in the readme file. That can be left for anyone who cares to read the code itself.