问题:写一个可以为所有重要文件创建备份的程序

考虑:源路径和目标路径各是什么;所有重要文件-有哪些;备份文件格式是什么;定期备份的话,备份文件名称如何规定等等。(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简明教程的更多相关文章

  1. python机器学习经典实例PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:caji 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化.它已经被广泛地应用于不同领域,如搜索引擎.机器人.无人驾驶汽车等.Python机器学习经典实例首先通过实用的案例 ...

  2. python 简明教程笔记

    1,python特点 python 注重的是如何解决问题,而不是语法和结构简单高效.扩展性 2,安装 python python -V        检测是否安装pythonctrl+d       ...

  3. python 类和实例

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...

  4. python中创建实例属性

    虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...

  5. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  6. Python 装饰器实例

    retry 偶然看到一篇文章,想到了前几天的一个需求,git pull性能不稳,需要加入重试机制,正好这个装饰器的实例符合这样的场景. # coding:utf-8 import time impor ...

  7. Python 解析XML实例(xml.sax)

    已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...

  8. Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  9. python连接mysql实例分享_python

    示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...

随机推荐

  1. cocos2dx之C++调用Lua

    原文地址:http://blog.csdn.net/dingkun520wy/article/details/49839701 1.引入头文件 #include "cocos2d.h&quo ...

  2. 【BZOJ1500】[NOI2005]维修数列

    Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一 ...

  3. DB天气 Alpha版使用说明

    一 产品介绍 DB天气是一款能够准确预报天气的软件,它的特点在于它的简洁的设计风格,以及贴心的预报方式.是一款非主流的小清新的天气APP. 二 功能介绍 下面介绍一下DB天气的主界面以及天气功能的实现 ...

  4. CSS样式表引用方式

    最近讲课中,有些学员对调用样式表老是有含糊不清?大体说来有四种方式: 1.外部文件引用方式;(推荐使用) 2.使用@import引用外部CSS文件; 3.内部文档头方式也叫内嵌法调用; 4.直接插入式 ...

  5. DEDECMS采集规则,过滤,替换文章内的部分内容

    1.采集去除链接[Copy to clipboard]CODE:{dede:trim}]*)>([^<]*){/dede:trim}---------------------------- ...

  6. Clojure语法学习-循环

    do和块语句 在Scala中,花括号{}括起来的语句构成一个block,它的值就是最后一个语句的值. scala> val a = { | println("a") | 1} ...

  7. java jdbc dbcp连接SQL Server

    使用到的jar: commons-collections-3.1.jar commons-dbcp-1.4.jar commons-pool-1.5.6.jar sqljdbc4.jar dbcp配置 ...

  8. 在RedHat5.4 LINUX 安装mySQL数据库

    linux下mysql 最新版安装图解教程 1. 查看当前安装的linux版本 通过上图中的数据可以看出安装的版本为RedHat5.4,所以我们需要下载RedHat5.4对应的mysql安装包

  9. android的休眠和唤醒流程

    android休眠唤醒流程: power按键事件上报给android系统,最终由windownmanager接收到,当有按键事件时判断是否需要休眠后唤醒系统,然后调用powermanager系统服务去 ...

  10. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系

    2013-08-11 10:46:39 介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL& ...