Post icon

Автоматические бэкапы файлов и баз данных в Linux

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


To top