ubuntu下使用python和crontab进行文件和mysql数据库自动备份

今天上午考试,下午没事,就把阳光影视自动备份给弄出来了,是用的的python,主要功能如下:
1.把阳光影视网页文件夹用 7z 命令压缩打包,文件为当前时间,形如 20110629_194101.7z
2.用mysqldump导出数据库,文件名同上,如 20110629_194101.sql
3.使用FTP连接备份服务器,将两个文件上传,并删除本地文件(用到ftplib)

代码如下:

# -*- coding: utf-8 -*-
'''
For: compress folder 'vodcms' and dump mysql to file,then
use ftplib transfer it to another server
by Lerry  http://lerry.org
Start from 2011/06/29 18:17:24
Last edit at 2011/06/29
'''
import os
import ftplib
import lerry  #这是我自己写的一个库

def buildFilename():  #根据时间生成文件名 形如 20110629_213745
    a = lerry.Mytime()  #得到的是处理后的时间,形如['2011', '06', '29', '21', '37', '45']
    return ''.join(a[:3])+'_'+''.join(a[3:])
    
bakeup_name =  buildFilename()  
basedir = '/home/lerry/wwwroot/'

#定义服务器信息
FTP_USER = 'user'
FTP_PASS = 'passwd'
SERVER_ADDRESS = '8.8.8.8'  #非真实ip

#生成备份命令    
BAKEUP_FOLDER = '7z a -t7z -r /home/lerry/wwwroot/'+bakeup_name+'.7z /home/lerry/wwwroot/vodcms/'
BAKEUP_DB = 'mysqldump -u root -p123456 vodcms>/home/lerry/wwwroot/'+bakeup_name+'.sql'

#执行备份命令并记录日志
os.popen(BAKEUP_FOLDER).read()
os.popen(BAKEUP_DB).read()

#打开日志文件
log = open('/home/lerry/vodbakeup/'+bakeup_name+'.log','w')
#连接到ftp并上传文件,然后删除文件
f = ftplib.FTP()
f.connect(SERVER_ADDRESS)
log.write(f.login(FTP_USER,FTP_PASS))
name1 = bakeup_name+'.7z'
name2 = bakeup_name+'.sql'
temp1 = open(basedir+name1,'rb')  #读取文件,下同
temp2 = open(basedir+name2,'rb')
log.write(f.storbinary('STOR '+name1,temp1)+'\n')
log.write(f.storbinary('STOR '+name2,temp2)+'\n')
f.close()

#上传后删除文件
os.remove(basedir+name1)
os.remove(basedir+name2)

注释还是很详细的,就不解释了然后用crontab设定计划任务,每周三3:00执行,终于搞定啦