Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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
share|improve this question
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

Genie Timeline free edition.

share|improve this answer
it looks good but not for commercial use :-( – Radek Oct 27 '10 at 22:53
They have other editions. I misunderstood what you were looking for. I thought you needed something for personal use. – joeqwerty Oct 27 '10 at 22:58
I want something free even for commercial use ... – Radek Oct 27 '10 at 23:07

robocopy can mirror two folders.

share|improve this answer

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.

share|improve this answer
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
@Radek Just in case you were interested, today the website has History Explorer for free. – Scott McClenning Nov 2 '10 at 0:52

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 )

share|improve this answer
up vote 1 down vote accepted

I went for Yadis! Backup it's

  • free
  • small
  • easy to use

and does what I want :-)

share|improve this answer

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))
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .