Автоматическая очистка корзины Яндекс диска

Многие уже наверно делают бекапы на Яндекс Диск - бесплатное место ограничено 10 гигабайтами.

Ка правило, любые скрипты бекапа удаляют старые копии (затирают) и заливают новые. Но в Яндекс Диске они не удаляются, а перемещаются в корзину (и хранятся месяц), занятое дисковое пространство в корзине входит в ограничение в 10 гигабайт.

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

 

1. Авторизуемся https://oauth.yandex.ru/ и создаем приложение cleantrash, выбираем Яндекс Диск REST API - ставим все галочки для доступа к Яндекс Диску справа, нажимаем внизу Подставить URL для разработки и жмем сохранить. В итоге мы получим id и пароль приложения - сохраняем его себе.

2. Вызываем в браузере

https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=вашid

где вашid - это id который мы сохранили, жмем кнопку разрешить.
Результатом вывода браузера будет ваш токен.

3. Настройка планировщика для linux, Mac OS:

   Создаем sh скрипт и подставляем полученный ранее токен в sh скрипт - который будем запускать по крону.

nano /home/user/cleanya.sh
#!/bin/sh
/usr/bin/curl -s -H "Authorization: OAuth ваштокен" -X "DELETE" https://cloud-api.yandex.net/v1/disk/trash/resources/?path=
chmod 700 /home/user/cleanya.sh

Ставим в крон этот скрипт -во сколько и так часто, как вам нужно

 0 9 * * * /home/user/cleanya.sh > /dev/null 2>&1

 

4. Настройка планировщика для windows 10:

Скачиваем утилиту curl для windows по ссылке https://curl.haxx.se/windows/ , распаковываем содержимое архива в папку C:\Users\user\Downloads\curl , где user это ваш пользователь windows, под которым вы работаете.

Создаем bat файл c:\Users\user\Downloads\curl\ya.bat  со следующим содержимым:

@echo off
START /B c:\Users\user\Downloads\curl\bin\curl.exe -s -H "Authorization: OAuth ваштокен" -X "DELETE" https://cloud-api.yandex.net/v1/disk/trash/resources/?path=
exit

где ваштокен - токен который вы получили. 

Для запуска bat файла в фоновом режиме (чтобы не выскакивало постоянно черное окно cmd), создаем vbs файл c:\Users\user\Downloads\curl\ya.vbs со следующим содержимым:

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "c:\Users\user\Downloads\curl\ya.bat" & Chr(34), 0 
Set WshShell = Nothing

проверяем - запускаем вручную ya.vbs двойным кликом мыши.

Создаем задание в планировщике windows 10:
- меню планировщика - создать простую задачу, имя - cleanya, далее - триггер (выбираем время запуска какое вам нужно), действие - запустить программу, далее - запуск программы (в поле программа или сценарий вводим wscript.exe , ниже, в поле Добавить аргументы - путь до vbs скрипта в кавычках)

"c:\Users\user\Downloads\curl\ya.vbs"

 

проверяем задание в планировщике - жмем правой кнопкой мыши - выполнить.

В итоге корзина Яндекс диска автоматически ежедневно очищается!