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利用ansible分发处理任务
Aug 04 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
详解Python自建logging模块
Jan 29 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
python使用epoll实现服务端的方法
Oct 16 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
基于python操作ES实例详解
Nov 16 Python
Python使用type动态创建类操作示例
Feb 29 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Python探索之创建二叉树
2017/10/25 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
职业培训师职业生涯规划
2014/02/18 职场文书
爱的教育观后感
2015/06/17 职场文书
主婚人致辞精选
2015/07/28 职场文书
网络研修随笔感言
2015/11/18 职场文书