您的位置:首页 > 运维架构 > Linux

linux服务器备份(python)

2015-11-06 16:39 555 查看
#!/usr/bin/python

# Filename: serverbak-ftp.py

import   os

import   time

import   sys

import   datetime

from stat import *

from ftplib import FTP

import smtplib

import datetime

from email.mime.text import MIMEText

t= datetime.datetime.now()
ctime = "%s-%s-%s:"%(t.year,t.month,t.day)

//收件邮箱

mailto_list=["xxx@qq.com"]

//发送邮箱

mail_host="smtp.sina.com"

mail_user="xxx"

mail_pass="xxx"

mail_postfix="sina.com"

//时间处理 获取删除3天前的备份,最多保留3天

now = datetime.date.today()

deltime = now - datetime.timedelta(days=3)

dtime=deltime.isoformat()

deldir = 'cjbd_backup__'+dtime+'.zip'

//邮箱函数

def send_mail(content):

    me="hello"+"<"+mail_user+"@"+mail_postfix+">"

    msg = MIMEText(content,_subtype='plain',_charset='gb2312')

    msg['Subject'] = "xxx Backup Result"

    msg['From'] = me

    msg['To'] = ";".join(mailto_list)

    try:

        server = smtplib.SMTP()

        server.connect(mail_host)

        server.login(mail_user,mail_pass)

        server.sendmail(me, mailto_list, msg.as_string())

        server.close()

        return True

    except Exception, e:

        print str(e)

        return False

tobackup = "/mnt/cjbd/"

backfilename = tobackup +'cjbd_backup__'+ time.strftime('%Y-%m-%d')+'.zip'

filepath  = '/var/www/2012'

## backup gzip command

zip_command = "zip -r  %s  %s" %(backfilename,filepath)

if os.system(zip_command)==0:

                print 'Zip file to',backfilename

else:

                print 'Zip file fail!'

                f=send_mail(ctime+'Zip file fial')

                exit

## upload ftp server

ftp=FTP()

ftp.set_debuglevel(2)

ftp.connect('192.168.0.1','21')

ftp.login('xxx','xxx')

//ftp上传文件,以及远程删除3天前的备份程序,无论ftp上传是否成功,本地压缩文件都要删除。文件ftp上传后邮箱通知结果。

#ftp.cwd()

bufsize = 1024

file_handler = open(backfilename,'rb')

ftp.set_pasv(0)

rev=ftp.storbinary('STOR %s' % os.path.basename(backfilename),file_handler,bufsize)

ftp.set_debuglevel(0)

file_handler.close()

if rev == '226 File received ok' :

        print 'ftp rec ok'

        if os.system("rm "+backfilename) == 0 :

                print 'delete ok'

                delinfo=ftp.delete(deldir)

                if '250' in delinfo:

                        print 'delete cwd dir success!'

                        f=send_mail(ctime+'Backup file Success!!!')

                else:

                        f=send_mail(ctime+'Delete cwd dir fail!')

        else:

                print 'delete fail'

                f=send_mail(ctime+'ftp delete fial')

else :

        print 'ftp rec fail'

        f=send_mail(ctime+"ftp recived fail!")

ftp.quit()
~            

#注意:备份服务器需要开启ftp server 本程序采取主动模式,防火墙请打开20 及21端口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息