Python完成重要文件备份实例

首先,我们希望解决的问题如下:
我想要一款程序来备份我所有的重要文件。
虽然这是一个简单的问题, 但是其中并没有足够的信息有助于让我们开始规划一份解决方
案。 我们需要进行一些分析( Analysis) 。 例如, 我们应该如何指定哪些文件是我们需要备份
的? 它们应该如何进行备份? 储存到哪里?
在正确地分析了这些问题过后, 我们便开始设计( Design) 我们的程序。 我们将列出一份关
于我们的程序应如何运转的清单。 在这个案例中, 我已经编写了如下清单来说明我将如何工
作。 如果由你来设计程序, 你可能不会做出同样的分析, 因为每个人都有其自己的行事方
式, 所以出现不同是完全正常、 且正确的。

打个比方,需要如下几步:
1.需要备份的文件与目录应在一份列表中予以指定。
2.备份必须存储在一个主备份目录中。
3.备份文件将打包压缩成 zip 文件。
4.zip 压缩文件的文件名由当前日期与时间构成。
5.我们使用在任何 GNU/Linux 或 Unix 发行版中都会默认提供的标准 zip 命令进行打包。
在这里你需要了解到只要有命令行界面, 你就可以使用任何需要用到的压缩或归档命
令。
针对 Windows 用户的提示
Windows 用户可以从 GnuWin32 项目页面 上下载并安装 zip 命令, 并将 C:\Program
Files\GnuWin32\bin 添加至你的系统的 PATH 环境变量中, 这一操作过程与我们为使系
统识别 Python 命令本身所做的事情相同。
 

解决方案
由于我们的程序设计方案现在已经相当稳定, 我们便可以开始编写代码, 这个过程我们称之
为实现( Implementation) 我们的解决方案。

import os
import time

# 1. 需要备份的文件与目录将被
# 指定在一个列表中。
# 例如在 Windows 下:
# source = ['"C:\\My Documents"', 'C:\\Code']
# 又例如在 Mac OS X 与 Linux 下:
source = ['/Users/swa/notes']
# 在这里要注意到我们必须在字符串中使用双引号
# 用以括起其中包含空格的名称。

#2. 备份文件必须存储在一个
#主备份目录中
#例如在 Windows 下:
# target_dir = 'E:\\Backup'

# 又例如在 Mac OS X 和 Linux 下:
target_dir = '/Users/swa/backup'

# 要记得将这里的目录地址修改至你将使用的路径
# 3. 备份文件将打包压缩成 zip 文件。
# 4. zip 压缩文件的文件名由当前日期与时间构成。
target = target_dir + os.sep + \
         time.strftime('%Y%m%d%H%M%S') + '.zip'

# 如果目标目录还不存在, 则进行创建
if not os.path.exists(target_dir):
       os.mkdir(target_dir) # 创建目录

# 5. 我们使用 zip 命令将文件打包成 zip 格式
zip_command = 'zip -r {0} {1}'.format(target,
' '.join(source))

# 运行备份
print('Zip command is:')
print(zip_command)
print('Running:')
    if os.system(zip_command) == 0:
        print('Successful backup to', target)
    else:
        print('Backup FAILED')


#输出
$ python backup_ver1.py
Zip command is:
zip -r /Users/swa/backup/20140328084844.zip /Users/swa/notes
Running:
adding: Users/swa/notes/ (stored 0%)
adding: Users/swa/notes/blah1.txt (stored 0%)
adding: Users/swa/notes/blah2.txt (stored 0%)
adding: Users/swa/notes/blah3.txt (stored 0%)
Successful backup to /Users/swa/backup/20140328084844.zip


 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值