#!/bin/bash # Задаем системные переменные, чтобы в скрипте не прописывать полные пути. PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin # Сюда складываем резервные копии destination="/mnt/Backup_mail/MySQL/" # Логин и пароль для подключения к БД userDB="root" passwordDB="Пароль от базы данных" # Дата запуска скрипта fdate=`date +%Y-%m-%d` # Удаление старых бэкапов старше 30 дней, оставляем каждое 15 число find $destination -type d \( -name "*-1[^5]" -o -name "*-[023]?" \) -mtime +30 -exec rm -R {} \; 2>&1 # Удаление резервных копий старше 65 дней find $destination -type d -name "*-*" -mtime +65 -exec rm -R {} \; 2>&1 # Создание папки с датой в названии test -d $destination/$fdate || mkdir $destination/$fdate 2>&1 # Подключаемся к базе данных и вытаскиваем список всех баз. Для каждой делаем резервную копию. for dbname in `echo show databases | mysql -u$userDB -p$passwordDB | grep -v Database`; do # Игнорируем служебные базы case $dbname in information_schema) continue ;; mysql) continue ;; performance_schema) continue ;; test) continue ;; sys) continue ;; # Делаем копии баз данных *) mysqldump --databases --skip-comments --no-tablespaces -u$userDB -p$passwordDB $dbname | gzip > $destination/$fdate/$dbname.sql.gz ;; esac done;