I have a Windows laptop and an Ubuntu netbook, and it is a constant struggle to keep data in sync between both of them.
So, I started researching on the free software that can keep files and folders in sync between Windows and Linux computers. Most of the results that came use some sort of shell scripting, which isn’t something I prefer. I was looking for simple GUI tools to sync Linux and Windows computer.
After some time, I was able to find some good options. All these options are completely free, and simple to setup.
1) Dropbox
I am sure if anyone has heard about Dropbox, they would have immediately guessed that an easy solution to my problem is Dropbox. Dropbox installs on both Windows as well as Linux computer. After that, you create a Dropbox folder on both the computers. Dropbox will monitor any changes that happen to that folder in real time, and will sync it with Dropbox folder on other computer. Dropbox supports Mac as well, so you can actually keep data in sync between Linux, Windows, and Mac.
Dropbox doesn’t requires both the computers to be online at the same time. Dropbox first backs data to its own server, and from there it propagates changes to other computers. So, if you work on a Windows computer in office during day, Dropbox will keep backing up your data to its own server. When you go home and start your Linux computer, Dropbox will fetch the changes from the server, and will sync the data on your Linux computer.
Dropbox runs in the background, and you don’t have to do anything once you have installed it. It will automatically take care of syncing data between Windows and Linux computer for you.
The only limitation with Dropbox is that free version supports only 2GB of data. You can get more free space by referring your friends (250 MB per friend). (If you use the link above to sign up with Dropbox, you will automatically get 250MB additional free, and I will get the same).
2) SpiderOak
SpiderOak is a lot similar to Dropbox (we call it one of the dropbox alternatives). This can also sync data between Windows and Linux computers, and also stores a copy of the data online. Both the computers do not need to be online at the same time.
SpiderOak syncs data in a completely secure manner. The free version of SpiderOak comes with 2GB of free space. However, SpiderOak measures space after compressing data, so you might potentially be able to sync more data with SpiderOak. On the other hand, SpiderOak does not gives option of getting extra free space by referring friends.
As is with Dropbox, SpiderOak also supports Mac too.
Both Dropbox and SpiderOak provide cloud based file syncing, so that your Windows and Linux computer do not need to be online at same time. The tools that I will mention below need both the computers to be online at same time (or, using a server to provide temporary storage.)
3) Unison File Synchronizer
Unison File Synchronizer is an intelligent file synchronization software that can keep data in sync between Windows and Linux computer. Unison File Synchronizer can update changes done on Windows computer to your Linux computer, and vice versa.
Unison makes use of intelligent algorithm to find the changes that needs to be synced. If a file is present on one computer, and not present on other, it is copied to other computer. In case there is a conflict that Unison cannot resolve, it asks you for resolution.
Unison needs both the computers to be online at the same time. Or, you can use an external drive to act as an intermediary. So, you can first sync your Windows computer to your external hard drive or USB stick, and then sync your Linux computer with that.
Unison has a GUI based interface, but still it might not be very intuitive to setup Unison on multiple computers.
Here are two good resources that explain how to setup Unison:
4) JFileSync
JFileSync stands for Java File Synchronization. JFileSync is a file synchronization software made in Java to sync files between multiple computers. JFileSync is truly cross platform, and can sync data across both Windows and Linux computer.
JFileSync comes with a nice GUI that makes it easier to setup. The library is around just 200 KB, and it does not needs any other additional software to work.
To sync data between Windows and Linux computer using JFileSync, you define the folders of both the computers as Sync targets. JFileSync will then do a comparison between them, and start the sync process.
JFileSync also requires both the computers to be online at same time, or you can use an external drive as an intermediary.
I went through JFileSync documentation, and it looks quite simple to setup. However, I did not get a chance to test it myself, so I am listing it at fourth position. If you have tried JFileSync, do share your feedback in comments section.
If you just want to sync data between multiple computers running Windows, you can try easier options like Live Mesh, and Microsoft Sync.