Настройка внешнего мониторинга: простая программа, которая пишет отчет о том, что бэкап прошел.
Что такое внешний мониторинг бэкапа и зачем нужен отчёт
Внешний мониторинг – это небольшая программа, которая после завершения копирования проверяет, что всё прошло как нужно, и пишет короткий отчёт. Представьте, что вы отправляете важные документы почтой: вам нужен подтверждающий билет, что посылка дошла. Точно так же и в цифровом мире: без отчёта вы не знаете, спасён ли ваш фото‑архив или важные договоры.
Плюсы автоматического отчёта
| Плюс | Что это даёт вам |
|---|---|
| Гарантия | Вы сразу видите, что бэкап прошёл без ошибок. |
| Прозрачность | Можно отправить отчёт на почту или в мессенджер, чтобы все члены команды были в курсе. |
| История | Хранятся логи, из которых удобно выводить статистику за месяц, квартал. |
| Экономия времени | Не нужно вручную проверять папки и файлы. |
Выбор инструмента: почему именно Python
- Кроссплатформенность – один и тот же скрипт работает в Windows, macOS и Linux.
- Библиотеки «из коробки» –
os,hashlib,smtplib,logging. - Простота чтения – даже если вы не программист, код выглядит как обычные инструкции.
Если вы уже используете планировщик задач (Task Scheduler в Windows, cron в Linux/macOS), достаточно написать скрипт и «прикрепить» его к расписанию.
Установка окружения
| Шаг | Действие | Команда (Linux/macOS) | Команда (Windows) |
|---|---|---|---|
| 1 | Установить Python 3.9+ | sudo apt-get install python3 |
Скачайте с https://www.python.org/ |
| 2 | Создать виртуальное окружение | python3 -m venv venv |
python -m venv venv |
| 3 | Активировать окружение | source venv/bin/activate |
venv\Scripts\activate |
| 4 | Установить дополнительные пакеты (по желанию) | pip install tqdm |
pip install tqdm |
Термин: виртуальное окружение – изолированная папка, где хранятся библиотеки проекта, чтобы они не конфликтовали с системными.
Пошаговое написание скрипта
1. Структура проекта
backup_monitor/
│
├─ backup_monitor.py # основной скрипт
├─ config.yaml # параметры (пути, получатели)
└─ logs/
└─ backup.log # журнал работы
2. Файл config.yaml
source_dir: "/home/user/photos" # откуда копируем
dest_dir: "/mnt/backup/photos" # куда копируем
report_email: "you@example.com" # куда отправляем отчёт
smtp:
host: "smtp.example.com"
port: 587
user: "you@example.com"
password: "секретный_пароль"
3. Основной код backup_monitor.py
#!/usr/bin/env python3
import os, sys, hashlib, smtplib, logging, yaml, datetime
from email.message import EmailMessage
from pathlib import Path
# ---------- Загрузка конфигурации ----------
with open("config.yaml", "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)
SRC = Path(cfg["source_dir"])
DST = Path(cfg["dest_dir"])
REPORT_TO = cfg["report_email"]
SMTP = cfg["smtp"]
# ---------- Настройка логгера ----------
log_dir = Path("logs")
log_dir.mkdir(exist_ok=True)
log_file = log_dir / "backup.log"
logging.basicConfig(
filename=log_file,
level=logging.INFO,
format="%(asctime)s %(levelname)s %(message)s",
)
def file_checksum(p: Path) -> str:
"""Возвращает MD5‑хеш файла."""
h = hashlib.md5()
with p.open("rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
h.update(chunk)
return h.hexdigest()
def compare_dirs(src: Path, dst: Path) -> dict:
"""Сравнивает файлы в двух папках, возвращает словарь результатов."""
result = {"ok": [], "missing": [], "corrupt": []}
for root, _, files in os.walk(src):
for name in files:
src_file = Path(root) / name
rel_path = src_file.relative_to(src)
dst_file = dst / rel_path
if not dst_file.exists():
result["missing"].append(str(rel_path))
continue
if file_checksum(src_file) != file_checksum(dst_file):
result["corrupt"].append(str(rel_path))
else:
result["ok"].append(str(rel_path))
return result
def build_report(data: dict) -> str:
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
lines = [
f"Отчёт о бэкапе от {now}",
f"Исходная папка: {SRC}",
f"Папка назначения: {DST}",
"",
f"Успешно скопировано: {len(data['ok'])}",
f"Отсутствует в резерве: {len(data['missing'])}",
f"Повреждённые файлы: {len(data['corrupt'])}",
"",
]
if data["missing"]:
lines.append("Отсутствующие файлы:")
lines.extend(f" - {p}" for p in data["missing"])
if data["corrupt"]:
lines.append("\nПовреждённые файлы:")
lines.extend(f" - {p}" for p in data["corrupt"])
return "\n".join(lines)
def send_email(body: str):
msg = EmailMessage()
msg["Subject"] = "✅ Отчёт о бэкапе"
msg["From"] = SMTP["user"]
msg["To"] = REPORT_TO
msg.set_content(body)
with smtplib.SMTP(SMTP["host"], SMTP["port"]) as server:
server.starttls()
server.login(SMTP["user"], SMTP["password"])
server.send_message(msg)
def main():
logging.info("Запуск мониторинга")
result = compare_dirs(SRC, DST)
report = build_report(result)
logging.info("Отчёт сформирован")
print(report) # вывод в консоль (для отладки)
send_email(report)
logging.info("Отчёт отправлен на %s", REPORT_TO)
if __name__ == "__main__":
main()
Что делает скрипт?
- Читает конфигурацию из
config.yaml. - Сравнивает каждый файл в исходной папке с его копией в резерве, используя MD5‑контрольную сумму (быстро и надёжно).
- Формирует человекочитаемый текстовый отчёт.
- Отправляет отчёт по SMTP‑почте.
- Записывает всё в журнал
logs/backup.log– полезно для отладки.
4. Тестовый запуск
python backup_monitor.py
Если всё настроено правильно, в консоли появится отчёт, а в почте – письмо с тем же содержимым. В журнале будет строка INFO: Запуск мониторинга и последующие сообщения.
Автоматический запуск: cron (Linux/macOS)
Откройте таблицу задач:
crontab -e
Добавьте строку (пример: каждый вечер в 22:00):
0 22 * * * /home/user/backup_monitor/venv/bin/python /home/user/backup_monitor/backup_monitor.py >> /home/user/backup_monitor/logs/cron.log 2>&1
Пояснение:
| Поле | Значение |
|---|---|
| Минуты | 0 |
| Часы | 22 |
| День месяца | * (каждый) |
| Месяц | * |
| День недели | * |
| Команда | путь к интерпретатору и скрипту |
Windows: Task Scheduler
- Создайте задачу → Create Basic Task.
- Выберите триггер Daily, время 22:00.
- Действие Start a program →
C:\Path\To\venv\Scripts\python.exe. - В аргументах укажите путь к
backup_monitor.py. - Включите запись вывода в файл (опционально) через параметр
> C:\Path\To\logs\cron.log 2>&1.
Отладка и проверка корректности
| Шаг | Как проверить |
|---|---|
| Логи | Откройте logs/backup.log – ищите строки ERROR или WARNING. |
| Тестовый файл | Скопируйте небольшую папку с 2‑3 файлами, измените один файл в резерве и запустите скрипт – в отчёте должна появиться «Повреждённые файлы». |
| Почта | Убедитесь, что письмо не попадает в спам. Если попадает – добавьте ваш SMTP‑сервер в список доверенных. |
| Контрольные суммы | Сравните MD5‑хеши вручную (md5sum file.jpg) – они должны совпадать. |
Практика для закрепления
- Измените формат отчёта – вместо простого текста сделайте HTML‑письмо с таблицей. Какие функции Python вам потребуются?
- Добавьте проверку свободного места на диске назначения и включите её в отчёт. Как получить размер свободного места в кроссплатформенном виде?
- Настройте отправку в Telegram вместо e‑mail (используйте Bot API). Какие шаги нужны для аутентификации и отправки сообщения?
- Разработайте «откат»: если найдено более 5 повреждённых файлов, скрипт автоматически удаляет их из резервной папки и пишет отдельный журнал. Как реализовать условие и запись в отдельный файл?
- Проведите нагрузочный тест: скопируйте 10 000 файлов (по 1 МБ каждый) и измерьте время работы скрипта. Какие оптимизации (например, многопоточность) могут ускорить процесс?
Ответьте на вопросы, попробуйте реализовать хотя бы одну из задач и сравните результат с первоначальной версией. Это поможет закрепить материал и увидеть, как небольшие изменения влияют на надёжность и удобство вашего «цифрового сейфа».
Введение: почему один внешний диск — это не бэкап, а ловушка.
Разбор страшных историй: что теряют люди при поломке телефона и ноутбука.
Главное правило бэкапа: «Правило 3-2-1» для новичков (упрощенная версия).
Определяем, что именно мы спасаем: папки «Фото», «Документы», «Рабочий стол» и «Загрузки».
Аудит текущего хаоса: как быстро найти все важные файлы по всему компьютеру.
Принимаем решение: облако, NAS или внешний диск как основа (разбор плюсов и минусов).
Разбор тарифов облачных сервисов: Яндекс Диск, Google Drive, Dropbox и Облако Mail.
Секретный лайфхак: как купить облако со скидкой на 2 года вперед.
Установка и первичный вход в выбранное облачное приложение на компьютер.
Настройка «умной» синхронизации: что хранить в облаке, а что только на диске.
Как правильно структурировать папки, чтобы бэкап не превратился в свалку.
Создание главной родительской папки «Цифровой Сейф 2026».
Перенос всех разрозненных фото в единую папку с сортировкой по годам.
Как переименовать 1000 файлов за 2 минуты с помощью автоматического переименователя.
Настройка автозагрузки: чтобы облако стартовало вместе с Windows автоматически.
Включаем функцию «Живые фото» и видео в высоком качестве в настройках приложения.
Первый ручной запуск синхронизации: заливаем самое ценное в первую очередь.
Как проверить, что файлы реально загрузились, а не висят в очереди.
Настройка мобильного приложения: как включить автоматическую загрузку камеры.
Важный чек-бокс: отключаем «Сжатие фото» в настройках мобильного приложения.
Как настроить автозагрузку только по Wi-Fi, чтобы не съедать мобильный трафик.
Настройка исключений: что НЕ нужно бэкапить (папка Temp, Кэш игр, Корзина).
Знакомство с системой «История версий» файлов (как восстановить случайно пересохраненный документ).
Настройка резервного копирования папки «Рабочий стол» (самая частая потеря).
Как добавить в бэкап папку с сохранениями игр (для геймеров).
Настройка синхронизации паролей из браузера (запасной план, если менеджер платный).
Создание «Резервного ключа доступа» к облаку и сохранение его в надежном месте.
Второй эшелон защиты: включаем двухфакторную аутентификацию (2FA) на почте и облаке.
Установка программы для автоматического копирования на внешний USB-диск (FreeFileSync).
Настройка зеркального режима: чтобы при подключении диска данные дублировались автоматически.
Как зашифровать внешний диск, чтобы при потере никто не прочитал личные фото.
Настройка расписания Windows: запуск бэкапа на внешний диск каждую пятницу в 22:00.
Создание специальной папки-«Инбокс» для новых файлов, чтобы не забыть их закинуть в бэкап.
Настройка Автоматического импорта с фотоаппарата и SD-карты сразу в папку «Сейф».
План Б: как подключить второй бесплатный облачный аккаунт для самых важных сканов паспорта.
Ручной экспорт самых важных документов в формате PDF/A (для долгого хранения).
Как подписать файлы (Свидетельство, Диплом, ИНН) чтобы найти через поиск за 5 секунд.
Настройка оповещений: отключаем надоедливые уведомления, оставляем только критичные ошибки.
Тест-драйв: выдёргиваем флешку и удаляем файл с ПК, чтобы проверить восстановление из облака.
Восстанавливаем удалённый файл через веб-интерфейс облака (практическое задание).
Как проверить целостность фото (не битый ли файл) после первой синхронизации.
Настройка автоматической очистки телефона: удаление фото после успешной загрузки в облако.
Создание «Завещательного конверта»: как передать доступ к сейфу родным (инструкция).
Внедрение привычки «5 секунд»: бросаем файл в папку-инбокс, а не на рабочий стол.
Установка лимита размера папки: как не переплачивать за облако, сжимая лишнее видео.
Настройка внешнего мониторинга: простая программа, которая пишет отчет о том, что бэкап прошел.
Правила для поездок: как включить «Режим экономии» и остановить синхронизацию в роуминге.
Как часто нужно менять пароль от «Сейфа» и генерировать новый сложный пароль.
Финальная проверка: сверяем общий вес данных на ПК и в облаке (должно совпадать).
Создание личного графика ежемесячной ревизии (напоминание в календарь на 1 число).
Что делать, если облако переполнилось: стратегия архивации старых лет в ZIP-архивы.
Бонусный модуль: как автоматически отправлять копию важного документа себе на второй email.
Подведение итогов вечера: чек-лист «Спокойной ночи» (все сохранено, все зашифровано).
Как откатиться к настройкам, если вы всё сломали (точка восстановления настроек приложения).
Завершающая инструкция: что сказать технической поддержке, если возникнет ошибка 405.
Аудио конвертер Морзе
Бесплатный гайд по оптимизации Битрикс на VDSina
БЕСПЛАТНЫЙ КУРС: «ЦИФРОВОЙ СЕЙФ: БЭКАП ДЛЯ ВСЕХ»
Чат онлайн с возможностью изменения темы
Чат рулетка
Что такое многофакторная аутентификация MFA, варианты реализации и критерии выбора решения
Fashion-байинг: анализ продаж как основа для дизайнерского решения
ИП или ООО: выбор бизнес-формы для новичков в Москве
Как настроить резервное копирование для MySQL с помощью Percona XtraBackup
Как вывести сайт в топ без контекста и бюджета
Коттеджный поселок "Дуслык" у Уфы
ОГЭ 2024: актуальные материалы и задания
Онлайн рулетка с поддержкой всех устройств
Оплата ИИ-решений онлайн
Основы строительства: стандарты ГОСТ R 52348-2005 и требования к утеплителям
Проблемы с AutoCAD при использовании плагинов - решения
Рулетка видео чатов
Самостоятельные поездки: полное руководство для новичков
Secure Authentication Server: что это и для чего используется
Стальные фитинги и трубы для промышленности
Технология единого входа SSO: что это и зачем она нужна
Видео звонки Екатеринбург
Визуальное представление: стрелки и подписи
Все основы резервного копирования данных

