É possível montar o Google Drive no vifm usando rclone?

É possível montar o Google Drive no vifm usando rclone?

Posso montar meu Google Drive usando rclone mount gdrive: localfolder. Também sei como montar automaticamente um sistema de arquivos remoto por meio sshfsdo vifm. Mas é possível montar rcloneuma unidade na nuvem vifmautomaticamente? Eu tentei adicionar a seguinte linha em vifmrc:

filetype *.drive FUSE_MOUNT2|rclone %PARAM %DESTINATION_DIR

e crie um arquivo chamado google.drivecom a seguinte linha:

mount gdrive:

Quando tento abrir o arquivo google.drive, o vifm exibe a mensagem de tentativa de montagem e fica pendurado para sempre.

Para ser mais geral, existe uma maneira genérica no vifm de lidar com todos os tipos de programas de montagem remota?

Responder1

Eu tenho um problema semelhante e me deparei com esta pergunta sem resposta. Aqui está minha solução.

O comando rclone mountpor padrão permanece em execução em primeiro plano enquanto o controle remoto é montado, imprimindo várias mensagens no stdout. Isso é diferente de, digamos sshfs, que pede as credenciais em primeiro plano e finaliza. Para vifmfinalizar o processo de montagem e aceitar novas entradas do usuário, rclone mounté necessário de alguma forma ser daemonizado. Isso pode ser feito via --daemonflag, porém neste caso acontece que ele vifmsalta para a pasta que acabou de criar e exibe seu conteúdo antes que o processo de montagem seja finalizado. Então, você obterá o que parece ser uma pasta vazia. Pressionar CTRL-L(talvez várias vezes) atualiza a listagem de arquivos e exibe o conteúdo adequado. No entanto, é um pouco irritante.

A outra abordagem possível é escrever um script wrapper que daemonize rclone mounte aguarde até que o processo de montagem seja concluído. A espera pode ser conseguida, por exemplo, com inotifywaitou apenas com sleep.

O script wrapper pode ser parecido com isto:

#!/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

(Não testei o suficiente, então tome cuidado) e vifmrcvocê pode colocar o seguinte:

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

Observe que isso %DESTINATION_DIRvem antes %PARAMSaqui (ao contrário do exemplo da pergunta) porque é isso que o script wrapper fornecido espera.

Infelizmente, não sei a resposta para a parte mais geral da sua pergunta.

informação relacionada