Site icon Бидюков Денис

Резервное копирование на Яндекс Диск (бэкап)

Резервное копирование на Яндекс Диск (бэкап)

У каждого обладателя почты Яндекса есть как минимум 10 гигов Яндекс Диска, а то и больше. У меня лично 15, а у супруги и того больше, 30. По нынешним меркам казалось бы объемы мизерные, но когда речь идет о документах, личных фото и т.д., то этих объемов более чем достаточно для хранения чего-то важного.

В моем случае это база данных и файлы сайта. Пока сайт работал на хостинге, мне хватало резервных копий, которые делались хостером. По хорошему конечно и тут стоило бы заморочиться резервным копированием, чем чёрт не шутит. А тут вообще переехал на VPS. Тут вся ответственность ложится на меня, хостер дает возможность хранить три резервных копии. Да и незачем постоянно бэкапить весь VPS. Достаточно это сделать после внесений изменений в систему, например после настройки веб-сервера. А вот файлы сайта и базу данных есть смысл бэкапить отдельно. Именно это я и сохраняю на Яндекс Диск.

Тут вы наверняка скажете, тоже мне проблема. Подключил по WebDav и копируй что хочешь. На первый взгляд да, все просто. Только проблема в низкой скорости и максимальном объеме файла, который ограничен 250 мегабайтами. При использовании консольного клиента от Яндекс я столкнулся с проблемой, которая вытекает из синхронизации. Если что-то удалить из Яндекс Диска, то программа быстро это грохнет это там, откуда скопировала. Сей факт меня не устраивал. При каком-либо сбое мы можем утратить как оригинал, так и резервную копию.

В поисках альтернативы я наткнулся на утилиту для работы с Яндекс Диском ydcmd. Эта утилита не устраивает меня полностью, но она удобнее чем утилита от Яндекса. В частности меня не устраивает отсутствие аналога —delete у rsync. Этот параметр говорит rsync чтобы он не удалял в резервной копии файлы, которые были удалены в исходной. Таким образом если мы вдруг удалили по ошибке нужный файл, то сможем взять его из резервной копии.

Установка ydcmd

Данная утилита предназначена для работы системах Linux/FreeBSD. В моем случае это Ubuntu Server, где работает сайт моего клиента.

У меня Ubuntu 20.04 и я привожу команды именно для эжтой версии дистрибутива. Инструкции для более ранних релизов смотрите тут.

echo 'deb http://download.opensuse.org/repositories/home:/antonbatenev:/ydcmd/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/home:antonbatenev:ydcmd.list
curl -fsSL https://download.opensuse.org/repositories/home:antonbatenev:ydcmd/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_antonbatenev_ydcmd.gpg > /dev/null
sudo apt update
sudo apt install ydcmd

Если все прошло успешно, получаем токен выполнив команду:

ydcmd token

Получаем ссылку, копируем её, открываем в браузере. В браузере получаем код состоящий из цифр и копируем этот код. Возвращаемся в терминал и запускаем команду:

ydcmd token 2099988

Где 2099988 — это код, который мы скопировали в браузере. Запускаем и получаем токен. Сохраняем этот токен.

Для работы с одним Яндекс Диском

nano ~/.ydcmd.cfg

Вставляем в файл следующие строки:

[ydcmd]
token   = 1234567890
verbose = yes

Вместо 1234567890 вставляем свой токен и сохраняем. Затем устанавливаем права на этот файл, но это не обязательно.

chmod 0600 ~/.ydcmd.cfg

Для работы с несколькими дисками

Для работы с несколькими Яндекс Дисками нужно создать для каждого свой конфиг. Для удобства создадим папку, где соберем наши конфиги.

mkdir .ydcmd.cfg.d

Затем в этой директории создаем конфиг. Файлы создаем по инструкции выше. Для имени файла используем логин аккаунта.

Копирование файлов на диск

Для копирования файлов на диск необъходимо выполнить соответствующую команду:

ydcmd put <папка> <disk:/папка>

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

Чтобы экономить ресурсы и не копировать по сто раз одно и то же, мы добавим аргумент —rsync. Также для ускорения работы можно поиграться с аргументом —threads=<N> где <N> — это число процессов. Если необходимо синхронизировать директорию с большим количеством мелких файлов, то этот аргумент сильно ускорит процесс синхронизации.

Вот так выглядит команда для бэкапа файлов сайта:

ydcmd put —rsync —threads=10 ~/site <disk:/site>

Если вдруг решите эту команду запихать в cron,то для ydcmd нужно указать полный путь, то есть /usr/local/bin/ydcmd. Иначе команда просто не запустится.

Подробная информация о доступных командах на этой странице.

На сайте отсутствует реклама

Автор не получает прямой выгоды. Если считаете что материал полезен, поддержите проект

Номер карты

Заранее спасибо!

Бидюков Денис

Эксперт по сайтам

Занимаюсь продвижением личного бренда с помощью сайта и SEO. Если Вы хотите из обычного сантехника, электрика, врача или фотографа стать востребованным и высокооплачиваемым  специалистом, то я с легкостью Вам помогу.

Exit mobile version