Как настроить бэкап сервера с Debian 10
Вступление
Эта статья будет полезна владельцам 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 часа каждое воскресенье.
Чтобы скрипты бэкапов работали, необходимо чтобы на диске сервера было свободное дисковое пространство.
На этом настройка бэкапа сервера завершена. Готово!