Way to sync user Docs and AppData\Roaming (no domain)?

I have two workstations I’d like to keep in sync. I’ve been using Resilio for my Documents folder, but keeping up with program configurations (AppData\Roaming) is a chore.

Does anyone have a good solution for this?

1 Like

Sync thing + Tailscale is a pretty popular solution for something like this.

Syncthing manual said not to use it on AppData.

1 Like

Ah, well then you could try rsync in a cron job

On Windows?

I haven’t used rsync, but if I set up a Linux middleman will the sync be bi-directional? I could have a job run during the time I normally commute to and from work.

I believe there is a windows version of rsync you can install.

How precise should this sync be?
If syncing directly from a folder is not recommended then maybe just make xyz time copies of the folder to another location and then sync there.

Nextcloud also has/had a directory synchronization application for Windows.

P.S
Is this supposed to be sync to live or backup?

Is it bi-directional?

Live.

As an example, I’ll change a toolbar layout on one machine and forget to manually export settings. On the other machine, I don’t have the export so I recreate it by hand (rather than drive home) and end up making it slightly different. Now I have two similar behaviors, but they’re just different enough to be a headache.

You would have each machine copying to the other, but it would be on a schedule not exactly live. Did the syncthing docs say why they didn’t recommend it? I have a feeling their reasoning would be the same reason you wouldn’t want to do it regardless of the service used.

The example they gave was the FireFox db in AppData\Roaming. It would corrupt the db over time.

Scheduled jobs would work. I meant “Live” as in two workstations, not one workstation and one NAS. I’m only on one or the other machine and the times are fairly uniform. In the morning I could sync from home → work and in the evening do work → home.

Then rsync on a schedule would likely be fine.

Well, rsync won’t work because it has to be on both machines and there isn’t a Win10 version.

And robocopy /MIR is far from perfect. Running on a schedule, if I stay home sick one day then the evening push from work → home will overwrite anything I did that day.

You would think somebody has figured out a way to do this. I really hate Windows sometimes.

This would likely apply to any other sync program as well. The only “safe” way to sync the entirety of appdata would be to have the user logged off, and have no tasks or anything running.

1 Like

It’s logically straightforward for this use case (single user). To sync two clients, each client needs to journal changes. Then during sync, each side would apply the other’s changes in order.

It’s just a thought but with my apps they have the option for changing the file path of customisations. I change this to outside the usual program files folder, normally in the root. I wonder if this would let SyncThing work without issue?

After more digging, the limiting factor is that neither Resilio nor Syncthing supports symlinks. That would be an easy fix.

Setting custom folder locations is a losing battle. You can tell Windows a user download folder is on D:\Downloads, and some rogue piece of code will go to C:\Users<>\Downloads. Even if a program gives you an option, there’s always a chance one part of the code base predates that being a setting and writes it to default.

Well that’s annoying, sorry to hear that and sorry my comment didn’t help.

You can try an experiment with Desktop and mobile synchronization — Nextcloud latest User Manual latest documentation

But it won’t solve the general problem of losing data integrity at some point…

If both PCs are running at the same time I can see potential problems.

It will also be a problem to keep both machines in the correct data state.
If the master makes large changes and the slave makes very small but important changes, they will be saved and sync with master will overwrite them.
Another thing is to perform a sync on the master while the application is running… there is a theoretically high chance that at the time of sync there will be an incomplete state of the data and they will be incorrectly replicated, which will result in data integrity.

Probably one of the reasons why it is not recommended to touch this location in the sync process.

The situation would be a little different when we are talking about making a quick copy on a frozen OS to an OS that is not active. Then we have 100% certainty of data integrity.

Acronis theoretically has this sync feature but I’ve never tested how good it is.
Another approach is to use frequent backups on the master. Acronis has a non-stop mode, which means it makes backups every 5 minutes. Upload it to some server on the LAN where the other machine can download it.
Only data recovery on the slave will have to be manual unfortunately and is not a live solution. :wink:

Theoretically, both machines can back up independently, and you manually choose which and what state you want to back up to.

One option is to use a cloud-based synchronization service such as Dropbox, Google Drive, or Microsoft OneDrive. These services allow you to store your configuration files in the cloud and then access them from any device with an internet connection.

Another option is to use a dedicated synchronization tool such as ShareGate and Gs Richcopy 360, these tools allow you to sync files between two workstations without using a cloud-based service.

Hope this helps