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执行,终于搞定啦
作者: Lerry
发表时间:2011-06-29
版权说明:CC BY-NC-ND 4.0 DEED