Делаем Backup Linux сервера

Откат для админа - это единственный способ выжить :)

Задача. Написать скрипт который будет создавать бэкап Linux сервера, в определенное место сети или на любой внешний носитель, архивировать все, в имени архива должна быть дата. Скрипт должен проверять и удалять старые архивы.

Я решил делать бэкап по сети на внешнюю шару. Как примонтировать шару расскажу позже.

Начнем

1. Заходим на сервер под рутом

2. Делаем файлик mcedit /opt/backup.sh

3. Пишем следующее

#!/bin/bash

# задаем переменную, путь к каталогу

backup_dir=/mnt/backup/srv1

#проверяем примонтирован ли /mnt/backup/srv1

#если нет, монтируем и еще раз проверяем
#если нет тогда отбой :(
mnt=`mount|grep -c /mnt/backup/srv1`
if [ $mnt == 0 ]; then
  mount /mnt/backup/srv1
  mnt=`mount|grep -c /mnt/backup/srv1`
  if [ $mnt == 0 ]; then
    exit
  fi
fi


#задаем переменную с форматом даты

cur_date=`date +%Y-%m-%d_%H%M%S`

#переходим в директорию с бэкапом

cd $backup_dir
#ищем все файлы у которых было изменение старше 20 дней и удаляем их :)
# -ctime это дата изменения, +20 кол-во дней
find -ctime +20 type f -delete

#дампим базу mysql

#Если без данных то так
/usr/bin/mysqldump  -uroot -p12345 --no-data mydb | gzip > mysql_no-data$cur_date.gz
#Если c данными то так
/usr/bin/mysqldump --opt mysql -uroot -p12345 mydb | gzip > mysql_$cur_date.gz

#делаем архив всего чего нужно

tar -cjf server_$cur_date.tar.bz2 /etc /opt /srv /var/spool/cron /var/www /var/opt


4. Делаем файлик исполняемым 
chmod +x backup.sh 

5. добавляем его в cron
crontab -e !!! ВНИМАНИЕ !!! случайно не наберите crontab -r удалите все что было в cron-е

# Запускать backup сервера, каждый день в 22:01
01 22 * * * /opt/backup.sh >/dev/null 2>/dev/null


Готово.

Теперь наш сервер будет делать бэкап каждый день в 22:01

А как восстановить бэкап базы?
А вот так:
gunzip < /mnt/backup/srv1/mysql_2014-10-21_000101.gz | mysql -u root -p mydb








Комментариев нет:

Отправить комментарий