简明python教程

在例10.4 备份脚本——版本四的代码中有些需要注意的地方。

#!/usr/bin/python
# Filename: backup_ver4.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source = [‘/home/swaroop/byte’, ‘/home/swaroop/bin’]
# If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] or something like that
# 2. The backup must be stored in a main backup directory
target_dir = ‘/mnt/e/backup/’ # Remember to change this to what you will be using
# 3. The files are backed up into a zip file.
# 4. The current day is the name of the subdirectory in the main directory
today = target_dir + time.strftime(‘%Y%m%d’)
# The current time is the name of the zip archive
now = time.strftime(‘%H%M%S’)
# Take a comment from the user to create the name of the zip file
comment = raw_input(‘Enter a comment –> ‘)
if len(comment) == 0: # check if a comment was entered
target = today + os.sep + now + ‘.zip’
else:
target = today + os.sep + now + ‘_’ + \
comment.replace(‘ ‘, ‘_’) + ‘.zip’
# Notice the backslash!
# Create the subdirectory if it isn’t already there
if not os.path.exists(today):
os.mkdir(today) # make directory
print ‘Successfully created directory’, today
# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr ‘%s’ %s" % (target, ‘ ‘.join(source))
# Run the backup
if os.system(zip_command) == 0:
print ‘Successful backup to’, target
else:
print ‘Backup FAILED’

文中提到“我还希望有的一个优化是使用tar命令替代zip命令。这样做的一个优势是在你结合使用tar和gzip
命令的时候,备份会更快更小。如果你想要在Windows中使用这些归档,WinZip也能方便地处
理这些.tar.gz文件。tar命令在大多数Linux/Unix系统中都是默认可用的。Windows用户也可以
载安装它

命令字符串现在将成为:
tar = ‘tar -cvzf %s %s -X /home/swaroop/excludes.txt’ % (target, ‘ ‘.join(srcdir))

需要补充的是Windows用户安装完LibArchive后命令为bsdtar,而且若想使用-z这个选项,还需安装gzip软件。

代码中的

target = today + os.sep + now + ‘.zip’

改为

target = today + os.sep + now + ‘.tar.gz’

使用bsdtar -cvzf %s %s -X /home/swaroop/excludes.txt’ % (target, ‘ ‘.join(source))

英文原版已经没有用tar替换zip的内容了,提出建议用Python标准库中zipfile和tarfile来重写ver5。

发表评论