python备份文件的脚本


Posted in Python onAugust 11, 2008

实际效果:假设给定目录"/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()
Python 相关文章推荐
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
Python中的生成器和yield详细介绍
Jan 09 Python
python中dir函数用法分析
Apr 17 Python
python中for语句简单遍历数据的方法
May 07 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
tornado+celery的简单使用详解
Dec 21 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 #Python
python下如何让web元素的生成更简单的分析
Jul 17 #Python
py中的目录与文件判别代码
Jul 16 #Python
Python Mysql自动备份脚本
Jul 14 #Python
python远程登录代码
Apr 29 #Python
复制粘贴功能的Python程序
Apr 04 #Python
推荐下python/ironpython:从入门到精通
Oct 02 #Python
You might like
PHP多进程编程实例
2014/10/15 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python中zip()方法应用实例分析
2016/04/16 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
在求职信中如何凸显个人优势
2013/10/30 职场文书
关于安全演讲稿
2014/05/09 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书