Многие используют сервисы облачного хранения файлов для резервных копий. Одним из приоритетов является Яндекс.Диск, из-за изначального объема места (аж 10Гб). У мэйл.ру некоторые отхапали и 1Тб, но скорость загрузки и надежность оставляет желать лучшего.
У Я.Диск есть неприятный минус - объем корзины является частью общего, т.о. при постоянном обновлении файлов (особенно крупных) корзина заполняется в считанные дни (у кого и часы). Корзина конечно чистится автоматом, но по истечении 30 дней с момента удаления. Ручной настройки интервала, к сожалению, нет.
Некоторое время назад я решил поискать как же это сделать. Сделать можно, через API Яндекса. Инструкция по которой делал я, была рассчитана на *nix системы, здесь же я расскажу о Windows системах (к сожалению, я не смог найти ту инструкцию повторно, чтобы приложить к статье).
Приступим.
Для начала установим Я.Диск на ПК.
Качаем
Создаем где-нибудь папочку аля "Скрипт очистки корзины Яндекса", разархивируем туда curl.exe из папки winssl в архиве
Заполняем данные (новый вариант справа, нужно выбрать все варианты с cloud):
старый |
новый |
Получили ID и пароль
старый |
https://oauth.yandex.ru/authorize?response_type=token&display=popup&client_id=ВАШ_IDВставляем в строку адреса и переходим
Вот мы и получили наш токен
Создаем исполняемый файл со следующим содержимым:
cd %~dp0
curl.exe -s -H "Authorization: OAuth ВАШ_ТОКЕН" -X "DELETE" https://cloud-api.yandex.net/v1/disk/trash/resources/?path=
Файл сохраняем в ту же папку, где лежит curl
Если выполнить этот файл, то корзина должна очиститься.
Далее создаем задание в планировщике заданий:
Вот и все. Если все правильно сделано, то корзина будет вычищаться каждый день в 12 часов дня (если ПК включен и подключен к интернету).
Сервер Yandex возвращает ответ при наличии файлов в корзине, иначе будет пусто. Также пусто будет при ошибке, так как curl запускаем с ключом -s (silent). Если нет результата от выполнения, убираем ключ и смотрим ответ curl`a. Вполне вероятен такой ответ:
schannel: failed to retrieve ALPN resultСобственно ответа на просторах я не нашел. Но в таком случае можно попробовать openssl (распаковываем содержимое папки из архива (3 файла)), и добавляем ключ -k, если программа матерится на сертификаты.
После выполнения батника получаю ошибки
ОтветитьУдалить"display" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
"client_id" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Какого батника?
Удалить