Python实现备份文件实例

本文实例讲述了Python实现备份文件的方法,是一个非常实用的技巧。分享给大家供大家参考。具体方法如下:

该实例主要实现读取一个任务文件, 根据指定的任务参数自动备份.

任务文件的格式: (注意,分号后面注释是不支持的)

[task] ; 一项任务开始
dir=h:/Project ; 指定备份的目录
recusive=1 ; 是否递归子目录
suffix=h|cpp|hpp|c|user|filters|vcxproj|sln|css|gif|html|bmp|png|lib|dsw|dsp|htm|html|ico|ini|jpg|rc|vssscc ; 指定备份的扩展名
exclude=0 ; 指定是备份上面的参数指定的扩展名还是排除指定的扩展名
zip=Project.zip ; 备份后的文件路径名

python代码如下:

# -*- coding: utf-8 -*-
import sys
import os
import zipfile
class Task:
 #dir str directory
 #bsub BOOL include subdirectory
 #sfx str postsuffix ,sepeated by '|'
 #ecld BOOL include or execlude the postsuffix sfx
 def __init__(self,dir,bsub,sfx,ecld,zip):
 self.dir = dir
 self.bsub = bsub
 self.suffix = sfx.split("|")
 self.exclude = ecld
 self.zip = zip

 @staticmethod
 def isfilter(sfx,sfxs,bexcld):
 bFound = False
 for e in sfxs:
  if e == sfx:
  bFound = True
  break
 if bexcld:
  return not bFound;
 else:
  return bFound;

class QBackup:
 '''备份指定目录下具备指定扩展名的文件'''
 def __init__(self):
 self._list = []

 def __del__(self):
 pass

 #tfile 任务文件
 def ReadTask(self,tfile):
 dir = ""
 bsub = False
 sfx = ""
 becld = False
 zip = ""
 try:
  f = open(tfile,'r')
  while True:
  line = f.readline()
  if len(line) == 0:
   break;
  line = line.strip(" ")
  if "[Task]/n".lower() == line.lower():
   # 读取接下来的4行
   iline = 1
   while iline <= 5:
   line = f.readline()
   line = line.strip(" /t/n") # 去除前后的空白符
   idx = line.find("=")
   if -1 == idx:
    break;
   atti = line[0:idx]
   value = line[idx+1:]
   print(value)
   if "dir" == atti:
    dir = value
   elif "recusive" == atti:
    bsub = bool(int(value))
   elif "suffix" == atti:
    sufix = value
   elif "exclude" == atti:
    becld = bool(int(value))
   elif "zip" == atti:
    zip = value
   else:
    break
   iline += 1
   else:
   t = Task(dir,bsub,sufix,becld,zip)
   self._list.append(t)
 except:
  return False
 return True

 def DoBackup(self):
 for e in self._list:
  try:
  zip = zipfile.ZipFile(e.zip,'w',zipfile.ZIP_DEFLATED)
  self.ZipDir(zip,e.dir,e.bsub,e.suffix,e.exclude)
  zip.close()
  except:
  print("exception raised!")
  return False
 return True
 def ZipDir(self,zip,dir,bsub,sfxs,ecld):
 subdir = ""
 path = ""
 if os.path.isdir(dir):
  paths = os.listdir(dir)
  #备份本目录
  print("ZipDir: ",dir)
  for e in paths:
  path = dir + "/" + e
  ext = os.path.splitext(e)[1][1:]
  if os.path.isfile(path) and Task.isfilter(ext,sfxs,ecld):
   print ("ZipFile: ",path)
   zip.write(path)
  #清理子目录
  if bsub:
  for e in paths:
   subdir = dir + "/" + e
   self.ZipDir(zip,subdir,bsub,sfxs,ecld)

 def PrintTask(self):
 for e in self._list:
  print (e.dir,e.bsub,e.suffix,e.exclude,e.zip)

if '__main__' == __name__:
 c = QBackup()
 c.ReadTask("bkup.txt")
 c.DoBackup()
 

希望本文所述对大家Python程序设计的学习有所帮助。

时间: 2014-09-14

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 mai

Python实现配置文件备份的方法

本文实例讲述了Python实现配置文件备份的方法.分享给大家供大家参考.具体如下: 这里平台为Linux: #!/usr/bin/python #Author:gdlinjianying@qq.com import os import time source = ['/etc/sysconfig/network-scripts', '/etc/sysconfig/network', '/etc/resolv.conf'] target_dir = '/opt/' target = target_

python实现批量下载新浪博客的方法

本文实例讲述了python实现批量下载新浪博客的方法.分享给大家供大家参考.具体实现方法如下: # coding=utf-8 import urllib2 import sys, os import re import string from BeautifulSoup import BeautifulSoup def encode(s): return s.decode('utf-8').encode(sys.stdout.encoding, 'ignore') def getHTML(url

Python备份Mysql脚本

复制代码 代码如下: #!/usr/bin/python import os  import time  import ftplib  import traceback #config vars  systempathchr="/" #路径分割符,*nix用"/" win32用"\\" dbuser="root" #数据库用户名  dbpwd="dbpwd" #数据库密码  dbnamelist=[&quo

Python实现网站文件的全备份和差异备份

