пятница, 24 марта 2017 г.

Подключение к диску Google Drive в Linux Mint через free software

Предлагаемый вариант решения применен в Linux Mint xfce 18.1

Если Вы тоже искали приемлемый для себя вариант подключения Google Drive таким образом, чтобы с ним можно было работать в файловом менеджере, то убедились, что:
а) декстопного клиента для Linux Google не предоставляет;
б) предлагаемые решения либо, в конечном итоге, коммерческие, либо связаны с глубоким погружением в синтаксис командной строки.

Имеется способ, связанный с установкой gnome-control-center и gnome-online-accounts. Однако установить эти пакеты в систему будет мало, потребуется ещё внести некоторые изменения, ознакомившись с которыми у меня не возникло желания ставить эксперимент на стабильно функционирующей системе. Попытка добиться результата на тестовой системе успехом не увенчалась, так как, несмотря на получение разрешения от аккаунта Google, никакой записи в сетевых учётных записях так и не появилось. Кого интересует, можете ознакомиться с материалами, изложенными на bosha.ru и ualinux.com, первоисточником которых, похоже, является англоязычная публикация на webupd8.org.

Предлагаемое на многих сайтах решение, предусматривающее установку пакета google-drive-ocamlfuse с репозитория alessandro-strada у меня не нашло практического применения, так как:

1) заявленной авторами публикаций синхронизации мной не обнаружено.


Графического индикатора google-drive-ocamlfuse не имеет, но из индикации активности сетевых соединений видно, что нулевая скорость скачивания (D: 0 bytes/s) свидетельствет о том, что содержимое моего Drive Google не копируется на компьютер.

Решение предусматривает монтирование Google Drive как файловую систему. Но подобное решение, но позволяющее работать не с одним, а со многими Google Drive описано ниже;

2) при попытке отмонтировать примонтированный Google Drive моя система выдаёт ошибку и далее данный процесс переходит в состояние бесконечного, даже в том случае, если принудительно "убит" процесс google-drive-ocamfuse.


Если пожелаете использовать описанное ниже решение, то это потребует от Вас некоторой внимательности и терпения. Результат напоминает работу с папками облака pCloud, которые не включены в список синхронизируемых клиентом папок компьютера или работу с Диском Яндекс по webdav.

Для осуществления подключения Вам потребуется пакет rclone-browser и утилита rclone. Лично у меня Rclone browser нашёлся через Synaptic


Если у Вас такого пакета нет (по причине отсутствия подключения к источнику приложений от webupd8), то необходимый deb-пакет можно скачать. На момент написания этой публикации имелись версии:


Само по себе это приложение не даст возможности подключиться к Google Drive. Для его работы необходима упомянутая выше утилита rclone, которую можно получить на сайте rclone. Выберите необходимую Вам разрядность.

Скачанный архив zip имеет в своём составе 4 файла: 2 файла "прочитай меня" (README) и 2 файла, которые потребуется установить в систему. Файлы README, указывающие как это сделать, написаны на английском языке. Поэтому приведу Вам порядок действий на русском.

1. Скопировать бинарный файл.

В файле README указана команда sudo cp rclone /usr/bin/

Поскольку не являюсь "крутым гуру", то делаю для себя как попроще, т.е. запускаю Midnight Commander с правами суперпользователя – sudo mc в терминале – или GNOME Сommander от имени root (через меню "Файл") и помещаю файл rclone в папку /usr/bin


Далее в терминале выполняю 2 команды:

sudo chown root:root /usr/bin/rclone

sudo chmod 755 /usr/bin/rclone

2. Установить в систему файл справки по пользованию rclone.

В файле README указаны команды:

sudo mkdir -p /usr/local/share/man/man1

sudo cp rclone.1 /usr/local/share/man/man1/

Опять же (по рабоче-крестьянски) запускаю Midnight Commander с правами суперпользователя – sudo mc в терминале – или GNOME Commander от имени root (через меню "Файл") и

а) в папке  /usr/local/share/man создаю новую папку man1;

б) файл rclone.1 помещаю в созданную папку man1.

Далее в терминале выполняю команду  sudo mandb

В ответ получаю:

