Puedo montar mi Google Drive usando rclone mount gdrive: localfolder
. También sé cómo montar automáticamente un sistema de archivos remoto a través sshfs
de vifm
. Pero, ¿es posible utilizarlo rclone
para montar una unidad en la nube vifm
automáticamente? Intenté agregar la siguiente línea en vifmrc
:
filetype *.drive FUSE_MOUNT2|rclone %PARAM %DESTINATION_DIR
y cree un archivo llamado google.drive
con la siguiente línea:
mount gdrive:
Cuando intento abrir el archivo google.drive
, vifm muestra el mensaje de intentar montarlo y luego se queda ahí para siempre.
Para ser más generales, ¿existe una forma genérica en vifm de manejar todo tipo de programas de montaje remoto?
Respuesta1
Tengo un problema similar y me topé con esta pregunta sin respuesta. Aquí está mi solución.
De forma predeterminada, el comando rclone mount
permanece ejecutándose en primer plano mientras el control remoto está montado, imprimiendo varios mensajes en la salida estándar. Esto es diferente de, digamos sshfs
, que pide las credenciales en primer plano y termina. Para vifm
finalizar el proceso de montaje y aceptar nuevas entradas de usuario, rclone mount
es necesario demonizar de alguna manera. Se puede hacer mediante --daemon
bandera, sin embargo en este caso resulta que vifm
salta a la carpeta que acaba de crear y muestra su contenido antes de que finalice el proceso de montaje. Entonces obtendrás lo que parece ser una carpeta vacía. Al presionar CTRL-L
(tal vez varias veces) se actualiza la lista de archivos y se muestra el contenido adecuado. Sin embargo, es un poco irritante.
El otro enfoque posible es escribir un script contenedor que demonice rclone mount
y espere hasta que finalice el proceso de montaje. La espera se puede lograr, por ejemplo, con inotifywait
o simplemente con sleep
.
El script contenedor puede verse así:
#!/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
(No lo he probado lo suficiente, así que tengan cuidado) y en vifmrc
usted puede colocar lo siguiente:
" Rclone mount
filetype *.drive
\ {Mount google drive with rclone}
\ FUSE_MOUNT2|<your wrapper script name> %DESTINATION_DIR %PARAM
Tenga en cuenta que esto %DESTINATION_DIR
va antes %PARAMS
aquí (a diferencia del ejemplo de la pregunta) porque eso es lo que espera el script contenedor proporcionado.
Lamentablemente, no sé la respuesta a la parte más general de su pregunta.