Вед-дев, Сео, Манимейкинг

Скрипт для бэкапа всех баз данных в один файл

Написал очередной простой скрипт для бэкапа всех баз данных в один sql файл, а затем отправкой на другой сервер при помощи scp:

#!/bin/bash

# mysql password from a file
DBPASS=$(awk '{print}' ~/mysql_pass)

# get current date
DATE=$(date +"%d-%m-%y")

# set backup home directory
BHOME="/home/username/db-backup"

# saving to log
BACKUPLOG="/home/username/db-backup.log"
echo $(date) > $BACKUPLOG

# remove backups older than 5 days
find $BHOME/ -maxdepth 1 -type f -mtime +5 -exec rm -rf {} \; -exec echo -e "\r\nDatabase archive {} deleted!" >> $BACKUPLOG \;

mysqldump -uroot -p$DBPASS --all-databases > $BHOME/all-databases.sql

cd $BHOME && tar czf $DATE-all-databases.tar.gz all-databases.sql && rm all-databases.sql

# scp backup to backup server
CURDAY=$(date +"%_d")
LATEST=$(ls -t | head -n1);

if [ $CURDAY -eq 1 ]; then
        cp $LATEST 1st-databases.sql
        scp 1st-databases.sql user@host.com:/databases
        rm -rf 1st-databases.sql
elif [ $CURDAY -eq 8 ]; then
        cp $LATEST 10th-databases.sql
        scp 8th-databases.sql user@host.com:/databases
        rm -rf 8th-databases.sql
elif [ $CURDAY -eq 15 ]; then
        cp $LATEST 21th-databases.sql
        scp 15th-databases.sql user@host.com:/databases
        rm -rf 15th-databases.sql
elif [ $CURDAY -eq 22 ]; then
        cp $LATEST 22th-databases.sql
        scp 22th-databases.sql user@host.com:/databases
        rm -rf 22th-databases.sql
fi

echo -e "\r\nDB backups finished!" >> $BACKUPLOG

exit 0

В директории вашего пользователя создайте файл ~/mysql_pass и на одной строке введите ваш пароль от ROOT пользователя mysql. Это делается для того, чтобы пароль не смогли подсмотреть другие пользователи в процессах.

Далее, идет отправка на другой сервер 1-го, 10-го, 15-го и 22-го числа каждого месяца в директорию "databases". Данные для подключения к другому серверу замените на свои.

Бэкапы старее 5 дней удаляются.



Комментарии (1)

Нормально

Разделы

Подписаться

Подписка на RSS-лента последние записи из Блога

Комменты

  • mokej559 3 дня 19 часов назад
    Hello. And Bye. 
  • andryha v rot mne uho 2 месяца 1 неделя назад
    Ошибка в расположение трех последних ")", так должно быть: 
  • Olzhas 1 год 4 месяца назад
    Спасибо. С Новым Годом! 
  • Den 1 год 5 месяцев назад
    В первой функции, при создании переменной $li_previous нужно поменять '←' с NULL, в $li_next сделать тоже самое. 
  • Гость 1 год 5 месяцев назад
    Если все ровно так как было описано, то нет никаких сомнений что домен увел сам регистратор. Потому что вероятность того 
  • Валерий 1 год 6 месяцев назад
    да можно делать импорт-экспорт только лишь в оболочке на входя на mysql сервер 
  • admin 1 год 6 месяцев назад
    Валерий, а зачем вам именно так делать экспорт? Если я не ошибаюсь, то там нет какой-либо команды чтобы сделать экспорт 
  • Валерий 1 год 6 месяцев назад
    захожу на mysql через ssh по команде  
  • admin 1 год 6 месяцев назад
    Добрый вечер, какой у вас клиент? 
  • Валерий 1 год 6 месяцев назад
    Здравстуйте, есть команда чтобы сделать экспорт базы внутри mysql клиента?