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

Резервное копирование на Яндекс Диск (бэкап)
Share on facebook
Share on twitter
Share on vk
Share on telegram
Share on whatsapp

У каждого обладателя почты Яндекса есть как минимум 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. Иначе команда просто не запустится.

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

Share on facebook
Share on twitter
Share on vk
Share on telegram
Share on whatsapp

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

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

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *