Можно ли смонтировать Google Drive в vifm с помощью rclone?

Можно ли смонтировать Google Drive в vifm с помощью rclone?

Я могу смонтировать свой Google Drive с помощью rclone mount gdrive: localfolder. Я также знаю, как автоматически смонтировать удаленную файловую систему через sshfsв vifm. Но возможно ли использовать rcloneдля автоматического монтирования облачного диска в vifm? Я пробовал добавить следующую строку в vifmrc:

filetype *.drive FUSE_MOUNT2|rclone %PARAM %DESTINATION_DIR

и создайте файл с именем google.driveи следующей строкой в ​​нем:

mount gdrive:

Когда я пытаюсь открыть файл google.drive, vifm выводит сообщение о попытке монтирования и затем зависает навсегда.

Если говорить более обобщенно, существует ли в vifm универсальный способ обработки всех видов программ удаленного монтирования?

решение1

У меня похожая проблема, и я наткнулся на этот вопрос без ответа. Вот мое решение.

Команда rclone mountпо умолчанию остается запущенной на переднем плане, пока монтируется удаленный компьютер, выводя различные сообщения на stdout. Это отличается от, скажем, sshfs, которая запрашивает учетные данные на переднем плане и завершает работу. Чтобы vifmзавершить процесс монтирования и принять новый пользовательский ввод, rclone mountнеобходимо каким-то образом быть демонизированным. Это можно сделать с помощью --daemonфлага, однако в этом случае оказывается, что vifmпереходит в папку, которую только что создал, и отображает ее содержимое до завершения процесса монтирования. Таким образом, вы получите то, что кажется пустой папкой. Нажатие CTRL-L(возможно, несколько раз) обновляет список файлов и отображает правильное содержимое. Однако это немного раздражает.

Другой возможный подход — написать скрипт-обертку, который демонизируется rclone mountи ждет, пока процесс монтирования не будет завершен. Ожидание может быть достигнуто, например, с помощью inotifywaitили просто с помощью sleep.

Скрипт-оболочка может выглядеть примерно так:

#!/usr/bin/env bash

dest=$1; shift
nohup rclone mount $* "$dest" &> /tmp/rclone_gdrive.log &
inotifywait -me open "$(dirname "$dest")" | while read line; do
    echo "$line" | grep -q "$(basename "$dest")" && break
done
# or sleep 1

(Я не проверял его достаточно хорошо, так что будьте осторожны) и vifmrcвы можете поместить туда следующее:

" Rclone mount
filetype *.drive
       \ {Mount google drive with rclone}
       \ FUSE_MOUNT2|<your wrapper script name> %DESTINATION_DIR %PARAM

Обратите внимание, что это %DESTINATION_DIRидет раньше %PARAMS(в отличие от примера в вопросе), потому что именно этого ожидает предоставленный скрипт-оболочка.

К сожалению, я не знаю ответа на более общую часть вашего вопроса.

Связанный контент