Данный сценарий можно использовать как на собственном домашнем компьютере (своём сервере) или на виртуальном хостинге, который позволят задавать выполнение программ в необходимое время (Cron или планировщик заданий).
Резервное копирование данных это первоочередная задача, которую необходимо решить, т.к. в будущем это сэкономит наши время, нервы и средства, если что-то будет утерено в случае аварийной ситуации у хостинг-провайдера или благодаря своему рукожопию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# -*- coding: utf-8 -*- 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() |