备份文件的python脚本

作用:将目录备份到其他路径。
实际效果:假设给定目录"/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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值