Как настроить бэкап сервера с Debian 10

27 августа 2019
107
Debian
backup

Вступление

Эта статья будет полезна владельцам VDS, которые хотели бы сами создавать резервные копии сервера. Несмотря на то, что многие хостинг провайдеры предоставляют возможность создавать резервные копии VDS, иногда самостоятельное резервное копирование имеет смысл:

  • можно не платить за услугу резервного копирования
  • можно контролировать частоту резервного копирования, например делать копию каждый час
  • если хостинг не предоставляет возможность откатывать отдельные каталоги, то диск большого объема будет откатываться долго. При самостоятельном копировании можно настроить все так, чтобы сохранять один сайт и при необходимости быстро откатить только его, а не всю систему целиком.

Настройка бэкапов

Для того, чтобы резервное копирование работало правильно, необходимо не хранить резервные копии на том же самом сервере. Поэтому данные мы будем копировать в хранилище данных NetAngels при помощи rsync. Вместо этого хранилища данных можно использовать свой backup сервер. Главное, чтобы он поддерживал rsync.

Для начала установите rsync

apt-get install rsync

Создайте каталог /backup:

mkdir /backup

Создайте файл /usr/sbin/backup-tar.sh:

mcedit /usr/local/sbin/backup-tar.sh

Скопируйте в него содержимое ниже:

#!/bin/bash
# Tar
DATE=`date +%d-%b-%Y`               
FILENAME=fullbackup-$DATE.tar.gz    
SRCDIR=/                            
DESDIR=/backup  #<--- резервные копии будут сохраняться в /backup    
# Database
user="root"                         
password="example-password"   
db_name="fulldbbackup"                  
backup_path="/backup" #<--- резервные копии базы данных будут сохраняться в /backup    
# Dump database into SQL file
mysqldump --user=$user --events --ignore-table=mysql.event --password=$password --all-databases > $backup_path/$db_name-$DATE.sql
# Make tarball of /
tar -cpzf $DESDIR/$FILENAME --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=$DESDIR $SRCDIR

Для сохранения нажмите на клавиатуре F2.

Установите бит исполнения:

chmod +x /usr/local/sbin/backup-tar.sh

Создайте файл /usr/sbin/backup-rsync.sh:

mcedit /usr/local/sbin/backup-rsync.sh
#!/bin/bash
rsync -a --bwlimit=5000 -e ssh --hard-links --inplace /backup u37663@storage.u37663.netangels.ru:full-backup

Измените строку u37663@storage.u37663.netangels.ru на имя вашего сервера, куда следует копировать данные. Строка вводится в формате имя@адрессервера.

Измените строку full-backup на путь до папки на втором сервере, где стоит хранить данные. В случае с хранилищем данных NetAngels указывается относительный путь (т.е. без / в начале).

Для сохранения нажмите на клавиатуре F2.

Установите бит исполнения:

chmod +x /usr/local/sbin/backup-rsync.sh

Осталось добавить задание в cron. Выполните от пользователя root:

export EDITOR=mcedit; crontab -e

Добавьте строки

00 08 * * 7 /bin/bash /usr/local/sbin/backup-tar.sh
00 23 * * 7 /bin/bash /usr/local/sbin/backup-rsync.sh

Для сохранения нажмите на клавиатуре F2.

Скрипт бэкапа будет запускаться в 8 утра каждое воскресенье. Скрипт копирования данных на backup сервер linux будет запускаться в 23 часа каждое воскресенье.

Чтобы скрипты бэкапов работали, необходимо чтобы на диске сервера было свободное дисковое пространство.

На этом настройка бэкапа сервера завершена. Готово!

Мы используем файлы cookie для предоставления наших услуг, а также для аналитики и маркетинга. Продолжая просматривать наш веб-сайт, вы соглашаетесь на использование нами файлов cookie.
ОК