Обработка справочных страниц в /usr/local/man...
Обновление индексного кэша для пути `/usr/local/man/man1'. Ждите...завершено.
Проверка побочных cat в /usr/local/man...
Проверка побочных cat в /var/cache/man/oldlocal...
В 1 man-подкаталоге содержатся более новые справочные страницы.
Добавлена 1 справочная страница.
Добавлено 0 побочных cat-страниц.
Вычищено 5 старых записей базы данных.


На этом установка rclone завершена.

3. В терминале выполняю  rclone config  и ...

rclone config
2017/03/23 10:11:46 NOTICE: Config file "/home/manager/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q>


Т.е., никакого файла настроек rclone в системе не наблюдается. Что ж, запускаем файловый менеджер, включаем отображение скрытых файлов и папок удобным для Вас способом (через меню "Вид" или комбинацией клавиш Ctrl и h), и создаём в папке .config папку rclone, а в ней – файл rclone.conf

Снова выполняю в терминале  rclone config

Наконец-то, процесс пошёл:

rclone config
No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> 


У меня – новое подключение поэтому выбираю n и при запросе имени (name) указываю Google:

n/r/c/s/q> n
name> Google
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Dropbox
   \ "dropbox"
 5 / Encrypt/Decrypt a remote
   \ "crypt"
 6 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
 7 / Google Drive
   \ "drive"
 8 / Hubic
   \ "hubic"
 9 / Local Disk
   \ "local"
10 / Microsoft OneDrive
   \ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
12 / SSH/SFTP Connection
   \ "sftp"
13 / Yandex Disk
   \ "yandex"
Storage>


Здесь в запросе Storage указываю цифру, соответствющую моему подключению. Так как подключаюсь к Google Drive, то моя цифра будет 7. При дальнейших запросах client_id и client_secret соглашаюсь с предлагаемыми вариантами оставить поля пустыми, т.е. просто жму на Enter:

Storage> 7
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>


На предложение автоматически сконфигурировать подключение отвечаю Yes (Да), т.е. буквой y и далее

y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
2017/03/23 10:15:37 ERROR : Failed to save new token in config file: section 'Google' not found


Здесь говорится о том, что браузер должен открыться автоматически, а ели он этого не сделал, то необходимо перейти по ссылке, авторизоваться в своём аккаунте Google и получить для rclone код.

К счастью, браузер у меня открылся сам и я подтверждаю запрос на доступ:



Далее вижу, что система получила какой-то токен

[Google]
client_id =
client_secret =
token = {"access_token":"ya29.Gls...0h","token_type":"Bearer","refresh_token":"1/OGPpVINwFr0CTThHV3XYXfM4RF1eV4iQuvirWTrINro","expiry":"2017-03-23T11:15:37.65398086+03:00"}


Примечания.  
Указанный выше код и есть содержание файла rclone.conf, расположенного в скрытой папке .config/rclone. Строка токена представляет собой длинную последовательность букв и цифр и в примере выше сокращена посредством замены значительной её части на многоточие. 
В рассматриваемом случае под токеном следует понимать замещение объекта неким обозначением/идентификатором (часто просто целым числом или строкой). Например, идентификатор сессии является классическим токеном. Токены широко применяются в системах авторизации/идентификации и т.п.
Технически токены обычно реализуются в виде записи в базе данных. При этом токен является идентификатором записи о данных пользователя или предоставленного доступа. В этом случае токен вычисляется как хэш комбинации данных пользователя (логина), времени создания, ключей сервера и т.п.
Идея использования токена заключается в том, чтобы вместо передачи большого количества данных предоставить токен, на основании которого будут даны полномочия на выполнение различных операций. Это и удобно, и способствует снижению рисков компрометации данных.


и, наконец, на запрос что делать дальше из вариантов

y – всё в порядке
e – редактировать подключение
d – удалить подключение

отвечаю y и мне rclone отображает сведения о подключении

y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
Google               drive


с запросом дальнейших действий. Поскольку у меня всё получилось, то выбираю q (выход из конфигурации)

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>


Закрываю терминал и обращаюсь к браузеру Rclone, который у меня отобразился в разделе "Интернет" главного меню под наименованием Rclone Browser.

Внешний вид его несколько аскетичен. Так как у меня настроено подключение Google, то я его и наблюдаю в главном окне.



В нижней его части имеются кнопки "Config", "Refresh" и "Open". Назначение Config понятно, о Refresh пока что не имею никакого понятия, а вот "Open" вызывает явный интерес.


Нажимаю на "Open" и ... вот оно, счастье-то! Вижу свой Google Drive.


Обращаю своё внимание на кнопку "Mount" на верхней панели. Точно как в кинокомедии "Иван Васильевич меняет профессию", терзают меня смутные сомнения (у Шпака – магнитофон, у посла – медальон), что мне будет выдан запрос на точку монтирования моего Google Drive.


Для работы с облаками у меня выделена целая папка Clouds, поэтому создаю в ней ещё одну папку Google и указываю её в запросе на монтирование.


Неужели снова счастье привалило?


Диск Google смонтирован и доступен в менеджере файлов.



Попробуем забросить туда какой-либо файл, например, Хакер.pdf


Странно, в менеджере файлов в Google Drive я его наблюдаю, ход процесса копирования – тоже, а в браузере Rclone он отсутствует.


Вот теперь становится понятным назначение непонятной кнопки "Refresh". Жму на неё и Хакер.pdf появляется в списке файлов.



Точно так же пробую удалить файл(ы). Если удалять через менеджер файлов, то удаление может происходить после некоторого "размышления". Но так как эта ситуация знакома мне по работе с Диском Яндекс по webdav, то тревоги не вызывает.

Кстати говоря, в самом браузере Rclone через правое контекстное меню доступны многие команды. Правда они на английском языке. Но кто понимает – разберётся. Кроме того, ряд команд можно осуществить через кнопки верхнего меню.



Если попытаться закрыть браузер Rclone, то система выдаст предупреждение, что в настоящее время выполняется какое-то задание, и задаст вопрос "Действительно ли желаете остановить задание и выйти".


Можете смело отвечать "Yes", так как если обратиться к вкладке заданий, то обнаружится, что процедура монтирования Google Drive в указанную папку и является этим самым выполняемым заданием.


После закрытия браузера Rclone примонтированный Google Drive отключается, а связанные с ним процессы прекращаются.



При работе с папками ситуация будет точно такая же как и при работе с файлами. При помещении папки на Google Drive (на рисунках ниже это папка 14.03) она появится сразу в менеджере файлов и при подключении к Google Drive через обычный браузер. Для того, чтобы она отобразилась в браузере Rclone необходимо нажать на кнопку "Refresh".




Определённой степенью полезности обладает кнопка верхней панели "Get Size". Если курсор мыши установлен в корень Google Drive, то при нажатии на неё отобразится занятый объём Вашего диска. Если курсор мыши поставить на папку и вызвать "Get Size", то отобразится занятое папкой место на диске.




Ну вот как-то так ... Остальное, при желании, Вы можете постичь в процессе работы (или дальнейших экспериментов).

Похоже, что таким образом могу подключить ещё один или даже два и более дисков Google, указывая им различные имена подключения и монтируя Google Drive в разные папки файловой системы компьютера.

Если выделить только одну папку Google Drive и нажать кнопку "Mount", то в менеджере файлов в качестве сетевого диска будет примонтирована только выделенная папка.



При нажатии кнопки "Config" будет активизирована процедура внесения изменений в текущие настройки. С этим мы уже сталкиваись при создании первого подключения.

Current remotes:

Name                 Type
====                 ====
Google               drive


Далее следует запрос действий:

e – изменить текущее подключение
n – новое подключение
d – удалить подключение
r – переименовать подключение
c – копировать подключение
s – установить пароль на конфигурацию
q – выход

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>

Вероятно, наиболее востребованной операцией будет переименование подключения. Печатаем r и нажимаем Enter. Если имеется несколько подключений, то необходимо указать либо его номер, либо ввести имя подключения. Например, переименуем подключение Google-3

Choose a number from below, or type in an existing value
 1 > Google-1
 2 > Google-2
 3 > Google-3
 4 > Google-4
remote> 3
Enter new name for "Google-3" remote.
name>
   

Осталось напечатать новое имя для подключения Google-3, нажать Enter, а затем последовательно водить q для выхода из режима изменения конфигунации.

Но можно сделать и проще. В зависимости от используемого Вами графического окружения (xfce, MATE, Cinnamon), а также версии системы (18 или ниже), откройте файл конфигурации в текстовом редакторе (при этом включите отображение скрытых файлов в меню "Вид") или введите в терминале команду на запуск текстового редактора Вашей системы.

Пример:

xed /home/manager/.config/rclone/rclone.conf

gedit /home/manager/.config/rclone/rclone.conf

pluma /home/manager/.config/rclone/rclone.conf

Найдите запись в квадратных скобках, которую нужно переименовать. Помните?

[Google-3]
client_id =
client_secret =
token = {"access_token":"ya29.Gls...


Вместо [Google-3] укажите новое имя, например, [Disk-3]

Сохраните файл. При очередном запуске Rclone Browser Вы увидите, что вместо старого будет отображено новое имя. 

Кроме Google Drive, как было указано при конфигурировании подключения, ангалогично можно подключаться и работать со своими бесплатными облаками Dropbox, HubiC, Microsoft OneDrive, Yandex Disk.

Увы, но полученный результат не был закономерным следствием практического применения глубокого понимания процессов в системе. Это явилось итогом действия цепи случайностей. Случайно был предпринят поиск с целью выяснения: не появилось ли какого-либо способа подключения к Google Drive через бесплатное приложение. Случайно по результатам поиска в одной из публикаций было обращено внимание на rsync, а затем на rclone. А далее – случайно простое любопытство и русский "авось". Воистину ...


1 комментарий: