为了账号安全,请及时绑定邮箱和手机立即绑定

python-zip压缩学习笔记

标签:
Python

最近在学python的简明教程,用python写一个简单的备份脚本,以下是教程中的要求

  1. 需要备份的文件与目录应在一份列表中予以指定。

  2. 备份必须存储在一个主备份目录中。

  3. 备份文件将打包压缩成 zip 文件。

  4. zip 压缩文件的文件名由当前日期与时间构成。

  5. 我们使用在任何 GNU/Linux 或 Unix 发行版中都会默认提供的标准  zip  命令进行打包。

  6. 在这里你需要了解到只要有命令行界面,你就可以使用任何需要用到的压缩或归档命

  7. 令。
    在命令行中允许额外的文件与目录传递到脚本中。我们可以从sys.argv  列表中获得这些名称,然后我们可以通过 list  类提供的  extend  方法把它们添加到我们的  source  列表中.

说明:
extend()方法追加序列内容到列表,sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下例子说明:
#!/usr/bin/python
#coding=utf-8
import os,sys
import time

#增加外部参数输入
externalList = sys.argv[1:]
print '输入参数路径为:', externalList
#定义源文件备份路径
sourceList = ['/Users/swa/notes']
#加入外部路径参数列表
sourceList.extend(externalList)
#打印加入后参数列表
print "Extended List:",sourceList
#目标备份目录
target_dir = '/Users/swa/backup'
#判断是否存在备份目录,不存在则新建
if not os.path.exists(target_dir):
os.mkdir(target_dir)
#将当前日期作为主备份目录下的子目录名称
today = target_dir + os.sep + time.strftime('%Y%m%d')
#将当前时间作为zip包的文件名
now = time.strftime('%H%M%S')
#添加一条用户注释
comment = rawinput('请输入你的备份注释:')
#检查是否有评论注入
if len(comment) == 0:
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '
' + comment.replace(' ','_') + '.zip'
#如果子目录不存在则创建一个
if not os.path.exists(today):
os.mkdir(today)
print('Successfully created directory',today)
zip_command = 'zip -vr {0} {1}'.format(target,sourceList[1])
print('Zip command is:')
print(zip_command)
print('Running:')
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print('Backup FAILED')
运行结果:
[root@localhost python]#python backup_ver4.py /etc/yum.repos.d
输入参数路径为: ['/etc/yum.repos.d']
Extended List: ['/Users/swa/notes', '/etc/yum.repos.d']
请输入你的备份注释:weq
Zip command is:
zip -vr /Users/swa/backup/20171221/153111_weq.zip /etc/yum.repos.d
Running:
adding: etc/yum.repos.d/  (in=0) (out=0) (stored 0%)
adding: etc/yum.repos.d/rhel-source.repo.bak  (in=529) (out=206) (deflated 61%)
adding: etc/yum.repos.d/packagekit-media.repo (in=114) (out=110) (deflated 4%)
adding: etc/yum.repos.d/iso.repo  (in=171) (out=131) (deflated 23%)
total bytes=814, compressed=447 -> 45% savings
Successful backup to /Users/swa/backup/20171221/153111_weq.zip

后续:本来想通过列表循环遍历把源路径/Users/swa/notes的文件目录也备份压缩,结果后来由于自己技术能力有限,查阅很多也没有解决,只能待后续研究出来再做改动,本人初学者,写的不好的地方还挺见谅!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消