FSync is an easy to use tool to sync files between multiple machines efficiently. It is especially useful for syncing large files which only have small differences between them. It syncs two files by first calculating in what parts the files are different and in what parts they are same. Then it sends only the parts where the files differ over the network to sync the files. So the data transferred over the network
is proportional to differences in the files rather than the size of the file.
So if you have a set of files that you want to be replicated between multiple machines and want any change made to these files to be reflected on all the other machines then FSync is a very handy tool for that.
You can either sync up (upload local files to the server and other machines) or sync down download files from the server to the local machine. Other than these manual sync functions you can also turn on the auto sync feature which will sync up the files to the server and other machines after every N seconds (application will ask the value of N when turning on auto sync).
Motivation :
In this day and age such situations are fairly common where a single user works on a single project from multiple machines and any work done from any one machine needs to be reflected in other machines. This calls for a mechanism to sync the files on multiple machines.
One straightforward way to do it is to upload the complete contents of one machine to all other machines. While this syncs the files between machines and works, it is not the optimal way to do it or even impractical in cases where files to be synced are very large and small changes are frequent. The optimal way to do it is to only send the parts of the files which have changed between the machines to minimize the data transferred over the network. This is exactly what we tried to do with our file syncing application.
We also felt the need to provide a way to automatically sync the files after a given time interval. A use case for this is as follows. Suppose a server is running and appending the logs to a log file (log file is growing with time) and a developer wants to analyse the log file every day by downloading it his/her own computer. In this case he/she can setup the FSync application between server and his/her own computer and set the server side FSync to auto sync every 24 hours. So every day the log file will be synced to local machine and will be ready for analysis.