Это простой скрипт [1], который можно легко модифицировать для ваших нужд, чтобы реализовать бэкап сервера с ротацией архивов. Для синхронизации этот скрипт использует ssh и rsync [3]. Скрипт был полностью переписан заново, старая версия доступна по ссылке [2].
Скрипт умеет следующее:
● Ежедневный, еженедельный, месячный backup с настройкой количества сохраняемых архивов.
● Режимы архивирования только локально (backup to local only), локально плюс на сетевое хранилище (local + remote) и только на сетевое хранилище (remote only).
● 4 разных скрипта бэкапа:
- бэкап файлов с компрессией zip. - скрипт rsync. - скрипт mysql. - скрипт mysql extrabackup.
● Безопасный backup с соединением SSH.
Пока не реализовано email-оповещение, которое было в старой версии скрипта.
[MySQL / MySQL Extrabackup / Zip File Backup: как использовать]
● Скопируйте скрипт в какое-нибудь место.
● Отредактируйте параметры скрипта, в частности опции BACKUP_RETENTION_, чтобы настроить ротацию / количество нужных бэкапов:
# Идентификационные данные MySQL:
USER=backupPASS=backup
DBNAME=project_sql
# Куда делать бэкап локально:
BACKUP_DIR="/root/backup"
# Куда делать бэкап на сетевом хранилище:
DST_HOST="user@host"
REMOTE_DST_DIR="/root/backup"
# Настройка ротации архивов:
BACKUP_DAILY=true # если установить в false, то ежедневного бэкапа не будет
BACKUP_WEEKLY=true # если установить в false, то еженедельного бэкапа не будет
BACKUP_MONTHLY=true # если установить в false, то ежемесячного бэкапа не будет
BACKUP_RETENTION_DAILY=3
BACKUP_RETENTION_WEEKLY=3
BACKUP_RETENTION_MONTHLY=3
● Проверьте работу скрипта, что все работает правильно: ./mysql-backup-script.sh
● Настройте задание для планировщика (cron) на запуск скрипта ежедневно в нужное время: 00 03 * * * backup.sh
● Проверьте еще раз результат бэкапа.
Сделайте pull request в репозиторий git [1], если найдете проблему.
[Ссылки]
1. Bash Backup Rotation Script. 2. Bash Backup Rotation Script - legacy. 3. rsync: синтаксис, примеры использования. |