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

Зачем автоматизировать резервные копии
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 muttMutt работает через 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, значит необходимо использовать пароль приложения (см. ниже).

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


После этого снова выполните команду тестовой отправки и проверьте почту.
Шаг 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 запускает скрипт в заданное время (проверить логи).
Тест-кейсы:
- Ручной запуск скрипта: архив должен быть создан, письмо получено.
- Запуск cron: убедиться по журналу /var/log/backup.log, что задача выполняется.
- Эмуляция ошибки (недостаточно места): скрипт должен вернуть ошибку и записать трассировку в лог.
Чек-лист ролей
Администратор:
- Установить mutt и зависимости.
- Настроить пароли приложения / SMTP.
- Настроить crontab и ротацию логов.
Пользователь / Разработчик:
- Указать корректные пути в скрипте.
- Протестировать отправку и проверку архива.
- Настроить уведомления об ошибках (лог/почта).
Когда это может не сработать
- Вложение превышает 25 МБ — Gmail отклонит сообщение.
- SMTP-провайдер блокирует отправку из командной строки.
- Двухфакторная аутентификация не включена и нет пароля приложения.
- На Raspberry Pi недостаточно места для создания архива.
Рекомендации по масштабированию
- Для больших объёмов используйте rclone/rsync на удалённый сервер или облако.
- Храните только последние N архивов или используйте дедупликацию.
- Настройте мониторинг свободного места и алерты.
Минимальная методология развертывания
- Проверка исходных данных и объёма.
- Настройка mutt и тестовая отправка.
- Написание и тестирование скрипта backup.sh.
- Планирование cron и проверка логов.
- Настройка ротации/удаления старых бэкапов.
- Автоматические уведомления о неуспехе.
Быстрые шаблоны и сниппеты
- 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, протестируйте и затем эволюционируйте решение по мере необходимости.
Важно: регулярно проверяйте целостность бэкапов и наличие свободного места.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента