Регулярное создание резервных копий (бэкапов) — это важная часть работы системного администратора. В этой статье мы рассмотрим, как организовать автоматическое бэкапирование на 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-сервере. Регулярное резервное копирование поможет защитить ваши данные от потери и обеспечит стабильность работы системы.