设计程序,有以下步骤:

  需要备份的文件和目录由一个列表指定。

  备份应该保存在主备份目录中。

  文件备份成一个zip文件。

  zip存档的名称是当前的日期和时间。

解决方案:

版本一:

 1 #!/usr/bin/python
 2 #filename: backup_ver1.py
 3
 4 import os
 5 import time
 6
 7 source=['/home/swaroop/byte','/home/swaroop/bin']
 8 target_dir='/mnt/e/backup/'
 9 target=target_dir+time.strftime('%Y%m%d%H%M%S')+'.zip'
10 zip_command="zip -qr '%s' %s"%(target,''.join(source))
11
12 if os.system(zip_command)==0:
13     print 'Successful backup to',target
14 else:
15     print 'Backup FAILED'
16
17
18 #输出
19
20 $ pyhon backup_ver1.py
21 Successful backup to
22 /mnt/e/backup/20041208073244.zip

以上代码里,我们在source列表中指定需要备份的文件和目录,target_dir指定存储备份文件的目标目录,zip归档的名称是目前的日期和时间。time.strftime()函数需要我们在上面的程序中使用的那种定制。如,%Y被年份替代,%m被月份替代,其他依次是日时分秒。zip命令有一些参数,-q表示zip命令安静地工作。-r表示zip命令对目录递归地工作,即它包括子目录以及子目录中的文件。选项后跟着zip归档的名称,然后再是待备份的文件和目录列表。我们使用字符串join方法把source列表转换为字符串。最后os.system运行命令,成功则返回0,失败则返回错误号。

版本二:

对前者的优化,采用更好的文件名机制--使用时间作为文件名,日期作为目录名,存放于主备份目录中。这样更易于管理。同时,文件名得以变短。

