Как загружать c Лом прямо на Seafile

Когда неохота сначала скачивать сотню траекторий – каждая по гигу – к себе на компьютер, чтобы потом загрузить на Seafile, можно воспользоваться возможностями Seafile Web API.
Как это сделать?
(Сразу скажу: в интернете есть ответ на этот вопрос: http://stackoverflow.com/questions/38742893/how-to-use-a-seafile-generated-upload-link-w-o-authentication-token-from-command. Мой же вариант – это практически просто перевод официального мануала.)

Итак, инструкция.

Что нам понадобится:

  • код авторизации (Authorization token). Это будет аналог пары имя-пароль, которую мы привыкли вводить в веб-интерфейсе
  • идентификатор той библиотеки, куда будет идти загрузка
  • особая, API-шная, ссылка для загрузки

Как это всё получить:

  1. Для начала надо, не мудрствуя лукаво, создать публичную ссылку на нашу библиотеку – как обычно, мышкой в веб-интерфейсе, через кнопку “поделиться”. (Можно, конечно, мудрствовать, но зачем?) Пока на нашу библиотеку нет такой ссылки, к третьему пункту приступать бессмысленно.
  2. Чтобы получить код авторизации, набираем
     curl -d "username=ivanovivan@lcc.chem.msu.ru&password=MyFavoritePa$$w0rd" http://phys0bha-1.chem.msu.ru:8000/api2/auth-token/

    В ответ получаем строчку вида

     {"token":"448d05f6fc909d8fg98gdfg0s98dfgeb8d4884ec06b30"}

    Отлично! Это он и есть. Код авторизации получен.

  3. Теперь с этим супер-ключом пытемся получить идентификатор своей библиотеки:
     curl -H 'Authorization: Token 448d05f6fc909d8fg98gdfg0s98dfgeb8d4884ec06b30' http://phys0bha-1.chem.msu.ru:8000/api2/shared-links/

    Если всё прошло успешно (если мы не забыли выполнить п.1), то в ответ получим строку с repo_id. Это он и есть, его мы и ищем:

     {"fileshares": [{"username": "leonora@lcc.chem.msu.ru", "repo_id": "c7f67c62-4aaa-4c5e-8bd2-417e069cf1ef", "ctime": null, "s_type": "d", "token": "fd67781438", "view_cnt": 0, "path": "/"}]}
  4. И последнее, что надо получить – это ссылку для загрузки в нашу библиотеку. Опыт показывает, что эта ссылка через довольно быстрое время (не знаю, по каким причинам) может устареть. Тогда надо будет просто набрать эту команду ещё раз, чтобы получить новую ссылку.
     curl -H 'Authorization: Token 448d_suda_vstavlaem_nash_auth_token_6b30' "http://phys0bha-1.chem.msu.ru:8000/api2/repos/c7f6_a_suda_vstavlaem_repo_id_1ef/upload-link/

    В ответ получаем ссылку для загрузки:

     http://phys0bha-1.chem.msu.ru:8082/upload-api/6acdfda5-b675-41ee-a3b5-9s8dug9e4b

ГОТОВО!
Теперь по этой ссылке можно загружать свои файлы. Ссылка действует час.
(Внимание: подпапку в библиотеке, куда идёт загрузка, надо указывать в явном виде!
Несмотря на то, что при создании ссылки можно указать не только библиотеку, но и конкретную папку в ней, ссылка для загрузки относится только к библиотеке.)

Команда загрузки выглядит так:

curl -H 'Authorization: Token 448d05f6fc909d8fg98gdfg0s98dfgeb8d4884ec06b30' -F file=@my_heavy_trajectory.dcd -F filename=my_heavy_trajectory.dcd -F parent_dir=/my/subfolder/ http://phys0bha-1.chem.msu.ru:8082/upload-api/6acdfda5-b675-41ee-a3b5-9s8dug9e4b

Поскольку там интернет побыстрее будет, у меня десять траекторий по 657 Мб каждая загрузились всего за 12 минут! 🙂
Вместо скриншота:

[username@access-02 myfolder]$ date; for i in {19..28}; do curl -H 'Authorization: Token ...komanda zagruzki moih traektorij... && printf "\n"; date; done

Wed Mar 8 18:42:54 MSK 2017
c914b3845b28c6d87e7d8fbb5a81252a9bf7a941
Wed Mar 8 18:44:06 MSK 2017
2e7ce79e9ed3f765985391823acc61a594a14e82
Wed Mar 8 18:45:22 MSK 2017
6080bffe2aab4ebc23dcfe916ae1b60f49382386
Wed Mar 8 18:46:34 MSK 2017
b12de87c8a5756c54c61af0eee9f3d18963dfc83
Wed Mar 8 18:47:45 MSK 2017
b4441d28d2de203196a01bc24640abad670400eb
Wed Mar 8 18:48:56 MSK 2017
3867e20519a857866cc57f51b49f4591cdd6b504
Wed Mar 8 18:50:08 MSK 2017
a2a6d95ca47aa34aeac17815e0aa4068dbc9d323
Wed Mar 8 18:51:19 MSK 2017
f0e517fb7351733188885521bd392d2ecc817716
Wed Mar 8 18:52:31 MSK 2017
dbba1b97f452a20298293278ac4d6f8c5ca9311f
Wed Mar 8 18:53:42 MSK 2017
16ca634ce3155f50642bbb45f08b4642d06e8e6b
Wed Mar 8 18:54:54 MSK 2017

Leave a Reply