Yandex.Disk File Pusher
Go to file
2019-04-02 00:41:48 +04:00
domains/yandex/v1 Update README with usage instructions, prepare to first release 2019-03-30 08:07:13 +04:00
internal Update README with usage instructions, prepare to first release 2019-03-30 08:07:13 +04:00
vendor Add actual file upload to Yandex with progress bar 2019-03-30 07:00:15 +04:00
.gitignore Add goreleaser configuration 2019-03-30 08:18:31 +04:00
.golangci.yaml Fix linting errors 2019-03-30 07:06:15 +04:00
.goreleaser.yml Add more OS/arch combinations to goreleaser 2019-04-02 00:41:48 +04:00
go.mod Add actual file upload to Yandex with progress bar 2019-03-30 07:00:15 +04:00
go.sum Add actual file upload to Yandex with progress bar 2019-03-30 07:00:15 +04:00
LICENSE Add license 2019-03-29 09:37:19 +04:00
main.go Update README with usage instructions, prepare to first release 2019-03-30 08:07:13 +04:00
README.md Update README with usage instructions, prepare to first release 2019-03-30 08:07:13 +04:00

Yandex.Disk File Pusher

English

This small CLI utility is useful when you want to upload single file to Yandex.Disk but don't want to fiddle with sync official client or WebDAV. It is especially useful for automating backups (e. g. in conjuction with Proxmox's vzdump).

Installation

Download pre-built binary from releases page. If you're brave enough, or have Go installed, you can invoke

go get -u github.com/fat0troll/yapusher

The stability of master branch is questionable. Please consider using pre-built binaries except you facing some bugs that aren't fixed in newest release.

Usage

Assuming that yapusher installed in your $PATH, you can invoke

yapusher -h

to get small help on available arguments.

Before first use you need to authorize the application. Invoke yapusher without params to get URL for authorization. Open this URL in your favourite browser and provide access to your Yandex account. In return you will get the code for app. You have 10 minutes to invoke yapusher -authCode XXXXXXX to end autorization process.

For uploading single file you should run this command

yapusher -file /path/to/file -uploadPath "some/path"

There are some assumptions:

  • uploadPath is the path from the root of your Yandex.Disk. You don't need to include first /.
  • This path should exist at the time of yapusher running. Currently this utility can't make directory for you before uploading.
  • The file you uploading must be 10 gigabytes or less. This is Yandex restriction, not app's one.
  • The file you uploading shouldn't exist in target directory. If you want to overwrite file, pass -force flag to params.

On success, the progress bar will be shown, and after the end of upload the file will appear in your Yandex.Disk.

There is no support for uploading entire directories (yet).

Development and TODO

This utility is in early stages of development. Things may change or break. However, this utility is used by author for making vzdump backups uploads to Yandex.Disk in semi-production environment.

There are some things to do:

  • Test coverage
  • Creating upload path if it's not exist on Yandex.Disk
  • Splitting large (more than 10 gigabytes) files to parts
  • Maybe something else

License

See LICENSE.

Russian

Эта маленькая консольная утилита полезна, если вы хотите загрузить единичный файл на Яндекс.Диск, но не хотите связываться с полноценным приложением для синхронизации или WebDAV. Особенно такая утилита полезна для автоматизации заливки резервных копий (например, в связке с vzdump из состава Proxmox).

Установка

На странице релизов доступны собранные версии утилиты для Win/Linux/Mac, которые можно скачать и расположить где угодно у себя в системе. Если вы хотите собрать утилиту из исходников (и имеете установленный Go в системе), вы можете установить yapusher так:

go get -u github.com/fat0troll/yapusher

Стабильность ветки master находится под вопросом. Рекомендуется использовать собранную автоматически версию утилиты из релиза, если вы не являетесь разработчиком на Go или же не испытываете затруднений в работе с утилитой, исправления которых ещё не вошло в очередной релиз.

Использование

Предполагая, что yapusher установлен в директорую из вашего $PATH, его можно запустить так:

yapusher -h

В ответ вы получите краткую справку (на английском) о флагах, используемых в приложении.

Прежде чем использовать утилиту, её нужно авторизовать. Запустите yapusher без параметров для получения URL авторизации. Откройте полученную ссылку в вашем любимом браузере и дайте доступ к вашему аккаунту Яндекса приложению. Яндекс вернёт вам семизначный код, который в течение 10 минут необходимо предоставить приложению c помощью команды yapusher -authCode [полученный код].

Для загрузки единичного файла выполните следующую команду

yapusher -file /путь/к/файлу -uploadPath "путь/на/яндекс/диске"

Ожидается следующее

  • uploadPath — путь на вашем Яндекс.Диске, начиная от его корня. Включать в него корневой слэш / не нужно.
  • Путь на Яндекс.Диске должен существовать на момент запуска yapusher. На данный момент утилита не умеет создавать себе директории для загрузки самостоятельно.
  • Размер загружаемого файла не должен превышать 10 гигабайт. Это ограничение Яндекса.
  • Файл не должен уже находиться в целевой директории Диска. Если он там уже есть, а вы хотите его перезаписать, добавьте к аргументам флаг -force.

В случае успеха будет показан прогресс-бар, по заполнению которого загруженный файл появится в вашем Яндекс.Диске.

Разработка и TODO

Эта утилита находится в самом начале разработки. Что-то может измениться или сломаться. Однако, автор этой программы уже использует её на пре-продакшен окружении для бекапа дампов vzdump.

План разработки:

  • Покрыть утилиту тестами
  • Внедрить возможность создавать директорию для загрузки на Яндекс.Диске, если её ещё нет там
  • Разделять большие (более 10 гигабайт) файлы на куски и загружать их по частям
  • Что-нибудь ещё, список может быть расширен.

Лицензия

См. LICENSE.