Команды и параметры
При вводе команды вы можете задать имя файла для хранения токена и путь к нему (FILE). Если дополнительные параметры не будут указаны, для хранения токена будет создан файл passwd в каталоге ~/.config/yandex-disk .
Вводить логин и пароль в клиенте не нужно. После вызова команды Диск предложит вам открыть определенную страницу в браузере и ввести там уникальный код.
start — запустить демон и синхронизировать все папки, кроме указанных в списке исключений exclude-dirs.
status — отобразить статус работы демона (состояние синхронизации, ошибки синхронизации, список синхронизированных файлов, общее и свободное пространство на Диске).
$ yandex-disk publish [OPTION] FILE
$ yandex-disk unpublish FILE
Дополнительные параметры [OPTION]
Указать файл конфигурации. По умолчанию используется файл config.cfg в каталоге ~/.config/yandex-disk .
Указать каталог для хранения локальной копии Диска. Если его название не было задано при выполнении начальной настройки, по умолчанию будет использоваться каталог ~/Yandex.Disk .
Указать файл с данными авторизации. По умолчанию используется файл passwd , который создается с помощью команды token или мастера начальной настройки и хранится в каталоге ~/.config/yandex-disk .
Не синхронизировать указанные каталоги. Чтобы настройка действовала всегда, каталоги необходимо добавить в список исключений exclude-dirs в файле config.cfg . Чтобы настройка действовала корректно, названия исключаемых директорий нужно перечислять через запятую, без пробелов.
Запретить изменение файлов на сервере Диска и выполнить синхронизацию только в локальной копии. При возникновении конфликтов синхронизации локальные файлы будут переименованы. Если дополнительно указан параметр —overwrite , локальные файлы будут перезаписаны.
При синхронизации с сервером разрешить перезапись изменений, сделанных в локальной копии Диска. Используется вместе с параметром —read-only .
Запустить демон без возврата управления в консоль. Чтобы вернуть управление, демон необходимо остановить, запустив в другой консоли команду yandex-disk stop или закрыв текущую консоль.
Если используется этот параметр, приложение не читает файл конфигурации. Поэтому все необходимые настройки нужно вводить через командную строку. Так, параметру exclude-dirs соответствует аргумент —exclude-dirs .
$ yandex-disk --no-daemon --dir=/root/Yandex.Disk --exclude-dirs=DO_NOT_SYNC,temp
Примечание. При использовании —no-daemon не нужно указывать команду start : в этом режиме все команды игнорируются.
Настроить прокси-сервер. Допустимые параметры:
YPermitin / Отправка файлов в Yandex Disk через REST API из Bash.md
Пример выгрузки файлов на Яндекс.Диск из Bash через официальный REST API.
Подготовка токена для работы с API
- Идем по ссылке и входим под нужной учетной записью Яндекса, после чего нажимаем «Зарегистрировать новое приложение».
- Настраиваем новое приложение:
- Заполняем название приложения и его описание.
- Даем права для работы с API, а именно в разделе «Яндекс.Диск REST API» отмечаем «Доступ к информации о Диске» и «Доступ к папке приложения на Диске».
- В разделе «Платформы» устанавливаем флаг «Веб-сервисы», после чего заполняем параметр «Callback URL», нажав на «Подставить URL для разработки».
- Другие параметры приложения используйте по необходимости.
- После сохранения будет выполнено перенаправление на страницу с данными нового приложения. Сохраняем эту информацию себе.
- Переходим по ссылке и разрешаем доступ приложения.
https://oauth.yandex.ru/authorize?response_type=token&client_id=
- После подтверждения получим токен для работы с API, который будет действовать 1 год.
- Профит!
Вот простой скрипт для отправки файла на Яндекс.Диск. По необходимости в скрипт можно добавить проверки ошибок, логирование и так далее. Здесь лишь простейший пример.
#!/bin/bash FILENAME="somefile.txt" FILEPATH="/home//$FILENAME" TOKEN='' # Простая функция для парсинга свойств из JSON function parseJson() < local output regex="(\"$1\":[\"]?)([^\",\>]+)([\"]?)" [[ $2 =~ $regex ]] && output=$ echo $output > # Функция для отправки файла function sendFile < echo "Start sending a file: $1" # Получаем URL для загрузки файла sendUrlResponse=`curl -s -H "Authorization: OAuth $TOKEN" https://cloud-api.yandex.net:443/v1/disk/resources/upload/?path=app:/$FILENAME&overwrite=true` sendUrl=$(parseJson 'href' $sendUrlResponse) . # Отправляем файл sendFileResponse=`curl -s -T $FILEPATH -H "Authorization: OAuth $TOKEN" $sendUrl` . echo "Completing a file upload: $1" > sendFile $FILEPATH
Найти эти файлы в веб-интерфейсе можно перейдя на Яндекс.Диск в браузере, далее зайти в папку «Приложения». В ней вы увидите подкаталог с именем приложения, там все файлы и будут расположены.
Прототип клиента Яндекс.Диска для Linux и открытие API
На днях Яндекс открыл документацию API Яндекс.Диска, и я хочу рассказать о примере программы, созданной на базе этого API.
У Яндекс.Диска есть отдельные клиентские программы для ОС Windows и Mac OS X, которые поддерживают локальную копию файлового хранилища. Это невероятно удобно! Надо отдать должное Дропбоксу, который, кажется, первым предложил именно такой способ использования облачного файлового хранилища.
Для Линукса клиента нет, но зато Яндекс.Диск поддерживает доступ к файлам по открытому и отлично себя зарекомендовавшему за многие годы протоколу WebDAV. Поддержка WebDAV в ядре Линукса позволила относительно малой кровью создать прототип синхронизирующего клиента Яндекс.Диска.
Текущая версия доступна на гитхабе — это примерно 130 строк кода на Перле, а здесь я очень кратко расскажу, как она устроена и работает.
Краткий дисклеймер: поскольку пока это в большей степени прототип, использовать программу для синхронизации важных данных не рекомендуется. Клиент имеет пока лишь рудиментарую обработку ошибок, а также расходует куда больше памяти, процессора и трафика, чем можно.
В домашнем каталоге пользователя появляется подкаталог YandexDisk, который содержит локальную копию файлов из Диска, а также скрытый каталог .yadisk-davfs, который является точкой монтирования для файловой системы davfs2 и предоставляет файловый доступ к реальным данным в облаке Яндекса. Задача синхронизатора — поддерживать эти два каталога в идентичном виде, подхватывая изменения в каждом из них.
Эту задачу yadisk-sync решает с помощью трёх важных инструментов:
- Во-первых, для слежения за изменениями в локальной копии используется механизм inotify, доступный во всех современных ядрах.
- Во-вторых, для получения изменений из облака используется подписка на XMPP-сообщения. Эта часть протокола Яндекс.Диска пока не документирована.
- В-третьих, для синхронизации двух каталогов используется известный пакет unison. Он-то и выполняет львиную долю работы по синхронизации.
Сама программа yadisk-sync.pl не демонизируется для упрощения отладки, а для установки и конфигурирования требует выполнения инструкций из файла «README.txt». Тестировалось это всё только на Ubuntu 11.10 и Mint 12.
Попробуйте, возможно кого-то этот прототип вдохновит на какие-то интересные разработки. Или используйте API Диска для создания совершенно новых программ и приложений.
Commands and parameters
When entering the command, you can specify the file name for the token and the path to it (FILE). If no additional options are specified, the file passwd will be created in the directory ~/.config/yandex-disk to store the token.
You don't need to enter your username and password in the client. After calling the command, Yandex.Disk will ask you to open a certain page in the browser and enter your unique code there.
Note. Before entering the code, make sure you are logged in to the browser under the correct account.
status : Display the daemon's status (sync status, sync errors, list of synced files, and total and available space on Yandex.Disk).
$ yandex-disk publish [OPTION] FILE
$ yandex-disk unpublish FILE
Additional options [OPTION]
Show the configuration file. The config.cfg file is used by default in ~/.config/yandex-disk .
Enter the folder where the local copy of Yandex.Disk will be stored. If a name was not entered during the initial setup, ~/Yandex.Disk will be used by default.
Enter the file containing authorization data. The default file is passwd , which was created using the token command or the setup wizard and is stored in ~/.config/yandex-disk .
Do not sync the specified directories. For these settings to always apply, these directories must be added to the exclude-dirs exclusion list in the config.cfg file. For settings to work correctly, the names of excluded directories should be separated with commas, not spaces.
Forbid changing files on the Yandex.Disk server and only sync local copies. In the event of syncing conflicts, local files are renamed. If the —overwrite setting is also enabled, local files are overwritten.
Let changes made to the local copy of Yandex.Disk be overwritten when syncing with the server. Used together with the —read-only option.
Launch the daemon without returning management to the console. To return management, the daemon must be stopped by launching the command yandex-disk stop in another console or by closing the current console.
Configure a proxy server. Valid parameters: