Задать вопрос

Как настроить backup VDS на Яндекс.Диск?

Не могу разобраться как настроить backup VDS на Яндекс.Диск. Прочитал много статей, включая хабр (либо старые, либо не работает). Попалась одна нормальная статья. Смысл в том, что не требуется дополнительная установка каких-либо утилит на сервер типа "davfs2". А просто получение токена и использование его в скрипте по крону. Только вот скрипт не рабочий, а с написанием скриптов на баше, проблемы.

Пытаюсь сделать бекап как сайтов на сервере, так и БД + настройки и утилиты VDS (что касается последнего, я даже не знаю, что конкретно нужно бекапить + как восстанавливаться в случае чего).
  • Вопрос задан
  • 7012 просмотров
Подписаться 9 Оценить 13 комментариев
Помогут разобраться в теме Все курсы
  • Учебный центр «Микротест»
    Linux уровень 1. Основы администрирования систем Linux (Линукс)
    1 неделя
    Далее
  • Stepik
    Основы работы в консоли Linux, настройка сетевых служб (кластер)
    1 неделя
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
Решения вопроса 1
@mureevms
Предисловие.
Вы должны смонтировать Ядиск как описано в этой статье в каталог /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
ОБЯЗАТЕЛЬНО заранее проделать восстановление на отдельной виртуалке.

Вместо послесловия
Такой бэкап, как говорится, и палкой не убить. Единственное, что надо делать - время от времени руками проверять архивы бэкапов на читаемость и прохождению нормального разархивирования. К сожалению, архивы бывают битыми.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
IT ATLAS Москва
от 200 000 до 250 000 ₽
от 300 000 до 450 000 ₽
Сбер Москва
от 200 000 до 300 000 ₽