Данный сценарий можно использовать как на собственном домашнем компьютере (своём сервере) или на виртуальном хостинге, который позволят задавать выполнение программ в необходимое время (Cron или планировщик заданий).
Резервное копирование данных это первоочередная задача, которую необходимо решить, т.к. в будущем это сэкономит наши время, нервы и средства, если что-то будет утерено в случае аварийной ситуации у хостинг-провайдера или благодаря своему рукожопию.
import os
import time
from smtplib import SMTP
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import Encoders
# от кого и кому отправлять
fromaddr = «from@rambler.ru»
toaddr = «to@yandex.ru»
# дамп БД и медиафайлы сжимаем в файл buckup.tar.gz
os.system(«mysqldump -u [пользователь] —password=[пароль] [БД] [таблица1] [таблица2]> dump.sql»)
os.system(«tar -zcf backup.tar.gz dump.sql [путь к каталогу с медиа файлами]»)
# создаем почтовое сообщение
msg = MIMEMultipart()
# заполняем поля отправителя, адресата и тему сообщения
msg[‘From’] = fromaddr
msg[‘To’] = toaddr
msg[‘Subject’] = ‘backup ‘+time.asctime()
# текстовая часть сообщения (не забываем указать кодировку)
msg.attach(MIMEText(«Текстовое вложение», «plain», «utf-8»))
# прикрепляем файл backup.tar.gz к почтовому сообщению
att = MIMEBase(‘application’, ‘octet-stream’)
att.set_payload(open(«backup.tar.gz», «rb»).read())
Encoders.encode_base64(att)
att.add_header(‘Content-Disposition’, ‘attachment; filename=»backup.tar.gz»‘)
msg.attach(att)
# соединяемся с почтовым сервером и выполняем авторизацию
server = SMTP(‘mail.rambler.ru’, 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(«почтовый логин», «пароль»)
# отправляем сформированное сообщение, после чего выходим
server.sendmail(fromaddr, toaddr, msg.as_string())
server.quit()
[/python]