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

Автоматическое резервное копирование Raspberry Pi и отправка на Email

6 min read DevOps Обновлено 05 Apr 2026
Автоматический бэкап Raspberry Pi на Email
Автоматический бэкап Raspberry Pi на Email

Это практическое руководство покажет, как автоматически создавать архивы с Raspberry Pi и отправлять их на электронную почту. Вы узнаете, как собрать резервную копию с помощью tar, настроить отправку через mutt (включая создание пароля приложения для Gmail), написать скрипт для автоматизации и расписать задачу через cron. В конце — чек-листы, тесты и рекомендации по безопасности.

Плата Raspberry Pi с папкой и надписью «backup»

Зачем автоматизировать резервные копии

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

Кратко: автоматизация экономит время, уменьшает человеческие ошибки и даёт доступ к сохранённым данным в случае сбоя.

Важно: перед тем как отправлять резервные копии по почте, убедитесь, что в архив не попадают чувствительные данные без шифрования.

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

  • Raspberry Pi с установленной Raspbian / Raspberry Pi OS.
  • Доступ в терминал (SSH или локально).
  • Установленный mutt (командный почтовый клиент) или альтернативный инструмент.
  • Аккаунт Gmail (или другой SMTP) — для Gmail потребуется пароль приложения при включённой двухэтапной аутентификации.

Шаг 1 — Создание резервной копии (tar)

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

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

Объяснение одной строкой: tar создаёт gzip-сжатый архив (-z), выводит прогресс (-v) и записывает в файл (-f). Путь к архиву и к папке замените на свои.

Совет: если данные большие, рассмотрите инкрементные решения (rsync, borg, rclone) — об этом ниже.

Шаг 2 — Установка mutt

Для отправки файлов по командной строке удобно использовать mutt. Установите его так:

sudo apt install mutt

Mutt работает через SMTP и может использовать учётную запись Gmail. Если вы предпочитаете GUI или API — см. альтернативы.

Шаг 3 — Настройка mutt

Создайте или откройте файл конфигурации ~/.muttrc:

sudo nano ~/.muttrc

Добавьте в него (заполните ваши данные):

set from = "username@gmail.com"
set realname = "First Last"

# IMAP settings
set imap_user = "username@gmail.com"
set imap_pass = ""

# SMTP settings
set smtp_url = "smtps://username@smtp.gmail.com"
set smtp_pass = ""

# Remote Gmail folders
set folder = "imaps://imap.gmail.com/"
set spoolfile = "+INBOX"

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

Проверка отправки:

echo "Test body" | mutt -s "Testing Email from mutt" username@gmail.com

Если письмо приходит — настройка успешна. Если вы видите ошибку SASL Authentication Failed, значит необходимо использовать пароль приложения (см. ниже).

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

Шаг 4 — Создание пароля приложения в Gmail (если используется Gmail)

Gmail блокирует некоторые старые клиенты, пока не включена двухэтапная аутентификация и не создан пароль приложения.

Порядок действий:

  1. Зайдите в Google Account → Безопасность.
  2. Включите “Двухэтапную аутентификацию” (Two-Step Verification).
  3. В разделе “Пароли приложений” (App passwords) создайте новый пароль для приложения, укажите имя, например “mutt”.
  4. Скопируйте сгенерированный пароль и вставьте его в ~/.muttrc вместо .

Выбор устройства на странице паролей приложений Google

Сгенерированный пароль приложения

После этого снова выполните команду тестовой отправки и проверьте почту.

Шаг 5 — Отправка архива по почте (команда)

Простейшая команда для отправки архива с помощью mutt:

echo "Here is your daily backup" | mutt -a "/path/to/my_data_backup.tar.gz" -s "Daily Backup" -- "your-email@example.com"

Замените пути и адреса на свои.

Важно: Gmail ограничивает размер вложений обычно 25 МБ — большие файлы не пройдут.

Шаг 6 — Скрипт автоматизации

Создадим исполняемый bash-скрипт, который собирает архив и отправляет его по почте.

nano backup.sh

Вставьте:

#!/bin/bash
# Простой скрипт бэкапа и отправки
BACKUP_SRC="/home/pi/my_data"
BACKUP_DST="/path/to/my_data_backup_$(date +%F).tar.gz"

# Создать архив
tar -zcvf "$BACKUP_DST" "$BACKUP_SRC"

# Отправить по почте
echo "Here is your daily backup from Raspberry Pi: $BACKUP_DST" | mutt -a "$BACKUP_DST" -s "Daily Backup $(date +%F)" -- "your-email@example.com"

# Опционально: удалить старые архивы старше N дней
# find /path/to -name "my_data_backup_*.tar.gz" -type f -mtime +30 -delete

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

chmod +x backup.sh

Запустите для теста:

./backup.sh

Проверьте почту и локальный каталог на наличие архива.

Шаг 7 — Планирование с помощью cron

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

crontab -e

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

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