代码:

 1 #!/usr/bin/python
 2 #filename: backup_ver2.py
 3
 4 import os
 5 import time
 6
 7 source=['/home/swaroop/byte','/home/swaroop/bin']
 8 target_dir='/mnt/e/backup/'
 9 today=target_dir+time.strftime('%Y%m%d)
10 now=time.strftime('%H%M%S')
11 if not os.path.exists(today):
12     os.mkdir(today)
13     print 'Successfully created directory',today
14 target=today+os.sep+now+'.zip'
15 zip_command="zip -qr '%s' %s"%(target,''.join(source))
16
17 if os.system(zip_command)==0:
18     print 'Successful backup to',target
19 else:
20     print 'Backup FAILED'
21
22
23 #输出
24
25 $ pyhon backup_ver2.py
26 Successfully created directory
27 /mnt/e/backup/20041208
28 Successful backup to
29 /mnt/e/backup/20041208/080020.zip
30
31 $ pyhon backup_ver2.py
32 Successful backup to
33 /mnt/e/backup/20041208/080428.zip

使用os.exists函数检验在主备份目录中是否有以当前日期作为名称的目录,若是没有,便使用os.mkdir函数创建。

注意os.sep的用法--这会根据你的操作系统给出目录分隔符,即在linux、unix下它是'/',在windows下它是'\\',而在mac os下它是':'。os.sep有利于移植平台。

版本三:

在zip归档的名称上加一些用户提供的注释,便于区分不同备份的作用。

代码:

 1 #!/usr/bin/python
 2 #filename: backup_ver2.py
 3
 4 import os
 5 import time
 6
 7 source=['/home/swaroop/byte','/home/swaroop/bin']
 8 target_dir='/mnt/e/backup/'
 9 today=target_dir+time.strftime('%Y%m%d)
10 now=time.strftime('%H%M%S')
11 comment=raw_input('Enter a comment --> ')
12 if len(comment)==0:
13     target=today+os.sep+now+'.zip'
14 else:
15     target=today+os.sep+now+'_'+\
16         comment.replace(' ','_')+'.zip'
17 if not os.path.exists(today):
18     os.mkdir(today)
19     print 'Successfully created directory',today
20 zip_command="zip -qr '%s' %s"%(target,''.join(source))
21
22 if os.system(zip_command)==0:
23     print 'Successful backup to',target
24 else:
25     print 'Backup FAILED'
26
27
28 #输出
29
30 $ pyhon backup_ver3.py
31 Enter a comment --> added new examples
32 Successful backup to
33 /mnt/e/backup/20041208/082156_added_new_examples.zip
34
35 $ pyhon backup_ver3.py
36 Enter a comment -->
37 Successful backup to
38 /mnt/e/backup/20041208/082316.zip

进一步优化:

改用tar命令

tar='tar -cvzf %s %s -X /home/swaroop/excludes.txt'%(targe,''.join(srcdir))

参数解释:

-c表示创建一个归档
-v表示交互,即命令更具交互性
-z表示使用gzip滤波器
-f表示强迫创建归档,即如果已经有一个同名文件,它会被替换
-X表示含在指定文件名列表中的文件会被排除在备份之外。例如,你可以在文件中指定*~,从而不让备份包括所有以~结尾的文件。

最理想的创建这些归档的方法是分别使用zipfile和tarfile。不推荐使用os.system。

转载于:https://www.cnblogs.com/jiu0821/p/5233319.html

python小程序:备份文件相关推荐

  1. python恶搞小程序-有趣的python小程序

    有趣的python小程序 1.密码生成器x=int(input()) print(''.join(__import__('random').choice('QWERTYUIOPASDFGHJKLZXC ...

  2. python日历小程序_一个查看网络设备信息Python小程序

    原标题:一个查看网络设备信息Python小程序 网络编程中,最常见的一个问题就是,获取设备信息. 首先我们,要学习如何获取本机的网络信息.我们将用到标准库中的socket库.假如说,我们要查看本机的 ...

  3. 几个python小程序

    python小程序 1-100求和 1 def Sum(x, y): 2 return x+y 3 print reduce(lambda x,y:x+y,range(1,101)) 4 5 i = ...

  4. 人工智能python小程序_Python:一个可以套路别人的python小程序

    一个可以套路别人的python小程序~ 先简要介绍一下程序. 程序是使用pycharm工具,python语言所写.程序包括客户端 client.py 和服务器端 server.py 两部分,利用了py ...

  5. python如何运行一个python程序_python如何运行?第一个python小程序示范

    我们想要用python编程首先要做的就是安装一些工具,随后学会应用.那么问题来了,我们需要安装什么?python又是怎样运行的呢? 安装什么工具? 1.Python 3.6.5(我安装的,还有很多版本 ...

  6. 有趣的python小程序

    有趣的python小程序 1.密码生成器 x=int(input()) print(''.join(__import__('random').choice('QWERTYUIOPASDFGHJKLZX ...

  7. python有趣小程序代码-一个可以套路别人的python小程序实例代码

    先简要介绍一下程序. 程序是使用pycharm工具,python语言所写.程序包括客户端 client.py 和服务器端 server.py 两部分,利用了python中的socket包. 咳咳,使用 ...

  8. 有趣python小程序系列之一

    文章目录 前言 一.飘落的银杏 二.代码部分 1.导入所需的库 2.生成斐波那契数列 3.定义生成叶子的方法 4.定义生成树的方法 5.主函数部分 三.结果展示 前言 关于学python的初衷,如图, ...

  9. python降低图片分辨率_手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定!...

    原标题:手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定! 大数据文摘作品 编译:HAPPEN.于乐源.小鱼 一位乐于分享学生精彩笔记的大学教授对于扫描版的文件非常不满意--颜色不清晰并且 ...

  10. 简单的python小程序祝福母亲,母亲节快乐!

    简单的python小程序祝福母亲,母亲节快乐! 今天是星期天,也是母亲节, 不禁意识到二十二岁的我如此年轻,四十多岁的母亲似乎不再年轻. 今天编写了一个简单的python小程序. 代码如下,仅供参考. ...

最新文章

  1. IEEE史上首位华人主席,马里兰大学终身教授刘国瑞当选
  2. Chrome开发者工具对Vue应用的支持
  3. git常用配置(指令)
  4. Windows 10 安装 scrapy 步骤
  5. VMware Workstation不可恢复错误: (vcpu-0)
  6. 编译报错:make: *** No rule to make target (例如:starg.h)解决
  7. Scala学习笔记(六):Scala程序
  8. LeetCode_125_Python_验证回文串
  9. [libtorrent] tracker 逻辑及源码解析(调试)
  10. 上海驾照科目三练习笔记
  11. 【第二剑-构建活动】代码应该怎么写?
  12. esim工业路由器,爱陆通4G工业路由器5G工业路由器全网通工业路由器
  13. qq群排名霸屏技巧排名推广
  14. 一本通1592【例 1】国王
  15. 新加坡金融科技节之声|蚂蚁金服CTO程立:面向全球开放能力
  16. 三星复仇计划开始:苹果一出LTE设备就要起诉它!
  17. 【spark系列10】spark logicalPlan Statistics (逻辑计划阶段的统计信息)
  18. 使用树莓派搭建家庭宠物监控并在B站24小时直播
  19. 芯片刀片服务器,超微SuperBlade系列刀片服务器产品介绍
  20. 图像DFT和DCT的频域真实频率

热门文章

  1. 一个历史遗留问题,引发的linux内存管理的‘血案’
  2. OpenGL在frag着色器中模拟手电筒效果
  3. spring security默认登录页面登录用户,和自定义数据源
  4. 数据库连接池技术--c3p0
  5. 电路基础知识 -- 三态
  6. 深入解读EOS源代码之——区块链内核
  7. 致创业者:APP已死 服务永生
  8. excel了解mysql_对比Excel、MySQL、Python,分别讲述 “if函数” 的使用原理!
  9. JZOJ 4909. 【NOIP2017模拟12.3】李电下棋
  10. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...