Настройка backup сервера на Яндекс.Диск

Первым делом необходимо смонтировать Яндекс.Диск на сервере как файловую систему, куда будут копироваться все бэкапы.

Для быстрого и удобного восстановления будем оставлять свежую копию бэкапа на сервере.

Создаём каталоги /home/backup/... и /mnt/yadisk/…

Bush-скрипт бэкапа разбит на 4 части намеренно, что бы было удобно использовать и запускать по крону с разными временными интервалами.

Бэкап системы будем осуществляется с помощью команды tar.

 

Бэкап системы

Создаём файл backup_system.sh:

#!/bin/sh
TIME=`date +%Y-%m-%d`
# Что бэкапить
WHAT=/
# Расположение бэкапа
WHERE=/home/backup/system

# Директория для копирования бэкапа Яндекс.Диск
COPY=/mnt/yadisk/system

# Команда бэкапа системы. Файл бэкапа исключает системные каталоги и каталоги с самими бэкапами
tar -cpzf backup_system($TIME).tgz --exclude=/dev --exclude=/proc --exclude=/lost+found --exclude=/home/backup --exclude=/mnt /

# Копирование файла бэкапа на Яндекс.Диск 
cp $WHERE/$TIME.tgz $COPY

# Оставляем на сервере только последний бэкап, остальные удаляем
#  -mtime - Критерий поиска по времени модификации файла 
# 1 — 1 День
find $WHERE -mtime +1 -print -delete

# Удаляем с Яндекс.Диска бэкапы 30ти дневной давности
find $COPY -mtime +30 -print -delete

 

Бэкап конфигурации сервера /etc

Файл backup_etc.sh:

#!/bin/sh
TIME=`date +%Y-%m-%d-%H:%M`
# Что бэкапить
WHAT=/etc
# Расположение бэкапа
WHERE=/home/backup/etc

# Директория для копирования бэкапа Яндекс.Диск
COPY=/mnt/yadisk/etc

# Команда бэкапа системы
tar -cpzf backup_etc($TIME).tgz $WHAT

# Копирование файла бэкапа на Яндекс.Диск
cp $WHERE/$TIME.tgz $COPY

# Удаляем старые
find $WHERE -mtime +1 -print -delete
find $COPY -mtime +30 -print -delete

 

Бэкап сайтов

Файл backup_sites.sh:

#!/bin/sh
TIME=`date +%Y-%m-%d-%H:%M`
WHAT=/var/www # Или /home/user/www/
WHERE=/home/backup/www
COPY=/mnt/yadisk/www
tar -cpzf backup_sites($TIME).tgz $WHAT
cp $WHERE/$TIME.tgz $COPY
find $WHERE -mtime +1 -print -delete
find $COPY -mtime +30 -print -delete

 

Бэкап MySQL

Бэкап через команду mysqldump
Файл backup_mysql.sh

#!/bin/sh
TIME=`date +%Y-%m-%d`
# Логин пользователя MySql
USER=root
# Пароль пользователя MySql
PASS=root_password
WHERE=/home/backup/mysql
COPY=/mnt/yadisk/mysql
### Базы которые надо бэкапить
for base in BDname1 BDname2 BDname3
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 user -p user_password -f BDname1 < /home/backup/mysql/BDname1.sql
mysql -u user -p user_password -f BDname2 < /home/backup/mysql/BDname1.sql

 

Восстановление системы

Является более сложным процессом. Необходимо произвести чистую установку аналогичной ОС, загрузится с LIVE CD, смонтировать Яндекс.Диск и распаковать архив в корень файловой системы - /.

 

 

Таким образом делать бэкапы можно любых каталогов и заливать архивы куда и как угодно. Например на отдельный сервер по FTP или сервисы rsync, git, SCP. Также существует консольный клиент DropBox'а под linux.