yunshichen

我相信人生是值得活的,尽管人在一生中必须遭受痛苦,卑劣,残酷,不幸和死亡的折磨,我依然深信如此.但我认为人生不一定要有意义,只是对一些人而言,他们可以使人生有意义. ---J 赫胥黎

备份文件的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()

posted on 2008-08-08 00:48 Chenyunshi 阅读(1307) 评论(3)  编辑 收藏 引用 所属分类: Python2.5/2.6

评论

# re: 备份文件的python脚本 2008-08-08 09:55 长江三峡

新手学习  回复  更多评论   

# re: 备份文件的python脚本 2008-08-13 19:26 wahaha

还行,可以继续深入一些。比如说传递到其他服务器,本地维护一个目录树,实时监测并实现恢复。  回复  更多评论   

# re: 备份文件的python脚本 2008-08-14 10:38 Chenyunshi

嗯,楼上的说得不错.但如果做得这样复杂的话,其实和具体语言就没什么关系了.我只是做这个小程序试试学习python而已,呵呵.  回复  更多评论   

只有注册用户登录后才能发表评论。
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(7)

随笔分类

随笔档案

文章分类

相册

搜索

最新评论

阅读排行榜

评论排行榜