Даже небольшой сбой может стереть месяцы работы. Готовые решения стоят дорого, а их настройка занимает часы. Мы создадим бесплатную систему бэкапов с:
- Шифрованием конфиденциальных данных
- Автоматизацией через cron
- Поддержкой Docker и PostgreSQL
- Защитой от утечек паролей
Шаг 1: Подготовка сервера
1.1. Проверьте место на диске
df -h
1.2. Создайте папки для бэкапов
mkdir -p /backups/{temp,archives}
chmod 755 /backups
Шаг 2: Безопасное хранение паролей
2.1. Создайте файл .env
nano ~/.backup_credentials.env
Добавьте данные:
# База данных
DB_NAME="ваша_база"
DB_USER="ваш_пользователь"
DB_PASS="ваш_пароль"
# Docker-контейнеры
WEB_CONTAINER="имя_вашего_web_контейнера"
DB_CONTAINER="имя_вашего_db_контейнера"
# Путь к статике
STATIC_VOLUME="/путь/к/docker/volume/статики"
2.2. Защитите файл правами доступа
chmod 600 ~/.backup_credentials.env
Шаг 3: Создание скрипта бэкапа
3.1. Создайте скрипт
nano /root/backup_script.sh
3.2. Код скрипта с защитой данных:
#!/bin/bash
source ~/.backup_credentials.env
# ... (остальной код скрипта из предыдущей версии)
Шаг 4: Автоматизация через cron
crontab -e
Добавьте строку:
0 2 * * * /root/backup_script.sh >> /var/log/backup.log 2>&1
Шаг 5: Восстановление данных
# Расшифровка архива
openssl enc -d -aes-256-cbc -in backup.tar.gz -out backup_decrypted.tar.gz -pass pass:"ваш_пароль"
# Восстановление базы
pg_restore -h localhost -U пользователь -d база /путь/к/бэкапу
Дополнительные меры безопасности
Использование .pgpass
echo "localhost:5432:база:пользователь:пароль" > ~/.pgpass
chmod 600 ~/.pgpass
FAQ
Q: Как добавить уведомления в Telegram?
A: Используйте curl в скрипте:
curl -s -X POST "https://api.telegram.org/..."
Q: Как хранить бэкапы в облаке?
A: Добавьте в скрипт:
aws s3 cp backup.tar.gz s3://ваше_ведро
Написать комментарий