Гид по технологиям

Автоматический бэкап Raspberry Pi с отправкой на электронную почту

5 min read Raspberry Pi Обновлено 18 Dec 2025
Автоматический бэкап Raspberry Pi и отправка на e-mail
Автоматический бэкап Raspberry Pi и отправка на e-mail

Плата Raspberry Pi с папкой и надписью «резервное копирование» поверх изображения

Зачем автоматизировать бэкап Raspberry Pi

Raspberry Pi — недорогая и компактная платформа, на которой часто хранят важные проекты и данные. Системы выходят из строя: SD-карты портятся, файлы удаляются по ошибке, обновления ломают конфигурации. Регулярные автоматические бэкапы уменьшают риск потери данных и ускоряют восстановление.

Ключевая идея: создавать архивы нужных каталогов, опционально шифровать их, и отправлять на внешний почтовый ящик или в облако. Этот подход даёт копию вне устройства, что важно при физической поломке или краже.

Что понадобится

  • Raspberry Pi с установленной ОС (Raspbian / Raspberry Pi OS).
  • Доступ в терминал (SSH или локальная сессия).
  • Утилита tar (стандартно присутствует).
  • Почтовый клиент командной строки mutt.
  • Аккаунт электронной почты (в примерах — Gmail) и возможность создать App Password.
  • cron для планирования задач.

Создание бэкапа (архив tar)

Простой пример создания tar.gz архива каталога /home/pi/my_data:

tar -zcvf /path/to/my_data_backup.tar.gz /home/pi/my_data

Пояснения:

  • -z — сжатие gzip
  • -c — создать архив
  • -v — подробный вывод
  • -f — файл архива

Советы по архиву:

  • Проверяйте пространство на диске: df -h.
  • Для больших данных используйте сжатие xz: tar -cJvf backup.tar.xz /path.
  • Для инкрементных бэкапов применяйте rsync или snapshot-решения.

Установка mutt

Mutt — лёгкий почтовый клиент для терминала. Установите его:

sudo apt update
sudo apt install mutt -y

Настройка mutt для отправки через Gmail

Создайте файл конфигурации ~/.muttrc и заполните его данными вашей учётной записи. Откройте редактор:

nano ~/.muttrc

Вставьте (отредактируйте поля username и пароли):

set from = "username@gmail.com"
set realname = "Ваше Имя"

# IMAP (если нужно читать почту)
set imap_user = "username@gmail.com"
set imap_pass = ""

# SMTP для отправки через SMTPS
set smtp_url = "smtps://username@smtp.gmail.com"
set smtp_pass = ""

# Удалённые папки Gmail
set folder = "imaps://imap.gmail.com/"
set spoolfile = "+INBOX"

Сохраните Ctrl+X, Y, Enter.

Тест отправки:

echo "Тестовое сообщение" | mutt -s "Тест отправки mutt" username@gmail.com

Успешная отправка тестового письма через mutt

Если возникла ошибка «SASL Authentication Failed», используйте App Password (см. ниже).

Создание App Password в Gmail (коротко)

Gmail отказывается принимать подключения от клиентов без 2FA. Процесс выглядит так:

  1. Войдите в Google Account.
  2. Перейдите в раздел безопасности (Security) — Как вы входите в Google.
  3. Включите 2-Step Verification (двухэтапная проверка), если ещё не включена.
  4. В разделе App passwords создайте новый пароль для «Other (Custom name)» и введите, например, mutt.
  5. Скопируйте сгенерированный пароль и вставьте его в ~/.muttrc вместо (без пробелов).

Страница создания пароля приложений Google — выбор устройства и генерация пароля

После этого повторите тест отправки:

echo "Тестовое сообщение" | mutt -s "Тест отправки mutt" username@gmail.com

Скриншот сгенерированного пароля приложения Google

Важно: App Password — альтернатива полному OAuth. Для промышленного использования рассмотрите отправку через сервисы с поддержкой OAuth или использование API.

Скрипт бэкапа и отправки письма

Создайте исполняемый Bash-скрипт backup.sh:

nano backup.sh

Вставьте шаблон (отредактируйте пути и адреса):

#!/bin/bash
# Параметры
SRC="/home/pi/my_data"
DEST="/path/to/my_data_backup_$(date +%F).tar.gz"
RECIPIENT="your-email@example.com"
SUBJECT="Daily Backup $(hostname) $(date +%F)"
BODY="Here is your daily backup from $(hostname)"

# Создание архива
tar -zcvf "$DEST" "$SRC"

# (Опционально) шифрование GPG
# gpg --output "${DEST}.gpg" --yes --batch --passphrase "ваш_пароль" -c "$DEST"

# Отправка письма с вложением
echo "$BODY" | mutt -a "$DEST" -s "$SUBJECT" -- "$RECIPIENT"

# Очистка старых архивов (пример — оставить 7 дней)
find /path/to -name "my_data_backup_*.tar.gz" -mtime +7 -type f -delete

Сделайте скрипт исполняемым:

chmod +x backup.sh

Проверка вручную:

./backup.sh

Если отправка проходит — переходите к автоматизации.

Планирование задач через cron

Откройте crontab для текущего пользователя:

crontab -e

Добавьте строку, чтобы запускать скрипт ежедневно в 2:00:

0 2 * * * /bin/bash /full/path/to/backup.sh >> /var/log/backup_rpi.log 2>&1

Примечания:

  • Используйте полные пути (cron не знает $PATH вашей сессии).
  • Логируйте stdout и stderr в файл для диагностики.
  • Добавьте ротацию логов (logrotate) для /var/log/backup_rpi.log.

Раздел: Безопасность и защита персональных данных

Important: если в бэкапах содержатся персональные данные (PII), зашифруйте архив перед отправкой. Пример шифрования симметричным GPG:

gpg --symmetric --cipher-algo AES256 --output ${DEST}.gpg ${DEST}

Отправляйте уже ${DEST}.gpg, а не незашифрованный файл. Храните ключи/пароли отдельно и безопасно.

Политика хранения:

  • Минимально необходимый срок хранения — задайте бизнес-требования.
  • Удаляйте старые копии через find -mtime.

Альтернативные подходы

Если размер вложений превышает 25 МБ (ограничение Gmail), рассмотрите:

  • Отправку ссылок на файлы в облаке (Google Drive, Dropbox).
  • Использование rclone для загрузки на Google Drive/Amazon S3, затем отправка уведомления по почте.
  • Использование multipart upload и разбиение архива: split -b 20M bigfile.tar.gz part_.

Пример rclone:

rclone copy /path/to/my_data_backup.tar.gz remote:backups/raspi/ -P

Критерии приёмки и тесты

Критерии приёмки для автоматического бэкапа:

  • Скрипт корректно создаёт архив указанного каталога.
  • Архив отправляется на указанный адрес (проверить доставку).
  • При отсутствии сети задача логирует ошибку и повторяет при следующем запуске.
  • Старые архивы удаляются через заданный срок.

Минимальные тесты:

  • Запустить ./backup.sh и убедиться в появлении файла и письма.
  • Эмулировать ошибку SMTP (неверный пароль) и проверить логирование.
  • Проверить ротацию и удаление старых файлов.

Отладка и распространённые ошибки

  • SASL Authentication Failed: проверьте App Password и параметры SMTP.
  • Нет прав на запись: проверьте владельца и права каталогов.
  • Cron не запускает скрипт: укажите полный путь и проверьте переменные окружения.
  • Размер вложения >25MB: разбить файл или использовать облако.

Рекомендации по надёжности и зрелости процесса

Минимальный уровень: простой скрипт + cron + отправка по почте. Средний уровень: шифрование GPG, логирование, ротация и уведомления о сбоях. Продвинутый уровень: инкрементные бэкапы, мониторинг (Prometheus/Alertmanager), хранение в объектном хранилище с версионностью.

Матрица рисков и смягчения

  • Потеря данных при ошибке скрипта: логирование и тестовый прогон после изменений.
  • Перехват незашифрованных архивов: использовать GPG или TLS (см. SMTP через SMTPS).
  • Переполнение диска: мониторинг свободного места и предварительная очистка.

Чек-листы по ролям

Администратор:

  • Настроить 2FA и App Password.
  • Настроить шифрование и ротацию.
  • Настроить мониторинг и оповещения.

Хобби/любитель:

  • Сделать рабочий скрипт и crontab.
  • Проверить доставку писем вручную.

Разработчик проекта:

  • Убедиться, что бэкапы содержат нужные конфиги и данные.
  • Добавить проверку контрольной суммы (md5/sha256).

Контроль целостности (опционально)

После создания архива создайте контрольную сумму:

sha256sum "$DEST" > "${DEST}.sha256"

При восстановлении проверяйте совпадение суммы.

Когда этот подход не подходит

  • Очень большие объёмы данных (>25–100 ГБ): лучше использовать прямую загрузку в облако (rclone, S3).
  • Жёсткие требования соответствия и аудита: используйте управляемые решения с версионированием.

Короткая памятка (cheat sheet)

  • Создать архив: tar -zcvf /path/backup.tar.gz /path/to/data
  • Отправить через mutt: echo "msg" | mutt -a "/path/backup.tar.gz" -s "subj" -- you@example.com
  • Шифровать: gpg --symmetric --cipher-algo AES256 --output backup.tar.gz.gpg backup.tar.gz
  • Планировать в cron: 0 2 * * * /bin/bash /full/path/backup.sh >> /var/log/backup_rpi.log 2>&1

Итог

Автоматизация бэкапов на Raspberry Pi с отправкой по электронной почте — практичный и экономичный способ иметь внешнюю копию важных данных. Для базового использования достаточно tar + mutt + cron. Для повышения надёжности добавьте шифрование, логирование, ротацию и альтернативные хранилища (rclone). Тестируйте восстановления и храните доступы (App Passwords, GPG-ключи) в защищённом месте.

Summary:

  • Проверьте корректность путей и прав.
  • Используйте App Password для Gmail или альтернативный SMTP.
  • Шифруйте чувствительные данные.
  • Логируйте и проверяйте работоспособность по расписанию.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Заполнитель текста в Word: =Rand(), =Lorem(), =rand.old()
Microsoft Word

Заполнитель текста в Word: =Rand(), =Lorem(), =rand.old()

Пакетное переименование файлов в Windows
Windows

Пакетное переименование файлов в Windows

Как настроить Mac для игр
Гейминг

Как настроить Mac для игр

Добавление виджетов в Xbox Game Bar
Windows

Добавление виджетов в Xbox Game Bar

Как узнать версию Bluetooth на ПК и Mac
Инструкции

Как узнать версию Bluetooth на ПК и Mac

Владейте своим сайтом на WordPress
Веб-сайт

Владейте своим сайтом на WordPress