Posso montar meu Google Drive usando rclone mount gdrive: localfolder
. Também sei como montar automaticamente um sistema de arquivos remoto por meio sshfs
do vifm
. Mas é possível montar rclone
uma unidade na nuvem vifm
automaticamente? Eu tentei adicionar a seguinte linha em vifmrc
:
filetype *.drive FUSE_MOUNT2|rclone %PARAM %DESTINATION_DIR
e crie um arquivo chamado google.drive
com 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 mount
por 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 vifm
finalizar 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 --daemon
flag, porém neste caso acontece que ele vifm
salta 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 mount
e aguarde até que o processo de montagem seja concluído. A espera pode ser conseguida, por exemplo, com inotifywait
ou 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 vifmrc
você 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_DIR
vem antes %PARAMS
aqui (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.