之前有写利用md5方式来做差异备份,但是这种md5方式来写存在以下问题: •md5sum获取有些软连接的MD5值存在问题 •不支持对空目录进行备份,因为md5sum无法获取空目录的md5值 •权限的修改md5sum无法判断 解决方案: 利用文件的mtime ctime mtime(Modified time)是在写入文件时随文件内容的更改而更改的 ctime(Create time)是在写入文件.更改所有者.权限或链接设置时随Inode的内容更改而更改的 废话不多说直接上代码: #!/usr/b

python备份文件以及mysql数据库的脚本代码

复制代码 代码如下: #!/usr/local/python import os import time import string source=['/var/www/html/xxx1/','/var/www/html/xxx2/'] target_dir='/backup/' target=target_dir+time.strftime('%Y%m%d') zip_comm='zip -r %s %s'%(target," ".join(source)) target_data

Python实现简单的文件传输与MySQL备份的脚本分享

用python实现简单Server/Client文件传输: 服务器端: #!/usr/bin/python import SocketServer, time class MyServer(SocketServer.BaseRequestHandler): userInfo = { 'leonis' : 'leonis', 'hudeyong' : 'hudeyong', 'mudan' : 'mudan' } def handle(self): print 'Connected from',

python实现备份目录的方法

本文实例讲述了python实现备份目录的方法.分享给大家供大家参考.具体如下: 备份脚本1: #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you ar

Python实现新浪博客备份的方法

本文实例讲述了Python实现新浪博客备份的方法.分享给大家供大家参考,具体如下: Python2.7.2版本实现,推荐在IDE中运行. # -*- coding:UTF-8 -*- # ''' Created on 2011-12-18 @author: Ahan ''' import re import sys import os import time import socket import locale import datetime import codecs from urllib

JS实现新浪博客左侧的Blog管理菜单效果代码

本文实例讲述了JS实现新浪博客左侧的Blog管理菜单效果代码.分享给大家供大家参考,具体如下: 这里介绍新浪博客左侧的Blog管理菜单,我们变通一下,如果你在设计程序,那么本款菜单用到后台管理中想必应该很合适吧,图片是调用新浪的,用了比较多的图片,你用的时候最好是下载到本地,以免新浪哪天改版了,你就傻了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-sina-blog-left-menu-style-codes/ 具体代码如下: <ht

新浪博客在线编辑器傻瓜调用版(2007.11.1第四次修正)提供下载了

前几天21EClub发布出新浪博客编辑器下载用了一下 感觉不错不过见很多朋友不知道怎么调用于是花了一晚上时间把编辑器修改了一下方便大家使用 1.添加时图片增加上传功能(ASP无组件上传)2.IFRAME方式调用 用法类似eWebEditor   调用方法:<input type="hidden" name="content" id="content"><iframe src="Edit/editor.htm?id=co

如何使用python爬取csdn博客访问量

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能. 一.网址分析 进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是cs

php调用新浪短链接API的方法

本文实例讲述了php调用新浪短链接API的方法.分享给大家供大家参考.具体方法如下: 复制代码 代码如下: <?php //Sina App_Key define('SINA_APPKEY', '31641035'); function curlQuery($url) {  //设置附加HTTP头  $addHead = array(  "Content-type: application/json"  );  //初始化curl,当然,你也可以用fsockopen代替  $cu

python抓取最新博客内容并生成Rss

osc的rss不是全文输出的,不开心,所以就有了python抓取osc最新博客生成Rss # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import urllib2 import datetime import time import PyRSS2Gen from email.Utils import formatdate import re import sys import os reload(sys) sys.setdefaul

ThinkPHP在新浪SAE平台的部署实例

本文实例讲述了ThinkPHP在新浪SAE平台的部署方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP自从thinkphp3.0版本开始提供了SAE平台支持,并具备众多特性,支持本地化开发和调试以及部署切换,让thinkphper轻松过渡到SAE开发. 一.准备工作: 1.您需要具备SAE的账号,如果您没有该账号,请到 SAE官方网站申请. 2.自己开发或者找一个基于thinkphp3.12开发的程序,本次测试使用的是博客程序WBlog3.1.3版本,没有的可以点击此处本站下载.

在博客中屏蔽垃圾留言的简单方法

垃圾留言俗称 Spam,就是到处在留言框里发垃圾广告的那些,相信大多数人都见识过.以前使用 WordPress 的时候,因为装了防 Spam 的插件,可以屏蔽掉绝大多数的 Spam.但是自从上个月从 WordPress 迁移到新的博客平台后,第一天上线就遭遇了几个Spam,全都是国外的推广的广告什么的.博客的访问量本身就很小,如果每天都来几条 Spam,太煞风景了,手工删除也太浪费时间,而且又是自己写的小系统,也不可能有什么插件可选,只能自己想办法解决了. 看到有很多网站都是加个验证码来解决这个

四大漏洞入侵博客

博客入侵太简单了!大家要注意啊! 漏洞一:数据库下载漏洞 第一步,搜索攻击目标 打开搜索引擎,搜索"Pragram by Dlog",可以找到许多博客页面,这些博客都是使用"Dlog破废墟修改版"建立的.我们要找的叶面是存在暴库漏洞的1.2版本.许多用户都忽视了这个版本中内嵌的eWebEditor在线编辑数据库的安全性,致使黑客可以使用默认的路径进行下载. 第二步,获取管理员密码 在搜索结果列表中挑一个攻击目标:http://s*.8888.com/blog/,用浏