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

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

代码如下:

```python

-- 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执行,终于搞定啦

1,490 views, since 2011-06-29