Резервное копирование (backup) сервера на Debian

Как известно, бэкапы — это наше все. Делаем бэкап с помощью tar и remastersys темной ночью, пока никто не видит.
Для начала создадим файл, в котором будет наш могучий скрипт. Простой, но могучий.

touch /home/backup.sh

Создаем папки для бэкапов:

mkdir /backups

Это для SQUID

mkdir /backups/squid/

Это для SAMBA

mkdir /backups/samba/

Это для папки с веб-сервером

mkdir /backups/www/

Это для дампов баз данных

mkdir /backups/mysql/

Это для бэкапа всей системы целиком в ISO образ, чтобы в случае чего можно было все снести и накатить заново

mkdir /backups/system-iso/

Делаем скрипт его запускаемым:

chmod -x /home/backup.sh

Далее открываем любым редактором /backup.sh и пишем примерно следующее:

#!/bin/bash  

 # префикс с датой
 DATE_PREF=`date +%F`  

 # В переменной BACKUP_xxx_DIR лежит путь, куда будет сохраняться бэкап к каталогу с файлами, текущая дата будет браться из переменной DATE_PREF
 BACKUP_SQUID_DIR=
 /backups/squid/$DATE_PREF  

 BACKUP_SAMBA_DIR=/backups/samba/$DATE_PREF  

  BACKUP_MYSQL_DIR=/backups/mysql/$DATE_PREF  

  BACKUP_WWW_DIR=/backups/www/$DATE_PREF  

 # ищем файлы старше 7 суток и удаляем их, дабы не засорять жесткий диск
 find /backups/squid/ -mtime +7 -print -mindepth 1 -delete >/dev/null 2>&1
  find /backups/samba/ -mtime +7 -print -mindepth 1 -delete >/dev/null 2>&1
  find /backups/mysql/ -mtime +7 -print -mindepth 1 -delete >/dev/null 2>&1
  find /backups/www/ -mtime +7 -print -mindepth 1 -delete >/dev/null 2>&1  

 # Удаляем старые бэкапы системы, чтобы не плодить лишние
 find /backups/system-iso/install -mtime +7 -print -mindepth 1 -delete >/dev/null 2>&1  

 # создаем tar'ом
 tar cpzf $BACKUP_SQUID_DIR\-squid.tgz /etc/squid/ >/dev/null 2>&1
  tar cpzf $BACKUP_SAMBA_DIR\-samba.tgz /etc/samba/ >/dev/null 2>&1
  tar cpzf $BACKUP_WWW_DIR\-www.tgz /var/www/ >/dev/null 2>&1  

 # создаем дампы баз данных MySQL. Обязательно указываем пользователя и пароль
  # Тут же упаковываем gzip-ом
 mysqldump -q -u root -pMyRootPassword -h localhost db_nagiosql_v3 | gzip -c > $BACKUP_MYSQL_DIR\-db_nagiosql_v3.sql.gz
 mysqldump -q -u root -pMyRootPassword
  -h localhost dbmail | gzip -c > $BACKUP_MYSQL_DIR\-dbmail.sql.gz
  mysqldump -q -u root -pMyRootPassword
  -h localhost information_schema | gzip -c > $BACKUP_MYSQL_DIR\-information_schema.sql.gz
 mysqldump -q -u root -pMyRootPassword
  -h localhost mysql | gzip -c > $BACKUP_MYSQL_DIR\-mysql.sql.gz  

 # Делаем INSTALL.ISO бэкап с помощью Remastersys
 remastersys backup install-$DATE_NOW.iso 

 # Копируем образ и MD5 отпечаток для сохранности и проверки образа
 # Если не скопировать, то при очистке временных файлов образ удалится
 cp /home/remastersys/remastersys/install-$DATE_NOW.iso /backups/system-iso/install/install-$DATE_NOW.iso
 cp /home/remastersys/remastersys/install-$DATE_NOW.iso.md5 /backups/system-iso/install/install-$DATE_NOW.iso.md5 

 # Очищаем временные файлы
 remastersys clean

Настроим remastersys, для этого открываем файл /etc/remastersys.conf и вносим следующие изменения:

# Указываем каталог, в котором будет создаваться образ
 WORKDIR="/home/remastersys" 

 # Исключаемые папки. раздеритель - пробел.
 EXCLUDES="/backups" 

 # Название образа
 LIVECDLABEL="Custom Live CD BACKUP" 

 # Имя файла образа
 CUSTOMISO="install-$1.iso" 

 # Метод загрузки LiveCD (ISOLINUX или GRUB)
 CDBOOTTYPE="ISOLINUX"

Теперь добавим в CRON расписание для проведения бэкапа.

crontab -e

и пишем туда:

30 2 * * * /home/backup.sh

Сохраняем и наслаждаемся.

Для того, чтобы проверить, как будет работать скрипт — пишем:

sh /home/backup.sh

У меня на все-провсе уходит минут 10. После того, как скрипт отработает — в папке /backups появляются папки с бэкапами.

Удачи!

 

0

Резервное копирование (backup) сервера на Debian: 2 комментария

  1. Alter

    Доброе время суток!

    Наступил момент создания резервированния сервера и Ваш скрипт просто порадовал мое сердце. Хотел уточнить, он актуален и для седьмого Debian?
    remastersys — прекратила свое существование, может сделать на аналогах?
    mysqldump -q -u root -pMyRootPassword пароль пишется сразу после -p без пробела?

    Спасибо, жду ответов на вопросы.

Добавить комментарий