---
title: "ubuntu下使用python和crontab进行文件和mysql数据库自动备份"
url: "https://lerry.me/post/2011/06/bakeup_with_python"
date: 2011-06-29T13:40:00.000Z
updated: 2026-08-31T12:02:38.293Z
tags:
language: zh-CN
---

# 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&gt;/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执行，终于搞定啦
