Wednesday, October 27, 2010

Open Source Spotlight – FreeFileSync

In our household, we currently use five PC’s for various activities.  One drives the television, one for the kids, a desktop that I do work on, and two laptops.  Historically, keeping the files up-to-date has been a major drag.

In years past, I’ve tried various strategies to keep our documents, photos, music, and video current.  Certainly one good solution is to keep a centralized server, and connect the client PC’s to that server.  In this scenario, there is one master set of files, and everyone always has the most current available to them.  Microsoft now makes the Home Server, which is designed for this task.  I’ve also used various flavors of Linux such as Ubuntu to run a home-based server from.

For us though, that didn’t work.  First of all, I’m kind of a backup freak, and having all of my documents stored on a single moving platter doesn’t set well.  Sure I could implement a RAID array,  but then we start talking about more money and complexity.  Secondly, I was beginning to do quite a bit of travel, and back in the day of slow, expensive Internet service, there was just no good way to get to the files remotely.  The final blow was when I started measuring the power consumption on various devices, and how much they were costing me to run – that was the deciding factor that I didn’t “need” a dedicated file server running 24x7.

Another strategy that I’ve tinkered with is using an online data hosting service.  In the past, these seemed to be more work than they were worth – they had crude interfaces, limited storage, and I still had the issue of relatively slow Internet connectivity.  Today, seems to have a viable option that I may pursue, whereby the files get stored on my local computer, but they get replicated out to the web.


But for the time being, I use a more direct approach file management – FreeFileSync.  FreeFileSync is an open-source program that lets you very quickly compare two folders, identify the differences, and synchronize them.

The program has some options to let you customize the general behavior, but usually the default options are acceptable.  For me, I point the left pane at my local C:\ drive data directory, and the right pane at my Desktop PC, using a UNC path.  Clicking the Compare button will initiate the file comparison, which on modern hardware over a LAN network, takes about 20 seconds for my 15,000 files.  A sample of the results can be seen here.


The blue and green arrows in between the left and right pane shows which direction the software has determined that the files should be updated.  The software has a fairly sophisticated algorithm to determine the correct action, based on file timestamps, as well as an internal database of past synchronizations.  This internal database is how FreeFileSync knows when a file has been deleted, and the corresponding file on the opposite side of the sync should also be deleted.

Any of these default actions can be overridden by clicking in the center column before the synchronization takes place.  Once you’ve reviewed the actions, clicking the Synchronize button at the right puts the changes into effect.  This usually takes only a few seconds unless I have large amounts of data that has changed.  Then the time is dependent on bandwidth of your LAN connection and the speed of your hardware.

In all, I usually synchronize each of the laptops to the desktop about once a week.  It generally takes less than  two minutes to complete.  When I’m done, I have local access to any of my files from each of the PC’s, plus I have three separate copies of my irreplaceable photos and data.


I give FreeFileSync five out of five stars.

No comments: