python备份文件的脚本

 更新时间:2008年08月11日 21:25:14   作者:  
作用:将目录备份到其他路径。

实际效果:假设给定目录"/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实现网站的模拟登录

    这篇文章主要介绍了python实现网站的模拟登录的相关资料,通过自己构造post数据来用Python实现登录过程,需要的朋友可以参考下
    2016-01-01
  • python变量类型、输入、输出运算符介绍举例

    python变量类型、输入、输出运算符介绍举例

    Python是一种功能强大的编程语言,支持多种数据类型和运算符,它强调代码的可读性和简洁性,变量在Python中是动态类型的,不需要显式声明类型,这篇文章主要介绍了python变量类型、输入、输出运算符的相关资料,需要的朋友可以参考下
    2024-11-11
  • python 用matplotlib绘制折线图详情

    python 用matplotlib绘制折线图详情

    这篇文章主要讲诉了python 用matplotlib绘制折线图的详细内容,众所周知,matplotlib 是一款功能强大开源的数据可视化模块,凭借着强大的扩展性构建出更高级别的绘图工具接口如seaborn、ggplot,下面我们就根据之前两篇文章基础掌握折线图的绘制,需要的朋友可以参考一下
    2021-12-12
  • Python使用pypandoc将markdown文件和LaTex公式转为word

    Python使用pypandoc将markdown文件和LaTex公式转为word

    pypandoc 是一个用于 pandoc 的轻量级 Python 包装器,支持多种格式的文档转换,下面我们来看看如何使用pypandoc将markdown文件和LaTex公式转为word吧
    2025-04-04
  • 用Python简单实现个贪吃蛇小游戏(保姆级教程)

    用Python简单实现个贪吃蛇小游戏(保姆级教程)

    本文基于Windows环境开发,适合Python新手,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • Python脚本实现Mysql数据迁移

    Python脚本实现Mysql数据迁移

    MySQL数据库迁移是指将MySQL数据库中的数据和结构迁移到另一个MySQL实例,下面小编就来为大家介绍一下如何通过Python脚本实现Mysql数据迁移吧
    2025-03-03
  • pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法

    pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法

    今天小编就为大家分享一篇pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Django实现跨域的2种方法

    Django实现跨域的2种方法

    这篇文章主要介绍了Django实现跨域的2中方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python实现AES加密解密

    python实现AES加密解密

    这篇文章主要为大家详细介绍了python实现AES加密解密的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Python中高效抓取数据的实战指南

    Python中高效抓取数据的实战指南

    在数据驱动的时代,网络爬虫已成为获取信息的核心工具,本文将用通俗的语言,带您掌握Python爬虫结合代理IP抓取数据的全流程,希望对大家有一定的帮助
    2025-04-04

最新评论