Создаём скрипт backup.sh

**Как настроить резервное копирование на VPS в облаке (шаг за шагом)** *Пошаговый гид для начинающих, чтобы ваши данные всегда были под контролем.*

Введение

В мире онлайн‑приложений потеря данных — это не просто неудобство, а настоящий кошмар. Если ваш сайт или сервис живёт на VPS в облаке (например, у провайдера Azerta.ru), вы уже сделали первый шаг к гибкости и масштабируемости. Но без надёжного резервного копирования всё может обернуться катастрофой: сбои оборудования, ошибки пользователя, вредоносные атаки — всё это может стереть вашу работу за считанные минуты.

В этой статье я расскажу, как настроить резервное копирование на VPS в облаке от А до Я. Мы будем использовать простые команды, практические примеры и реальные кейсы ошибок, чтобы вы не запутались даже если впервые берёте в руки терминал.

**Ключевые слова**: резервное копирование, VPS, облако, Azerta.ru, бэкап, Linux, cron, rsync, tar, ssh, S3, Cloudflare R2, автоматизация.

1. Что такое резервное копирование и зачем оно нужно?

Вы думали, что ваш сервер в облаке защищён от потерь? Нет, даже у лучших провайдеров есть риск.

Резервное копирование — это процесс создания точной копии ваших файлов и настроек с целью их последующего восстановления. На VPS в облаке это особенно важно:


2. Подготовка: что понадобится

Что Как получить
SSH‑ключи ssh-keygen -t ed25519 (на клиенте) и загрузить публичный ключ на VPS через панель Azerta.ru.
Доступ к серверу Введите ssh root@your_vps_ip.
Утилиты Убедитесь, что у вас установлены rsync, tar, cron. Если нет – apt update && apt install rsync tar cron -y.
Хранилище для бэкапов Выберите место: локальный диск, внешний SSD, облачное хранилище (Amazon S3, Google Cloud Storage, Azure Blob, или даже Cloudflare R2). Для примера будем использовать S3 через s3cmd.
Облако Azerta.ru Убедитесь, что ваш тариф поддерживает резервные копии и имеет выделенный SSD.

3. Создание каталога для бэкапов

mkdir -p /var/backups/vps
chmod 700 /var/backups/vps

Почему 700? Потому что только root (или ваш пользователь) должен иметь доступ к резервным копиям, чтобы никто не смог их украсть.

4. Настройка `tar` для архивирования файлов

Пример: Архивируем домашнюю директорию и базу данных MySQL

# Создаём скрипт backup.sh
cat <<'EOF' > /usr/local/bin/backup.sh
#!/bin/bash
DATE=$(date +%F_%H-%M)
BACKUP_DIR="/var/backups/vps"
mkdir -p "$BACKUP_DIR/$DATE"

# 1. Архивируем файловую систему (exclude .ssh и временные файлы)
tar --exclude='/tmp/*' \
    --exclude='/var/tmp/*' \
    --exclude='/home/your_user/.cache/*' \
    -czf "$BACKUP_DIR/$DATE/files.tar.gz" /home/your_user

# 2. Экспортируем MySQL
mysqldump -u root -pYOURPASSWORD --all-databases > "$BACKUP_DIR/$DATE/db.sql"

# 3. Упаковываем всё в один архив (опционально)
tar -czf "$BACKUP_DIR/${DATE}.full.tar.gz" -C "$BACKUP_DIR/$DATE" .

# 4. Очищаем промежуточные файлы
rm -rf "$BACKUP_DIR/$DATE"

echo "Backup completed at $(date)" >> /var/log/backup.log
EOF

chmod +x /usr/local/bin/backup.sh

Ошибка №1: «mysqldump завершается с ошибкой Access denied».
Решение: убедитесь, что в скрипте используется правильный пароль и пользователь имеет права SELECT.

5. Автоматизация через cron

crontab -e

Добавьте строку:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Это запустит бэкап каждый день в 02:00. Если вы хотите более частый, меняйте 0 2 на нужное время.

6. Отправка резервной копии в облако (S3)

Установка s3cmd

apt install s3cmd -y
s3cmd --configure

Вопрос: «Как настроить ключи для S3?»
Ответ: В процессе конфигурации введите Access Key, Secret Key и регион. Выберите n для автогенерации файла .s3cfg.

Добавляем синхронизацию к скрипту

# В конце backup.sh добавьте:
s3cmd put "$BACKUP_DIR/${DATE}.full.tar.gz" s3://my-backups/vps/

Ошибка №2: «404 Not Found» при попытке загрузки.
Решение: убедитесь, что бакет существует и у вас есть права PutObject.

7. Проверка целостности резервной копии

# На случай восстановления, скачайте архив
s3cmd get s3://my-backups/vps/${DATE}.full.tar.gz .

# Распакуйте в тестовый каталог
mkdir -p /tmp/test_restore
tar -xzf ${DATE}.full.tar.gz -C /tmp/test_restore

# Проверьте наличие файлов и баз данных

Проверка важна: если вы не проверяете, вы рискуете потерять данные без возможности восстановления.

8. Очистка старых резервных копий (retention)

find /var/backups/vps -type f -mtime +30 -delete

Почему 30 дней? Это баланс между экономией места и соблюдением требований хранения данных.

9. Мониторинг и оповещения

Установка `monit` (необязательно)

apt install monit -y
cat <<'EOF' > /etc/monit/conf.d/backup.conf
check program backup_log with path "/usr/local/bin/check_backup.sh"
    if status != 0 then alert
EOF

Создайте скрипт check_backup.sh, который проверяет наличие последнего бэкапа:

#!/bin/bash
LAST=$(find /var/backups/vps -type f -mtime -1 | wc -l)
if [ "$LAST" -eq 0 ]; then exit 1; else exit 0; fi

Вопрос: «Как получить уведомление по email?»
Ответ: настройте monit для отправки почты через SMTP.

10. Что делать, если бэкап не пришёл в облако?


Итог

Вы думали, резервное копирование — это сложно? Нет! Следуя этому простому пошаговому руководству, вы сможете настроить надёжную систему бэкапов на VPS в облаке Azerta.ru за считанные минуты. Ваша работа будет защищена, а вам останется только наслаждаться ростом проекта.