实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径"/home/diegoyun/backup/“ , 则会将python目录下的文件按照全路经备份到备份路径下,形如:
			/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz.....
			复制代码代码如下:
			
		import os 
		import shutil 
		import datetime 
		
		def mainLogic(): 
		    #add dirs you want to copy 
		    backdir="I://backup"     
		    copydirs=[] 
		    copydirs.append("D://programmer") 
		    copydirs.append("D://diegoyun")     
		
		    print "Copying files  ===================" 
		    start=datetime.datetime.now() 
		
		    #gen a data folder for backup 
		    backdir=os.path.join(backdir,start.strftime("%Y-%m-%d")) 
		    #print "backdir is:"+backdir 
		
		     
		    kc=0 
		    for d in copydirs: 
		        kc=kc+copyFiles(d,backdir) 
		
		    end=datetime.datetime.now() 
		    print "Finished! ===================" 
		    print "Total files : " + str(kc)  
		    print "Elapsed time : " + str((end-start).seconds)+" seconds" 
		
		def copyFiles(copydir,backdir): 
		    prefix=getPathPrefix(copydir) 
		    #print "prefix is:"+prefix     
		
		    i=0 
		    for dirpath,dirnames,filenames in os.walk(copydir): 
		        for name in filenames: 
		            oldpath=os.path.join(dirpath,name) 
		            newpath=omitPrefix(dirpath,prefix) 
		            print "backdir is:"+backdir             
		            newpath=os.path.join(backdir,newpath) 
		            print "newpath is:"+newpath 
		
		            if os.path.exists(newpath)!=True: 
		                os.makedirs(newpath)   
		            newpath=os.path.join(newpath,name) 
		            print "From:"+oldpath+" to:"+newpath 
		            shutil.copyfile(oldpath,newpath) 
		            i=i+1 
		    return i     
		
		def getPathPrefix(fullpath): 
		    #Giving /media/data/programmer/project/ , get the prefix 
		    #/media/data/programmer/ 
		    l=fullpath.split(os.path.sep) 
		    #print str(l[-1]=="")     
		    if l[-1]=="": 
		        tmp=l[-2] 
		    else: 
		        tmp=l[-1] 
		    return fullpath[0:len(fullpath)-len(tmp)-1] 
		
		def omitPrefix(fullpath,prefix): 
		    #Giving /media/data/programmer/project/python/tutotial/file/test.py , 
		    #and prefix is Giving /media/data/programmer/project/, 
		    #return path as python/tutotial/file/test.py 
		    return fullpath[len(prefix)+1:] 
		
		mainLogic()