Предисловие.
Вы должны смонтировать Ядиск как описано в
этой статье в каталог /mnt/yadisk, туда будут копироваться все бэкапы
Для бэкапа всей системы лучше пользоваться инструментами которые предлагает хостер. Если таких нет или планируется переезд всей системы, то используйте п.1.
Специально оставляю одну копию каждого бэкапа на VDS для удобства восстановления какого-либо файла.
Прокомментирую только первый файл, остальные сделаны по подобию.
Каталоги в /home/backup/... и /mnt/yadisk/... должны быть созданы.
Скрипт бэкапа разбит на 4 штуки намеренно для удобства использования и запуска по крону с разными временными интервалами, что и надо будет сделать отдельно.
Так же, советую предварительно перед бэкапом проверять смонтирован ли Ядиск, иначе место может внезапно закончится на сервере. Если интересно, то потом дам ссылку как это сделать.
Бэкап
1. Бэкап системы осуществляется при помощи команды tar
Файл system_backup.sh:
#!/bin/sh
TIME=`date +%Y-%m-%d`
# Что бэкапить
WHAT=/
# Куда класть бэкап
WHERE=/home/backup/system
# Куда копировать бэкап
COPY=/mnt/yadisk/system
# Бэкап системы. Файл бэкапа исключает системные каталоги и каталоги куда кладутся сами бэкапы
tar -cpzf $WHERE/$TIME.tgz --exclude=/dev --exclude=/proc --exclude=/lost+found --exclude=/home/backup --exclude=/mnt /
# Скопировать на файл бэкапа на Ядиск
cp $WHERE/$TIME.tgz $COPY
### Удалить старые файлы бэкапов
# Оставить на VDS только последний
find $WHERE -mtime +1 -print -delete
# Удалить с Ядиска бэкапы месячной давности
find $COPY -mtime +30 -print -delete
2. Бэкап конфигов осуществляется так же при помощи команды tar (при текущих исходных данных все конфиги лежат в /etc)
Файл etc_backup.sh:
#!/bin/sh
TIME=`date +%Y-%m-%d-%H:%M`
WHAT=/etc
WHERE=/home/backup/etc
COPY=/mnt/yadisk/etc
tar -cpzf $WHERE/$TIME.tgz $WHAT
cp $WHERE/$TIME.tgz $COPY
find $WHERE -mtime +1 -print -delete
find $COPY -mtime +30 -print -delete
3. Бэкап сайтов осуществляется аналогично (предполагаю, что они лежат в /var/www/)
Файл www_backup.sh:
#!/bin/sh
TIME=`date +%Y-%m-%d-%H:%M`
WHAT=/var/www
WHERE=/home/backup/www
COPY=/mnt/yadisk/www
tar -cpzf $WHERE/$TIME.tgz $WHAT
cp $WHERE/$TIME.tgz $COPY
find $WHERE -mtime +1 -print -delete
find $COPY -mtime +30 -print -delete
4. Бэкап MySQL осуществляется при помощи команды mysqldump
Файл mysql_backup.sh
#!/bin/sh
TIME=`date +%Y-%m-%d`
# Логин пользователя мускула
USER=root
# Пароль пользователя мускула
PASS=root_password
WHERE=/home/backup/mysql
COPY=/mnt/yadisk/mysql
### Базы которые надо бэкапить
for base in base_name1 base_name2
do
# Сделать дамп баз
mysqldump -u$USER -p$PASS -B $base > $WHERE/$base-$TIME.sql
done
cp $WHERE/$base-$TIME.sql $COPY
find $WHERE -mtime +1 -print -delete
find $COPY -mtime +30 -print -delete
Восстановление
Восстановление сайтов и конфигов осуществляется простым копированием в место назначения.
Восстановление баз:
mysql -u root -p root_password -f base_name1 < /home/backup/mysql/base_name1.sql
mysql -u root -p root_password -f base_name2 < /home/backup/mysql/base_name2.sql
Восстановление системы более сложный процесс, но суть сводится к одному - сделать чистую установку аналогичной ОС, загрузится с LIVE CD, подмонтировать Ядиск и распаковать архив в root директорию (root директорией называют корень файловой системы - / ), за исключением каталога /boot
ОБЯЗАТЕЛЬНО заранее проделать восстановление на отдельной виртуалке.
Вместо послесловия
Такой бэкап, как говорится, и палкой не убить. Единственное, что надо делать - время от времени руками проверять архивы бэкапов на читаемость и прохождению нормального разархивирования. К сожалению, архивы бывают битыми.