A few years ago when I needed to synchronize large collection of files for a number of Windows Server 2003 hosts I stumbled upon a Windows Resource Kit utility named Robocopy. This is a great file synchronization tool with lots of switches that can quickly copy entire folders from one Windows host to another along with their NTFS data such as dates and security details, yielding exact duplicates.
There are a number of tools on the market that can do the job, but Robocopy is free, fast, and easy to use. I had a number of hosts auto-synchronized using Robocopy in scheduled tasks and they worked admirably without any hassles. It's one of those set-it-and-forget-it utilities that once configured, it doesn't need any further attention.
Apparently Robocopy was such a useful tool that Microsoft decided to bundle it with Windows Vista and Windows Server 2008. There's even a GUI interface for it for those less inclined to run it from a command prompt. The newer bundled version may have a few extra switches but is otherwise almost identical to the previous versions that were part of the Resource Kit. There's also one more difference that is perhaps less noticeable. It runs substantially slower that the past versions.
I discovered the performance issue today while doing a routine check on the scheduled tasks I had configured for our newer Windows Server 2008 hosts. It appeared that the Robocopy tasks I had set up on the new servers were taking considerably longer time to finish than comparable tasks configured on Windows Server 2003 hosts. The copy operations were still being performed flawlessly but the completion times were drastically longer, specially for servers with large numbers of folders and files.
I spent a number of hours investigating this issue on multiple servers. I took various measurements, tweaked networking parameters, and used various Robocopy switches and values, but no matter what I did the performance issue kept persisting.
The Solution
Out of options and with no solutions at hand, I made one final attempt that I hadn't thought of before. I copied an older version of Robocopy (a version that came with the Windows Server 2003 Resource Kit) to one of the Windows Server 2008 hosts and proceeded to synchronize folders using that version. To my amazement, the copy operation completed as fast as it used to do under Windows Server 2003. We're not talking a small improvement here. The job ran over 40 times faster than it had using the newer bundled copy of Robocopy. Incredulous, I tested this multiple times on multiple servers and the results were the same. The older version of Robocopy dramatically outperformed the newer version even when executed on Windows Server 2008.
There you have it. If you are not happy with the speed of Robocopy on Windows Vista or Windows Server 2008, give the older version, included with Windows Server 2003 Resource Kit, a try and see if it does the same for you as it did for me.
There are a couple of caveats here you should be aware of. First, I checked and rechecked my results quite extensively but I wouldn't claim that to be exhaustive. Do your own detailed verification before you let the old Robocopy loose on your hosts. Second, I ran the old version of Robocopy (a 32-bit image) on 64-bit Windows Server 2008 hosts and as mentioned, I had great results. But that version of Robocopy is not even supported on 64-bit Windows Server 2003, let alone Windows Server 2008. So I suppose there is a slight inherent risk of malfunction. For me, that risk is worth the performance gain, but your risk tolerance may be lower.
robocopy,windows,windows server,microsoft,windows resource kit,vista