Резервное копирование · 4 min read · Dec 10, 2025

Настройка Rsnapshot, архивирование снимков и резервное копирование баз данных MySQL на Debian

Настройка Rsnapshot, архивирование снимков и резервное копирование баз данных MySQL на Debian

By Nedim Hadzimahmutovic < [email protected] >

Этот учебник покажет вам, как установить и настроить Rsnapshot, включить архивирование снимков и как резервировать базы данных MySQL на Debian.

Установите программу с помощью утилиты apt-get:

apt-get install rsnapshot

Отредактируйте файл конфигурации:

nano /etc/rsnapshot.conf

Установите snapshot_root в путь, где вы хотите хранить резервные копии:

snapshot_root   /var/cache/rsnapshot/

Настройте список каталогов/файлов для резервного копирования.

backup  /etc/           localhost/

Интервалы резервного копирования

Этот раздел файла конфигурации используется только для определения меток для интервалов и того, сколько снимков каждого уровня хранить. Как часто создаются снимки, настраивается и запускается через cron. Ключевое слово interval сопровождается алфавитно-цифровой меткой, за которой следует число, обозначающее, сколько интервалов (снимков) хранить. Метки интервалов должны быть уникальными и в порядке возрастания, наименьший интервал должен быть указан первым.

В следующем примере, после 6 “почасовых” снимков самый старый “почасовой” удаляется. Верхняя запись (в данном случае “почасовой”) копируется из источника, в то время как остальные записи просто ссылаются на последний снимок с одного уровня выше.

Другими словами, чтобы хранить шесть резервных копий в день (четырехчасовой интервал), семь ежедневных резервных копий (одна неделя) и четыре еженедельные резервные копии (один месяц), укажите:

interval        hourly  6
interval        daily   7
interval        weekly  4

Метки интервалов “hourly”, “daily”, “weekly” могут быть изменены в соответствии с вашими потребностями, например “daysago”, “weeksago” и “monthsago”.

Каждый раз, когда rsnapshot hourly выполняется вручную или через cron, он создаст новый снимок, прокрутит старые и сохранит 6 самых последних (hourly.0 - hourly.5).

Точки резервного копирования

Пример точки резервного копирования внутри файла конфигурации:

backup      /etc/      localhost/ 

Точки резервного копирования начинаются со слова backup, после /etc/ идет полный путь к каталогу, который будет резервироваться, а localhost - это каталог внутри snapshot_root. Вы можете изменить localhost на что-то, что ассоциируется с сервером, например, полное доменное имя сервера.

В дополнение к полным путям на локальной файловой системе, вы также можете резервировать удаленные системы, используя rsync через ssh. Если у вас установлен и включен ssh (через параметр cmd_ssh), вы можете указать путь, например:

backup      [email protected]:/etc/     example.com/

Имейте в виду, что вы должны иметь включенные входы на основе ключей для пользователя root на example.com, без паролей, чтобы это работало правильно./

Скрипты резервного копирования

Вы можете найти много примеров в директории utils, которая на Debian находится по адресу /usr/share/doc/rsnapshot/examples/utils/.

Скрипты резервного копирования выполняются с каждым самым низким интервалом.

Выполнение резервного копирования через Cron

Файл cron находится по адресу

/etc/cron.d/rsnapshot

Содержимое по умолчанию:

# 0 */4     * * *       root    /usr/bin/rsnapshot hourly
# 30 3      * * *       root    /usr/bin/rsnapshot daily
# 0  3      * * 1       root    /usr/bin/rsnapshot weekly
# 30 2      1 * *       root    /usr/bin/rsnapshot monthly

Вам нужно раскомментировать строки, чтобы активировать резервные копии.

Первая строка говорит cron выполнять cron-apt каждые 4 часа, что соответствует настройкам почасового интервала в rsnapshot.conf.

Тестирование конфигурации:

Каждый раз, когда вы вносите изменения в файл конфигурации, выполните configtest:

rsnapshot configtest

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ НА СЛЕДУЮЩИЕ ПРАВИЛА:

  • Файл конфигурации требует табуляции между элементами, пробелы представляют аргумент для скриптов
  • Каталоги требуют завершающего слэша, пример:

правильно: /home/

неправильно: /home

Архивирование снимков

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/

Убедитесь, что ваши скрипты резервного копирования принадлежат root и не могут быть записаны никем другим.

chown root.root /usr/local/bin/rsnaptar  
chmod o-w /usr/local/bin/rsnaptar

Отредактируйте скрипт и установите пути к каталогам:

nano /usr/local/bin/rsnaptar

Установите TAR_DIR в путь, где снимок будет архивирован, и SNAPSHOT_DIR в место, где находится ежедневный снимок:

TAR_DIR="/home/user/dvd_backup"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"

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

Этот скрипт поддерживает шифрование файлов gpg, чтобы отключить его, закомментируйте следующую строку в /usr/local/bin/rsnaptar:

GPG="/usr/bin/gpg"

Планирование выполнения через Cron

nano /etc/cron.daily/rsnaptar

Добавьте:

#!/usr/bin/env bash
/usr/local/bin/rsnaptar [email protected]

Примечания:

    • этот учебник не использует опцию GPG для шифрования файлов, если это необходимо, я могу обновить учебник, чтобы включить шифрование файлов для лучшей безопасности,
    • по умолчанию скрипт запускается отдельно, но его можно изменить, чтобы он работал как backup_script через rsnapshot.

Rsnapshot: Резервное копирование баз данных MySQL

Установите mysql-client, если он не установлен, это обеспечит утилиту mysqldump:

# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

Убедитесь, что ваши скрипты резервного копирования принадлежат root и не могут быть записаны никем другим.

chown root.root /usr/local/bin/backup_mysql.sh  
chmod o-w /usr/local/bin/backup_mysql.sh

Этот скрипт предназначен только для резервного копирования всех баз данных в один файл.

Отредактируйте скрипт:

nano /usr/local/bin/backup_mysql.sh

Замените

/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql

на

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql

Если вам нужно сделать дамп одной базы данных, используйте строку ниже:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL

Добавить скрипт в Rsnapshot

Отредактируйте конфигурацию rsnapshot:

nano /etc/rsnapshot.conf

Под BACKUP POINTS / SCRIPTS добавьте следующее:

backup_script       /usr/local/bin/backup_mysql.sh  localhost/mysqldump/

Проверьте конфигурацию:

rsnapshot configtest
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.