Резервное копирование · 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 configtestGet new posts in your inbox
No spam. Unsubscribe anytime.