В этом руководстве мы рассмотрим, как создать автоматический бэкап файлов и баз данных в системе Linux с использованием rsync и mysqldump. Также мы разберём, как установить rsync, создать скрипт через nano
и настроить автоматизацию через планировщик задач cron
.
Содержание:
Установка rsync
Чтобы установить rsync, выполните следующую команду в терминале:
sudo apt update && sudo apt install rsync
Эта команда обновляет список пакетов и устанавливает rsync, если он не установлен.
Создание файла скрипта через nano
Для создания скрипта воспользуемся текстовым редактором nano. Выполните команду:
sudo nano /root/backup_all.sh
Теперь вставьте следующий код в файл скрипта:
#!/bin/bash
# Папка для временного хранения перед архивацией
TEMP_DIR="/var/backups/server/temp_$(date +%Y-%m-%d)"
# Папка для сохранения архивов
BACKUP_DIR="/var/backups/server"
# Имя архива с датой
ARCHIVE_NAME="backup_$(date +%Y-%m-%d).tar.gz"
# Имя бэкапа базы данных
DB_BACKUP_NAME="mariadb_backup.sql.gz"
# Данные для подключения к базе данных
DB_NAME="your_database" # Имя базы данных, которую нужно бэкапить
DB_USER="your_user" # Имя пользователя базы данных
DB_PASSWORD="your_password" # Пароль пользователя базы данных
# Создаем временную папку для бэкапов, если она не существует
mkdir -p $TEMP_DIR
# Копирование файлов с использованием rsync
rsync -avz --delete /var/www/folder1/ $TEMP_DIR/folder1/
rsync -avz --delete /var/www/folder2/ $TEMP_DIR/folder2/
rsync -avz --delete /var/www/folder3/ $TEMP_DIR/folder3/
# Создание бэкапа базы данных
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $TEMP_DIR/$DB_BACKUP_NAME
# Архивация данных
tar -czvf $BACKUP_DIR/$ARCHIVE_NAME -C $TEMP_DIR .
# Удаление временных файлов после архивации
rm -rf $TEMP_DIR
# Удаление архивов старше 7 дней
find $BACKUP_DIR/ -type f -name "*.tar.gz" -mtime +7 -exec rm -rf {} \;
Сохраните файл и выйдите из редактора nano, нажав Ctrl + O
для сохранения, затем Ctrl + X
для выхода.
Настройка прав на выполнение
Теперь нужно сделать файл скрипта исполняемым. Выполните команду:
sudo chmod +x /root/backup_all.sh
Теперь скрипт готов к выполнению.
Тестирование скрипта
Для тестирования бэкапа можно запустить скрипт вручную:
sudo /root/backup_all.sh
Это запустит процесс бэкапа файлов и базы данных. После выполнения скрипта проверьте директорию /var/backups/server/
на наличие созданного архива.
Автоматизация через cron
Чтобы автоматизировать процесс бэкапа, используем планировщик задач cron. Он позволяет запускать скрипт по расписанию. Выполните команду:
crontab -e
Добавьте строку для выполнения скрипта каждый день в 4:00 утра:
0 4 * * * /root/backup_all.sh
Где:
- 0 — это минуты (ровно в начале часа),
- 4 — это час (4:00 утра),
- * * * — это день месяца, месяц и день недели (означает, что задание выполняется каждый день).
Сохраните файл и выйдите из редактора cron. Теперь скрипт будет автоматически запускаться каждый день в 4:00 утра.
Проверка задач cron
Чтобы убедиться, что задание добавлено в cron, выполните команду:
crontab -l
Эта команда выведет список всех запланированных задач cron для текущего пользователя.
Заключение
Мы рассмотрели, как создать и автоматизировать бэкап файлов и баз данных с помощью rsync и mysqldump, а также настроить автоматический запуск скрипта через cron. Теперь ваши данные будут регулярно сохраняться, а старые бэкапы будут автоматически удаляться.