Heads up! This post was written 15 years ago. Some information might be outdated or may have changed since then.
import commands
import sys
import time
import os
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
db_host = '127.0.0.1'
db_user = "username_for_database"
db_pass = "*******************"
email_user = ""
email_smtp_server = "*.superhosting.bg"
email_from_user = "Yuks "
email_smtp_login_user = "[email protected]"
email_smtp_login_pass = "*******"
email_smtp_server_port = "25"
email_smtp_sent_to = ["[email protected]"]
temp_folder = "/home/*****/scripts/backup_db/"
def backup_db(currentDatabase):
backupFile = temp_folder + currentDatabase + ".sql"
backupFilePath = temp_folder + currentDatabase + ".sql"
zipFile = temp_folder + currentDatabase + ".tgz"
commands.getoutput("mysqldump --host=%s --opt --user=%s --password=%s %s > %s" % (db_host, db_user, db_pass, currentDatabase, backupFilePath))
os.chdir(temp_folder)
commands.getoutput("/bin/tar cfz %s %s" % (zipFile, backupFile))
os.remove(backupFilePath)
def sendMail(to, subject, text, files=[]):
assert type(to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = email_from_user
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(email_smtp_server,email_smtp_server_port)
smtp.login(email_smtp_login_user, email_smtp_login_pass)
smtp.sendmail(email_from_user, to, msg.as_string() )
smtp.close()
def backup_and_send(bdatabase):
backup_db(bdatabase)
sendMail(email_smtp_sent_to,"Database archive of " + bdatabase,"Database " + bdatabase,[temp_folder + bdatabase + ".tgz"])
os.chdir(temp_folder)
os.remove(bdatabase + ".tgz")
#print "ok!"
backup_and_send(sys.argv[1]) За да работи коректно е нужно да се променят някои от параметрите и по конкретно db_host = '127.0.0.1' // сървъра на mysql
db_user = "username_for_database" // потребителското име за достъп до Mysql
db_pass = "*******************"// паролата за достъп до Mysql
email_user = ""
email_smtp_server = "*.superhosting.bg"// smtp сървъра за изпращане на mail
email_from_user = "Yuks <[email protected]>"// полето от на изпращания емаил
email_smtp_login_user = "[email protected]"// потребителя за smtp сървъра
email_smtp_login_pass = "*****"//паролата за smtp сървъра
email_smtp_server_port = "25" // порта за smtp сървъра
email_smtp_sent_to = ["[email protected]"] // email адреса до който ще се праща
temp_folder = "/home/*****/backup_db/"// временна директория с права за писане Работата със скрипта е по следния начин: python /full/path/to/script/script.py database_to_archive Може да се свали и от тук