Регулярное создание резервных копий (бэкапов) — это важная часть работы системного администратора. В этой статье мы рассмотрим, как организовать автоматическое бэкапирование на Linux-сервере с использованием скриптов и SSH.

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

Создайте директорию для хранения резервных копий:

mkdir /root/backup

Создайте поддиректорию с текущей датой:

mkdir /root/backup/`date +%Y-%m-%d`

Шаг 2. Бэкапирование базы данных

Создайте резервную копию базы данных MySQL:

mysqldump -u [пользователь] -p[пароль] [база данных] > /root/backup/`date +%Y-%m-%d`/[название базы].sql

Шаг 3. Архивирование файлов

Создайте архив файлов:

tar -czvf /root/backup/`date +%Y-%m-%d`/[название архива].tar.gz [путь к директории] >> /root/backup/`date +%Y-%m-%d`/backup.log

Шаг 4. Копирование бэкапов на удалённый сервер

Настройте безпарольное подключение по SSH и скопируйте бэкапы на удалённый сервер:

scp -r /root/backup/`date +%Y-%m-%d` [логин]@[ip сервера]:[путь на удалённом сервере]

Шаг 5. Очистка старых бэкапов

Удалите бэкапы старше двух дней:

find /root/backup -mtime +2 -print -delete

Шаг 6. Проверка дискового пространства

Проверьте свободное место на диске:

df -h >> /root/backup/`date +%Y-%m-%d`/backup.log

Шаг 7. Отправка уведомления

Настройте отправку лога бэкапирования на электронную почту:

Установите пакет ssmtp и настройте его:

sudo apt-get install ssmtp

Отредактируйте файл /etc/ssmtp/ssmtp.conf и отправьте лог на почту:

echo «[сообщение]» | mail -v -s «[тема письма]» [e-mail]

Скрипт автоматизации бэкапирования

Для автоматизации процесса бэкапирования создайте скрипт /root/backup.sh:

#!/bin/bash

# Создание директории для бэкапов
mkdir -p /root/backup/`date +%Y-%m-%d`

# Бэкапирование базы данных
mysqldump -u [пользователь] -p[пароль] [база данных] > /root/backup/`date +%Y-%m-%d`/[название базы].sql

# Архивирование файлов
tar -czvf /root/backup/`date +%Y-%m-%d`/[название архива].tar.gz [путь к директории] >> /root/backup/`date +%Y-%m-%d`/backup.log

# Копирование бэкапов на удалённый сервер
scp -r /root/backup/`date +%Y-%m-%d` [логин]@[ip сервера]:[путь на удалённом сервере] >> /root/backup/`date +%Y-%m-%d`/backup.log

# Очистка старых бэкапов
find /root/backup -mtime +2 -print -delete

# Проверка дискового пространства
df -h >> /root/backup/`date +%Y-%m-%d`/backup.log

# Отправка уведомления
echo «Бэкап успешно завершён!» | mail -v -s «Бэкап сервера» [e-mail]

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

chmod +x /root/backup.sh

Добавьте выполнение скрипта в cron для ежедневного запуска:

crontab -e

Добавьте следующую строку:

0 2 * * * /root/backup.sh

Теперь скрипт будет запускаться ежедневно в 2 часа ночи.

Заключение

Теперь у вас есть автоматизированный процесс создания бэкапов на Linux-сервере. Регулярное резервное копирование поможет защитить ваши данные от потери и обеспечит стабильность работы системы.