【Python】一个python实例:给重要的文件创建备份.摘自crossin-python简明教程
问题:写一个可以为所有重要文件创建备份的程序
考虑:源路径和目标路径各是什么;所有重要文件-有哪些;备份文件格式是什么;定期备份的话,备份文件名称如何规定等等。(ps,我自己只想到一个路径和名称)
程序设计:
1 需要备份的文件和目录由一个列表指定
2 备份应该保存在主备份目录中。?
3 文件备份成一个tar文件(原文档为zip文件,我的linux没有安装,所以使用tar)
4 tar存档的名称是当前的日期和时间
5 使用标准的tar命令
Version1.0
#/usr/bin/python
#Filename:backup_ver1.py
#-*- coding:utf-8 -*-
import os
import time
#1 The files and directories to be backed up are specified in a list.
source=['/home/zhaoxiaodan/pythonTest/*','/home/zhaoxiaodan/javaTest']
#2 The backup must be stored in a main backup directory
target_dir='/opt/soft/backup_test/'
#3 The backup file is tar.gz ,and named with date
target=target_dir+time.strftime('%Y%m%d%H%M%S')+'.tar.gz'
#4 Use the tar.gz command
tar_command="tar cvf %s %s"%(target,' '.join(source))
if os.system(tar_command)==0:
print 'Successful backup to %s'%target
else:
print 'Failed'
结果:Successful backup to /opt/soft/backup_test/20151022171749.tar.gz
对压缩包解压的时候有如下问题:
[root@bjdhj-120-× backup_test]# tar -xzvf 20151022164024.tar.gz gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
查了一下说是压缩包没有用gzip格式压缩 所以解压的时候也不用加上z 。直接tar -xf 就可以了。tar -xvf 20151022164024.tar.gz 成功解压,解压后的路径是在backup_test中再次生成了source全路径。
Version1.1
改进处:把单纯的日期命名改成了年月日为文件夹,时间为文件名称。
today=target+time.strftime('%Y%m%s')
now=time.strftime('%H%M%S')
if not os.path.exists(today):
os.mkdir(today)
print 'Successfully created directory',today
target=today+os.sep+now+'.tar.gz'
结果:Successful backup to /opt/soft/backup_test/20151022/171053.tar.gz
Version1.2
改进出:为压缩包增加描述
comment=raw_input('Enter a comment-->')
if len(comment)==0:
target=today+os.sep+now+'.tar.gz'
else:
target=today+os.sep+now+'_'+comment.replace(' ','_')+'.tar.gz'#多个单词的描述用空格隔开,替换为"_"
结果:Enter a comment-->add
Successful backup to /opt/soft/backup_test/20151023/112738_add.tar.gz
【Python】一个python实例:给重要的文件创建备份.摘自crossin-python简明教程的更多相关文章
- python机器学习经典实例PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:caji 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化.它已经被广泛地应用于不同领域,如搜索引擎.机器人.无人驾驶汽车等.Python机器学习经典实例首先通过实用的案例 ...
- python 简明教程笔记
1,python特点 python 注重的是如何解决问题,而不是语法和结构简单高效.扩展性 2,安装 python python -V 检测是否安装pythonctrl+d ...
- python 类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...
- python中创建实例属性
虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- Python 装饰器实例
retry 偶然看到一篇文章,想到了前几天的一个需求,git pull性能不稳,需要加入重试机制,正好这个装饰器的实例符合这样的场景. # coding:utf-8 import time impor ...
- Python 解析XML实例(xml.sax)
已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- python连接mysql实例分享_python
示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...
随机推荐
- 关于 .net 开发 Office Word 的一些问题小结
1.在"组件服务"的DCom配置中找到Microsoft Office Word =>属性=>标识选项卡,然后选择交互式用户:::=>"安全" ...
- struts2的namespace
struts2 的命名空间action里的name是个无关紧要的东西,namespace为‘/’表示所有 为‘/名字’,不管怎么访问只要名称空间些对了就不会错,/时你的请求地址可以直接写**Actio ...
- Gnome 插件介绍
插件:Applications Menuhttps://extensions.gnome.org/extension/6/applications-menu/ TopIconshttps://exte ...
- bnuoj 20832 Calculating Yuan Fen(暴力模拟)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=20832 [题意]: 给你一串字符串,求一个ST(0<ST<=10000),对字符串中字符 ...
- java小提示:标示符常见命名规则、常用ASCII
标示符常见命名规则: A:包:全部小写B:类或者接口:首字母大写:StudentC:方法或者接口:首字母小写,第二个单词开始开始,每个单词首字母大写:studentAgeD:常量:全部大写,多个单词之 ...
- 用JavaScript获取页面上被选中的文字的技巧
这里介绍的一个小技巧是如何用JavaScript获取页面上被选中的文字的方法.最关键的JavaScript API是: event.selection = window.getSelection(); ...
- 可编辑的select框的实现(实用版)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEA ...
- ***php 数组添加关联元素的方法小结(关联数组添加元素)
我们这里介绍的是在数组中再增加关联数组了,这个就合成了多维数组,下面我来给大家举几个实例,希望对各位同学会有所帮助哈. 在"php 数组添加元素方法总结这篇文章中介绍了如何给数组添加元素,那 ...
- select下拉框选择触发事件
我一直以来都认为,select 下拉框选择对选项 options 使用 onclick 注册事件即可,如下: <select> <option value="0" ...
- [itint5]任务调度
http://www.itint5.com/oj/#10 拓扑排序.首先按照题目给出的数据结构复杂度不会是O(v+e)的,所以先要变换数据结构.二来写的时候用一个stack会更好点.还有就是题目里其实 ...