Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm working on a massive Java web application which is kept under centralized version control, but the source files are used to build and run the actual server, which then copies all the files I work on into a random temporary directory while it's running.

My problem is that I need to either rebuild this huge application to see any changes to my files, or keep track of all my changes and copy over the files I've changed back to their source location before committing them back to source control.

My question is: is there a command line script I can run that will monitor any changes in the source folder and automatically copy changed files across to temporary folder X?

The idea is to remove the human point of failure in having to manually mitigate the two-locations problem.

share|improve this question
    
Do you want a folder that it a perfect copy or a folder that consists only of changed files? –  David Feb 25 '13 at 15:15
    
Perfect copy. When I build the application, it makes one big copy. I'd like my manual changes to the source to be automatically migrated to the copy folder. –  Barney Feb 25 '13 at 15:17
    
Robocopy can do it but I am not sure if that's a good idea. –  kush Feb 25 '13 at 15:18
    
Thanks @kush, wasn't aware of robocopy. Not sure it's a good idea… Because robocopy is flaky? Implementation is dangerous? Inherently bad idea? –  Barney Feb 25 '13 at 15:20
    
You should not have to come up with your own implementation to something that sounds like (please correct me if I am wrong) a pretty common scenario. You are taking files on the production server and updating your temp folder (and not the other way), right? –  kush Feb 25 '13 at 15:27
show 4 more comments

2 Answers

up vote 1 down vote accepted

I suggest FreeFileSync, which appears to have the ability to create a script that will automatically sync the two folders every few seconds. I haven't played with it personally, but it looks promising.

enter image description here enter image description here

share|improve this answer
    
Thanks for this — it makes use of Volume Shadow Copy, which seems to be the crucial caveat to the robocopy solution, so it looks promising. I'll give it a twirl and qualify in a minute. –  Barney Feb 25 '13 at 15:56
1  
This works great. There's a bunch of granular options to specify behaviour when Item exists on left side only, Right side is newer, etc — the batch tool can execute every 0 seconds for near instantaneous response without any noticeable performance hit (for 300 files over 150MB), it reports and optionally alerts/pauses/logs on change… GUI interface is a bit weird and it takes tweaking, but it's powerful and flexible. Again, many thanks. –  Barney Feb 26 '13 at 13:53
add comment

You also might want to have a look at the (ageing) DeltaCopy client and server. Basically, it’s a Linux-like rsync implementation for Windows, scriptable (using the Windows scheduler, if wanted) and its main advantage is that only the changed parts of a modified file (yes, file!) are transmitted. This can save a lot of traffic on big projects. A disadvantage is, of course, that it has to build and transmit a file list before.

Also, there are some (small) caveats:

  • As it is older software, you might have to replace cygwin1.dll on Windows machines. (If you sync files between Linux and Windows, only. It uses cygwin as the underlying framework which didn’t handle 16-bit Unicode/UTF-8 filename conversion correctly at that time.)
  • It’s not exactly that user-friendly, you should have a look at Linux’ rsync manpage to exploit its full potential.
  • On Windows, it requires a »client« and a »server« machine.
  • If the server is a Linux machine, you’ll have to setup rsyncd correctly.
  • No support for Windows’ Volume Shadow Copy (might not be needed, though).

Well, it also has advantages (that’s why I still use it daily):

  • Fully compatible with *NIX rsync and rsyncd. A proven, well-known and highly efficient syncing system. Still.
  • Keeps overhead small: Only the changed data (even inside files!) gets transported over the network. So it’s also very nice if you are teleworking or connect to your server via slow connections.
  • Failsafe, apparently. I’ve rsync’d many many gigabytes of data over the years, and not one flaw happened when »patching up« the target files. Even if I found the concept a little worrying, at first.
  • I still use DeltyCopy to backup files from Windows machines to both a central Linux server and a Windows 2003 server on a daily basis. Works extremely well and safe, if installed correctly.

Well, up to you. Have fun! (And let us know about FreeFileSync!)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.