Скрипт бекапа на Яндекс.Диск

Thank you for reading this post, don't forget to subscribe!

Функ­ции скрипта:
— Созда­ние на сер­ве­ре бека­па про­ек­тов (фай­лов + баз дан­ных MySQL);
— Авто­ри­за­ция на Яндекс.Диске в каче­стве при­ло­же­ния (по токе­ну, более без­опас­ный спо­соб, чем исполь­зо­ва­ние логи­на и пароля);
— Отправ­ка бека­пов с сер­ве­ра на Яндекс.Диск;
— Уда­ле­ние ста­рых бека­пов с Яндекс.Диска для эко­но­мии места (настра­и­ва­ет­ся мак­си­маль­ное коли­че­ство хра­ни­мых бекапов);
— Запись и отправ­ка лога на e-mail (настра­и­ва­ет­ся).

Для того, что­бы вос­поль­зо­вать­ся скрип­том, необ­хо­ди­мо сна­ча­ла полу­чить токен от Яндекс.Диска.
1. Логи­ним­ся на Яндек­се под акка­ун­том, на диск кото­ро­го будем делать бекап, захо­дим на oauth.yandex.ru и нажи­ма­ем «Заре­ги­стри­ро­вать новое приложение».

2. Запол­ня­ем назва­ние при­ло­же­ния (напри­мер, «backup») и выда­ём нуж­ные пра­ва в раз­де­ле «Яндекс.Диск REST API», а имен­но: «Доступ к инфор­ма­ции о Дис­ке» и «Доступ к пап­ке при­ло­же­ния на Диске».

Ниже на той же стра­ни­це под полем «Callback URL» нажи­ма­ем «под­ста­вить URL для раз­ра­бот­ки» и нажи­ма­ем «Сохра­нить»:

3. После сохра­не­ния пара­мет­ров при­ло­же­ния нас пере­на­пра­вят на стра­ни­цу с дан­ны­ми о приложении:

4. Теперь полу­чим сам токен (если хоти­те, може­те почи­тать подроб­нее об этом в мануа­ле Яндек­са), для это­го копи­ру­ем ID, под­став­ля­ем в конец URL https://oauth.yandex.ru/authorize?response_type=token&client_id=, пере­хо­дим по полу­чив­ше­му­ся адре­су и под­твер­жда­ем выда­чу раз­ре­ше­ний приложению:

В ито­ге на стра­ни­це будет отоб­ра­жён токен, кото­рый выда­ет­ся не менее, чем на 1 год, поэто­му если скрипт бека­па вдруг пере­ста­нет рабо­тать, мы смо­жем полу­чить новый токет и под­ста­вить его в скрипт. Про­те­сти­ро­вать воз­мож­но­сти рабо­ты с Яндекс.Диском, исполь­зуя полу­чен­ный токен, мож­но на спе­ци­аль­ном поли­гоне.

А теперь сам bash-скрипт для бека­па на Яндекс.Диск:

 

backup-yandex.sh

 

 

 

Скрипт сле­ду­ет рас­по­ло­жить на сер­ве­ре, заме­нить в нём пара­мет­ры на свои, дать пра­ва на запуск (chmod +x) и поста­вить на еже­днев­ное выпол­не­ние в cron. Если вы пла­ни­ру­е­те выпол­нять несколь­ко таких зада­ний, задай­те вре­мя меж­ду их запус­ком (5-10 минут).