I want to backup few folders on a regular basis on Windows XP. The best would be automatic backup after any change to the files is made.

  • I like sugarsync but I cannot sync files from program files directory
  • I like dropbox but I can backup only one specific (not customizable) folder

any suggestions? I am happy to have some fee utility (even for commercial use) that would copy the files from one directory to dropbox directory....

  • The destination folder could be (preferably) on the same computer.
  • File changes are now and then (the files are mainly source code).
  • The file size is very small. All together at this time is less than 10MB
  • Is the destination of the backup another computer on your LAN or remote? It looks as though you are looking at Internet solutions, which seems the destination machine must not be on the LAN. Also, how much data in all and much data changes? To give a good recommendation, these detail may matter. – Scott McClenning Oct 28 '10 at 3:38
  • @Scott McClenning: I updated my question, please see last three points. – Radek Oct 28 '10 at 4:32

For source code tracking, I would recommend something like Git (tortoisegit), Mercurial, tortoiseSVN, rdiff-backup or even zipping things (pick your favorite version WinZip, 7-Zip..).

Robocopy can monitor a directory for change (/MON:n /MOT:m) and make a copy somewhere, but there is no history. Use the /MIR switch to make the destination a duplicate.

The touch part of this is the automatic and on change.

There is a pay program called History Explorer ($20) that will save per change and once setup you don't really need to think about it. I have it and it seems to work as advertised.

I've heard DocShield is similar to History Explorer, checks at intervals, and some have complained of it be buggy. I heard it was free for personal use, but the Docshield website is no longer active and on some site it is listed as freeware. Not sure if I would trust it if they aren't in business any more.

rdiff-backup I've ran in to a problem trying to backup too much data in one shot (a few GB). On small project files I've had no problems.

I hope one of these will help you.

  • does /MON mean that Robocopy runs as a daemon? – Radek Oct 28 '10 at 6:28
  • I've never used it in monitor mode, but from what I've read it appears to remain running in a loop waiting for the number of changes to trigger or time to elapse. However, you could make this into a batch file and add it to your startup. I know you can use START /min to make the window start minimized, but you would need something like AutoIT. An additional benefit of AutoIT is the script could be compiled into an EXE that would be easy to put into the startup folder. – Scott McClenning Oct 29 '10 at 0:49
  • 1
    @Radek Just in case you were interested, today the website giveawayoftheday.com has History Explorer for free. – Scott McClenning Nov 2 '10 at 0:52

Genie Timeline free edition.


robocopy can mirror two folders.


Viceversa Pro is quite robust, I'm backing up around two million files per month without any problem, and with the VVEngine you can monitor changes for backing them up. The only catch is that it's not free. But it's small and fast. ( also you can schedule backups, scripts and automatically email results )


I went for Yadis! Backup it's

  • free
  • small
  • easy to use

and does what I want :-)


On linux, I've prepared the below backup script to copy only the changed files to a predefined backup folder with entire structure. I defined "changed" if either of the file-size or modification-date changes. Using active-state, you can implement this on windows too:

import os
import os.path
import sys
import time
from datetime import datetime
import shutil

backup_loc = '/media/prahlad/terabyte/backup'

locations = ['/home/prahlad/docs',

if __name__ == "__main__":
    #loop thru the folders
    start = time.clock()
    for s in locations: #[0:1]:
        #print s + "\n"
        #files = os.listdir(s)
        print 'listing for '  + s
        for (root, dirs, files) in os.walk(s):
            #CON_LEN = 120
            #print root, " contains"
            #subpath = root[len(s)+1:]
            subpath = root.replace('/home/prahlad','')
            #~ for d in dirs:
                #~ #create corresponding structure on backup if it doesn't exist
                #~ print 'backup loc:',backup_loc
                #~ print 'subpath:',subpath
                #~ print 'd:',d
                #~ print 's:',s
                #~ #os.sepchar
                #~ #destdir = os.path.join(backup_loc, subpath, d) #some how backup_loc is not being considered
                #~ destdir = backup_loc + subpath + os.sep +  d
                #~ if not os.path.exists(destdir):
                    #~ print 'creating directory ' + destdir
                    #~ #print 'creating directory ' + destdir
                    #~ os.makedirs(destdir)

            for f in files:
                #print 'root: ' + root
                #print 'file: ' + f
                #print 'split: ' + root[len(s)+1:], len(root[len(s)+1:])
                #message = os.path.join(root,f) + '~~~~' + os.path.join(backup_loc,subpath,f)
                filename = os.path.join(root, f)
                #dfilename = os.path.join(backup_loc,subpath,f)
                dfilename = backup_loc + subpath + os.sep + f
                link = ''
                if os.path.islink(filename):
                    link = os.readlink(filename)

                if not os.path.exists(dfilename):
                    #check dirs
                    if not os.path.exists(backup_loc + subpath):
                        os.makedirs(backup_loc + subpath)
                        print 'creating directory: ' + backup_loc + subpath

                    #just copy the files
                    print 'copying from: ' + filename
                    print 'to: ' + dfilename
                    if link == '':
                        shutil.copy2(filename, dfilename)
                        os.symlink(link, dfilename)
                    sz = os.path.getsize(filename); lm = datetime.fromtimestamp(os.path.getmtime(filename)).timetuple()
                    dsz = os.path.getsize(dfilename); dlm = datetime.fromtimestamp(os.path.getmtime(dfilename)).timetuple()

                    if (sz == dsz and lm == dlm):
                        print 'skipped: ' + dfilename
                        #copy the files
                        print 'copying from: ' + filename
                        print 'to: ' + dfilename
                        if link == '':
                            shutil.copy2(filename, dfilename)
                            os.symlink(link, dfilename)

    mins = (time.clock() - start)
    #print "All files copied in %d minutes" % mins
    print "{0} files copied in {1} minutes".format(int(num), round(mins))

Must give a try to Resilio. Personally I found it the best yet available app for backup job over Wifi,LAN etc. Free for individual use. In their words: Powered by BitTorrent’s leading peer-to-peer technology.

  • Yes, not sure why anyone downvoted this. I use Resilio Sync and it works amazingly and is free and robust. It's only a partway solution though if you want backups. – Andrew Oct 24 '17 at 5:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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