Looking for a simple device synchronization tool

As the title suggests i am looking to set up synchronization between multiple computers. In this case one desktop and one laptop PC; both running Ubuntu 24.04.

I would like to be able to sync either the entire home directory,

/home/user

or a select few important subdirectories between the two computers.

/home/user/[some-dir]

It seems to me that the majority opinion ont this topic is that Rsync with ssh is the go to method for simple device to device sync. I have two questions about setting up Rsync though.

  1. Is there a way where i can trigger a sync of a directory when a PC joins a specific Wifi network?

  2. Are there any good/recommended graphical front ends for Rsync?

β€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒSβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒYβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒCβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒTβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒHβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒIβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒGβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ β€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒSβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒYβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒCβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒTβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒHβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒIβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒGβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ β€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒSβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒYβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒCβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒTβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒHβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒIβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒGβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ
β€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒSβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒYβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒCβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒTβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒHβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒIβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒGβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ
β€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒSβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒYβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒCβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒTβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒHβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒIβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒNβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€ŒGβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ

Have you yet tried Syncthing?

4 Likes

Yes, and it may work for this situation although in the past i have had issues with it improperly overwriting files, or failing to sync because i configured the β€œmaster” PC improperly. If i remember correctly i made both systems β€œmaster” causing them to overwrite some contents from the partner.

1 Like

Bruh… :rofl:

Why wont you relax with the coffee today? Or better yet, a few days… :laughing:


I have heard people recommend SeaFile as an alternative to Syncthing but I haven’t really tried it.

I will say I am not against giving syncthing another chance. I am just not sure syncthing is best tool for my use case.

Yes, create a cronjob for it to check at regularly given intervals on what SSID your system is connected to; alternatively, you can make a system service that can take care of this for you.

For example, I have it configured to trigger when I run a pip installβ€”-β€” command in a project directory. It gets appended to my local command history for that folder. It triggers rsync on a different machine to check for dependency conflicts between package versions.

2 Likes

Do you have a server that is guaranteed to be on 24/7? If not, using 3rd party cloud combined with encryption such as Cryptomator could work, and it would be a bit more reliable. Using Syncthing for a big folder without a node that runs 24/7 is somewhat tricky in my opinion. Conflict files everywhere.

I don’t have a server on 24/7. I had thought of using a 3rd party cloud for this; however the files i need to transfer are large (some 20 gigabytes plus) and the main purpose of setting up synchronization is to ensure parity between the laptop and desktop before going to an area without reliable wifi.

Since the area i need my laptop in doesn’t have (reliable) wifi i would not be able to upload/download files for sync; thereby defeating the convenience of the cloud service.

Edit: just to clarify, the reason rsync is being considered is because it would allow me to automate the process of syncing updated files from my desktop PC to my laptop before I leave; and syncing updated files from the laptop back to the desktop once i return. As mentioned by @water this could be done by detecting when the laptop joins a certain wifi network

Syncthing is discontinued.

The fork has major issues due to raising the target API level without testing:

@Lukas the OP is talking about desktop usage, only the mobile app is discontinued.

I’ve been using Syncthing for my desktop & laptop since 2015 without any real issues, Syncthing is one of the absolute best at what it does and truly β€œjust works”.

2 Likes

OP will need to consider how the first sync happens, given that there will likely be user data and dot files for that machine that will imminently be set up. Something like logging in as a second user that has admin access and moving those files in addition to setting up the sync.

Sorry, but i am not sure i understand. Are you saying that if syncing the entire home directory then i would need to set up a non user admin account to perform the first sync?

I do know that the home directory has a lot of config files (in ~/.config and other β€œdotfiles”). Though my intention was to perform the initial copy of these dotfiles as a one time manual copy; then use sync tools (Rsync or Syncthing) for automated syncing of specific subdirectories which i currently frequently need to manually copy between devices.

Let’s say you use KDE or XFCE or Gnome on your computers. While you are logged in, there could be open files related to the session. Or unique to that session.

You’d set up syncthing on that to either merge or be overwritten on the first sync from the master. At least, I’d recommend logging out and back in. You may need your bootable ISO in case of differences (video comes to mind) prevent a normal start up.

My idea was to have syncthing get set up on an account from a different user name than the one to be sync’d, so at least that account to sync wouldn’t be active/running.

Something to think about. Do check that you can boot off your ISO USB in case of recovery is needed.

1 Like

Ah, okay. That’s definitely something to think about. I will say I mainly use SwayWM (and occasionally Gnome). I do also have an ISO USB for recovery if needed.

1 Like

Are you sure it’s Syncthing that you’re thinking about? I’m asking, because there is no β€œmaster” setting in Syncthing. It’s a peer-to-peer model, where all devices are equal.

It was syncthing i was thinking about. Though i was misremembering. I just installed syncthing on a test system and will be running some tests to see if it will work for this situation.

I believe, the reason i was saying there was a misconfiguration of the β€œmaster PC” is because a couple years ago (when i first tried syncthing) i had two systems. One system i did the majority of work on and prioritized it (mentally) higher than the second system which was mostly just used as a mobile copy of the first system. Looking back i probably should have just made the β€œprimary PC” in that setup read only in syncthing.

The reason i didn’t make it read only was i occasionally did make changes from the secondary PC. In the new setup changes are about split 70/30 in favor of the desktop.

Bottom line i just want to avoid potential data loss from syncthing overwriting existing directories with an outdated version.

Yeah, it’s clear now :slight_smile:. One problem with Syncthing is that there are some users who think about it as a client-server model, which it is not, and they often experience various problems, including potential data loss, because of that.

Synching has also improved massively in the last few years, especially when it comes to various bug fixes, so I sincerely hope that you will have a much better experience if you device to try it out again.

On the last comment, I regularly do backups of my data that is being sync’d. I’ve only had collisions when it was my fault - ie, I thought one device was up to date and forgot to start Syncthing, such that I had changes in two places.