Советы по cron:

  • Указывайте абсолютные пути (cron запускает без окружения).
  • Перенаправляйте вывод в лог для отладки.
  • Проверяйте права доступа к файлам и наличие свободного места.

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

  • rsync: синхронизация файлов между устройствами, экономит трафик и место. Подходит, если есть удалённый сервер.
  • rclone: удобен для загрузки на облачные хранилища (Google Drive, OneDrive, S3).
  • borg/duplicity/duplicacy: шифрование, дедупликация, инкрементальные копии.
  • Отправка через API (например, загрузка на облако через REST) вместо вложений по почте.

Когда использовать альтернативы: если резервные копии >25 МБ, требуется шифрование или дедупликация.

Безопасность и приватность

  • Не храните пароли в открытом виде на диске. Рассмотрите использование локального зашифрованного хранилища или менеджера секретов.
  • При отправке по почте вложение может пройти незашифрованным. Для конфиденциальных данных используйте шифрование (gpg) перед отправкой.
  • Пароль приложения Google даёт доступ только приложению, но хранить его следует с осторожностью.

Пример шифрования архива с gpg перед отправкой:

# Создать зашифрованный архив для получателя (public key должен быть импортирован)
gpg --output "$BACKUP_DST.gpg" --encrypt --recipient "backup@example.com" "$BACKUP_DST"
# Отправить "$BACKUP_DST.gpg"

Проверка и тесты (Acceptance)

Критерии приёмки:

  • Скрипт создаёт файл архива в указанной папке.
  • Письмо с вложением приходит на указанный адрес.
  • Архив открывается и содержит ожидаемые файлы.
  • cron запускает скрипт в заданное время (проверить логи).

Тест-кейсы:

  1. Ручной запуск скрипта: архив должен быть создан, письмо получено.
  2. Запуск cron: убедиться по журналу /var/log/backup.log, что задача выполняется.
  3. Эмуляция ошибки (недостаточно места): скрипт должен вернуть ошибку и записать трассировку в лог.

Чек-лист ролей

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

  • Установить mutt и зависимости.
  • Настроить пароли приложения / SMTP.
  • Настроить crontab и ротацию логов.

Пользователь / Разработчик:

  • Указать корректные пути в скрипте.
  • Протестировать отправку и проверку архива.
  • Настроить уведомления об ошибках (лог/почта).

Когда это может не сработать

  • Вложение превышает 25 МБ — Gmail отклонит сообщение.
  • SMTP-провайдер блокирует отправку из командной строки.
  • Двухфакторная аутентификация не включена и нет пароля приложения.
  • На Raspberry Pi недостаточно места для создания архива.

Рекомендации по масштабированию

  • Для больших объёмов используйте rclone/rsync на удалённый сервер или облако.
  • Храните только последние N архивов или используйте дедупликацию.
  • Настройте мониторинг свободного места и алерты.

Минимальная методология развертывания

  1. Проверка исходных данных и объёма.
  2. Настройка mutt и тестовая отправка.
  3. Написание и тестирование скрипта backup.sh.
  4. Планирование cron и проверка логов.
  5. Настройка ротации/удаления старых бэкапов.
  6. Автоматические уведомления о неуспехе.

Быстрые шаблоны и сниппеты

  • Cron для еженедельного запуска в воскресенье 03:30:
30 3 * * 0 /bin/bash /path/to/backup.sh >> /var/log/backup.log 2>&1
  • Удаление архивов старше 30 дней:
find /path/to -name "my_data_backup_*.tar.gz" -type f -mtime +30 -delete

Глоссарий (одна строка)

  • tar — утилита архивации и сжатия файлов.
  • mutt — консольный почтовый клиент.
  • cron — планировщик задач в Unix.
  • Пароль приложения — временный пароль для сторонних клиентов при двухэтапной аутентификации.

FAQ

Q: Можно ли отправлять большие архивы (>25 МБ)?

A: Почтовые сервисы обычно ограничивают размер вложений. Для больших архивов используйте облачные хранилища (rclone, S3) и отправляйте ссылку.

Q: Как безопасно отправлять приватные данные?

A: Зашифруйте архив с помощью gpg перед отправкой или используйте защищённые каналы/облака с контролем доступа.

Q: Могу ли использовать другой SMTP-провайдер?

A: Да. В ~/.muttrc укажите параметры SMTP вашего провайдера. Для некоторых сервисов может потребоваться создание пароля приложения.

Итог

Автоматизация резервного копирования на Raspberry Pi и отправка на e-mail — надёжный способ защитить данные при небольших объёмах. Для больших объёмов, повышенных требований к безопасности или дедупликации лучше рассмотреть специализированные инструменты (rsync, rclone, borg). Начните с простого сценария: tar + mutt + cron, протестируйте и затем эволюционируйте решение по мере необходимости.

Важно: регулярно проверяйте целостность бэкапов и наличие свободного места.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро