python备份文件的脚本

862次阅读  |  发布于5年以前

实际效果:假设给定目录"/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()

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8