- Вопрос или проблема
- Ответ или решение
- 1. Подключение Google Drive через Online Accounts
- 2. Проверка смонтированных дисков
- 3. Доступ к Google Drive через командную строку
- 4. Понимание структуры файлов Google Drive
- 5. Получение списка файлов с помощью gio
- 6. Использование альтернативных инструментов
- 7. Заключение
Вопрос или проблема
Я добавил свой Google Drive в Онлайн-аккаунты, как описано в Как получить доступ к вашей учетной записи Google Drive в Ubuntu 18.04 LTS.
Это работает хорошо из графического интерфейса:
Но как мне получить к нему доступ через файловую систему из командной строки?
ОБНОВЛЕНИЕ: Я нашел это:
$ mount | grep gv
gvfsd-fuse на /run/user/1000/gvfs тип fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
$ cd /run/user/1000/gvfs/google-drive:host=gmail.com,user=butterworth.ray
$ ls -lgAFt
ls: невозможно прочитать символическую ссылку '1PhljWusfB-JWfKSu3xqzSzCOqztgDTEDWqfG3E2KioQ': Функция не реализована
ls: невозможно прочитать символическую ссылку '12TmyqxUuLFQIktoec0Pe2ygDVPVx9YsDfi6tS2hAXFc': Функция не реализована
ls: невозможно прочитать символическую ссылку '1uUnjOG172XdBQ1fLe6AbslNjsHiTK-IaUpzImwkwSbc': Функция не реализована
...
всего 0
lrw------- 1 ray 0 Янв 19 15:56 1IkBP3RVzCkMPO8UYI8LFyLo71rCOhbEirSMuS39GxUc
lrw------- 1 ray 0 Янв 5 10:06 1JkZJuIN4U-XwOLfKmYr3-0Y2KYQMQ_EmVrZPj1i1AMI
lrw------- 1 ray 0 Июн 15 2018 12TmyqxUuLFQIktoec0Pe2ygDVPVx9YsDfi6tS2hAXFc
drwx------ 1 ray 0 Июн 15 2018 1E3zpESlcc90ZmhjztC4HD22chifWHUkk/
lrw------- 1 ray 0 Июн 15 2018 1uUnjOG172XdBQ1fLe6AbslNjsHiTK-IaUpzImwkwSbc
lrw------- 1 ray 0 Июн 15 2018 1PhljWusfB-JWfKSu3xqzSzCOqztgDTEDWqfG3E2KioQ
...
Записи соответствуют данным из Google Drive, но файловая система видит их все как невалидные символические ссылки, за исключением подкаталога, который, в свою очередь, содержит невалидные символические ссылки.
ОБНОВЛЕНИЕ 2:
Возможно, мне нужно создать запись в /etc/fstab? Если да, то какая будет подходящей?
В отношении того, когда вы получили этот вывод от ls
:
lrw------- 1 ray 0 Янв 19 15:56 1IkBP3RVzCkMPO8UYI8LFyLo71rCOhbEirSMuS39GxUc
lrw------- 1 ray 0 Янв 5 10:06 1JkZJuIN4U-XwOLfKmYr3-0Y2KYQMQ_EmVrZPj1i1AMI
lrw------- 1 ray 0 Июн 15 2018 12TmyqxUuLFQIktoec0Pe2ygDVPVx9YsDfi6tS2hAXFc
drwx------ 1 ray 0 Июн 15 2018 1E3zpESlcc90ZmhjztC4HD22chifWHUkk/
lrw------- 1 ray 0 Июн 15 2018 1uUnjOG172XdBQ1fLe6AbslNjsHiTK-IaUpzImwkwSbc
lrw------- 1 ray 0 Июн 15 2018 1PhljWusfB-JWfKSu3xqzSzCOqztgDTEDWqfG3E2KioQ
На самом деле это имена файлов и каталогов Google Drive, и именно так Google управляет данными (полезно для версионирования файлов и наличия нескольких файлов с одним и тем же именем). Читаемые для человека имена – это просто метаданные, прикрепленные к каждому файлу. Как только вы находитесь в директории вашего Google Drive, вы можете использовать интерфейс gio
для просмотра этих читаемых имен файлов с помощью:
gio list -d
Это выводит то, что Gnome называет имя отображения
каждого файла.
Просто man gio
для других опций gio list
, таких как --long
, --hidden
и т.д.
В этой справочной странице вы также увидите другие команды gio для управления вашими облачными файлами из терминала. К сожалению, я еще не нашел или не придумал хороший подход к оборачиванию стандартных команд оболочки вокруг команд gio для более удобного использования (как, например, Google Drive File Stream
, который просто работает при доступе к файлам из терминала на Windows или macOS). Я обновлю этот ответ, если найду хорошее решение.
Сказав это, это все попытка просто использовать интегрированный интерфейс облачного диска Gnome, потому что его очень просто настроить, и он хорошо работает в графическом интерфейсе Nautilus. Но есть и альтернативы, такие как rclone и ocamlfuse, которые обе хорошо работают, но могут быть трудны в настройке, особенно в плане максимизации скорости.
Хмм, я понимаю, что вы имеете в виду.
Вы можете получить больше информации вот так:
Сначала найдите базовый URL для вашего Google Drive вот так:
BASE_URL=`gio mount -li | egrep '^Mount.*google-drive' | sed 's/.*> //'`
У меня это выглядит так: google-drive://ray@gmail.com/
.
Затем вы можете снова использовать gio
для перечисления свойств вот так:
$ gio list -a 'standard::display-name' "$BASE_URL"
1t1221oLkvviV7UXqBjXmWKipT_w 0 (ярлык) standard::display-name=Swifty14
1h332234_ZoCetVVCpwbdzoeh1_Y 0 (ярлык) standard::display-name=Holls 2016
Я имею в виду, что это все еще не красиво, но это дает вам результат! Это немного упрощает:
$ gio list -a 'standard::display-name' "$BASE_URL" | awk '{print $1 "\t" $4}' | sed 's/standard::display-name=//'
1t1221oLkvviV7UXqBjXmWKipT_w Swifty14
1h332234_ZoCetVVCpwbdzoeh1_Y Holls 2016
Раз вы можете использовать пользовательский интерфейс, почему бы не попробовать открыть ваш Google Drive и выбрать случайный файл, щелкнув по нему правой кнопкой мыши и перейдя к Свойствам, что покажет расположение родительской папки:
Эта информация может затем быть использована в терминале для доступа к ней из командной строки.
Ответ или решение
Чтобы получить доступ к смонтированным онлайн-аккаунтам, таким как Google Drive, через файловую систему в Ubuntu, можно воспользоваться интерфейсом командной строки и инструментами, предлагающими взаимодействие с файловыми системами, основанными на FUSE. Давайте рассмотрим процесс более подробно.
1. Подключение Google Drive через Online Accounts
Вы уже выполнили шаги по добавлению Google Drive в раздел "Online Accounts" (Онлайн-аккаунты). После этой настройки ваши данные должны быть доступны через интерфейс GNOME, однако доступ через командную строку требует дополнительных действий.
2. Проверка смонтированных дисков
Запустите следующую команду, чтобы проверить, смонтирован ли ваш Google Drive:
mount | grep gv
Вы увидите вывод, содержащий строки, подобные следующему:
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
Это подтверждает, что Google Drive смонтирован через систему GVFS (GNOME Virtual File System).
3. Доступ к Google Drive через командную строку
Для доступа к содержимому Google Drive используйте следующую команду для перехода в каталог, соответствующий вашему Google Drive:
cd /run/user/1000/gvfs/google-drive:host=gmail.com,user=butterworth.ray
Замените butterworth.ray
на ваш настоящий логин Google.
4. Понимание структуры файлов Google Drive
Обратите внимание, что файлы и каталоги могут отображаться как символьные ссылки (symlinks). Это связано с тем, как Google обрабатывает данные. Чтобы увидеть их «человеческие» имена (display names), вам нужно использовать инструменты, такие как gio
.
5. Получение списка файлов с помощью gio
Вы можете использовать gio
для доступа к файлам на Google Drive. Например, для того чтобы получить список всех файлов с их отображаемыми именами, выполните:
gio list -d .
Это также может включать дополнительные параметры, например:
gio list -a 'standard::display-name' "$BASE_URL"
6. Использование альтернативных инструментов
Если взаимодействие с Google Drive через gio
вам не подходит, можно рассмотреть использование сторонних инструментов, таких как rclone
или google-drive-ocamlfuse
. Эти инструменты могут предложить более удобные способы работы с файлами в командной строке.
- rclone: Очень мощный инструмент для управления файлами в облачных хранилищах.
- google-drive-ocamlfuse: Специализированный FUSE-файл для Google Drive.
Для работы этих инструментов вам может потребоваться их настройка, но они предлагают дополнительные возможности и более удобное взаимодействие.
7. Заключение
Таким образом, для доступа к смонтированным онлайн-аккаунтам, таким как Google Drive, через файловую систему в командной строке, вы можете использовать команду gio
для описания необходимых свойств файлов. Вы также можете исследовать опции, предоставляемые сторонними инструментами.
Если у вас есть конкретные вопросы или вам нужна помощь в настройке, не стесняйтесь спрашивать.