Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have two virtual machines, Host OS is ESXi 3.5 and guest OS is Centos 4.6. There are two ESXi servers remotely located, each containing a Centos 4.6 virtual machine. I wish, whatever change I make in any file/folder in one virtual machine should be automatically synchronized on other remote virtual machine. The synchronization process should be automatic. It should only sync differentials, not simulate entire copy with overwrite operation. Sync should be intelligent enough to look for what has changed and what not, and should only update the changed files/folders. Further, there should be some sort of overview and selection for syncing, for example, if it shows 4 files have changed, It should be possible to sync only two files and leave other two for the time being. So, some intelligent syncing mechanism for Linux is needed.

share|improve this question
Are you sure you are not really just looking for a version control system, like Git or Mercurial? – Daniel Andersson Nov 29 '12 at 12:28

I've post a similar question here. Still no answers.

I've been trying many, but unison is the only one that really works. It can be used in headless mode with cron (automatic) or in GUI mode, the latter shows the diffs between the two directories you want to compare.

It tends to be "disk-intensive" on local machine but calculates delta transfers, and doesn't waste bandwidth (it uses rsync for transfers).

You might also want to try free file sync: that is similar but less popular.

share|improve this answer

One option is to use rsync or the graphical version (gnome) of it grsync.

I use this program to backup my files but it can be used to sync.

To automate the process you could use a cron job with the frequency you desire.

share|improve this answer

Syncing in multiple directions is very hard to do well. What happens when you get an inevitable conflict? i.e. fileA was edited on node1 and node2 simultaneously; or close enough to simultaneous that your system sees changes in both. Which one is prefered? do you stop the sync and wait for manual intervention?

You'll find that when multiple systems need to access/sync the same data and need both read and write access, you will have one of 3 methods:

  1. Client/server: something like NFS/SMB with a server that hosts the files for everyone to access at once; the server handles locking of files and lets each node know when an update has occurred to the file system.
  2. Shared storage: i.e. SAN or some form of direct access; perhaps a server running an iSCSI target. With a distributed lock manager and a clustered file system
  3. Synchronized/clustered storage: Things like Lustre, Ceph and DRBD (with a clustered file-system on top).

Due to the problems I mentioned before, almost no-one does a peer to peer syncing tool. If you can rework it so that you always have updates in one direction things become extremely easy however.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .