Ist es möglich, Google Drive mit Rclone in VIFM zu mounten?

Ist es möglich, Google Drive mit Rclone in VIFM zu mounten?

Ich kann mein Google Drive mithilfe von mounten rclone mount gdrive: localfolder. Ich weiß auch, wie man ein Remote-Dateisystem automatisch mithilfe sshfsvon mountet vifm. Aber ist es möglich, rclonemithilfe von ein Cloud-Laufwerk vifmautomatisch mithilfe von mounten? Ich habe versucht, die folgende Zeile hinzuzufügen vifmrc:

filetype *.drive FUSE_MOUNT2|rclone %PARAM %DESTINATION_DIR

und erstellen Sie eine Datei google.drivemit dem Namen, die die folgende Zeile enthält:

mount gdrive:

Wenn ich versuche, die Datei zu öffnen google.drive, zeigt vifm die Meldung an, dass ein Mount-Versuch unternommen wird, und bleibt dann für immer hängen.

Um allgemeiner zu sein: Gibt es in vifm eine generische Möglichkeit, alle Arten von Remote-Mounting-Programmen zu handhaben?

Antwort1

Ich habe ein ähnliches Problem und bin auf diese unbeantwortete Frage gestoßen. Hier ist meine Lösung.

Der Befehl rclone mountläuft standardmäßig im Vordergrund, während der Remote-Computer gemountet wird, und gibt verschiedene Meldungen auf stdout aus. Dies unterscheidet sich beispielsweise von , sshfsdas im Vordergrund nach den Anmeldeinformationen fragt und den Vorgang beendet. Um vifmden Mount-Vorgang abzuschließen und neue Benutzereingaben zu akzeptieren, rclone mountmuss irgendwie ein Daemon gestartet werden. Dies kann über ein Flag erfolgen --daemon, in diesem Fall springt es jedoch vifmzu dem gerade erstellten Ordner und zeigt dessen Inhalt an, bevor der Mount-Vorgang abgeschlossen ist. Sie erhalten also einen scheinbar leeren Ordner. Durch Drücken von CTRL-L(möglicherweise mehrmals) wird die Dateiliste aktualisiert und der richtige Inhalt angezeigt. Dies ist jedoch etwas irritierend.

Der andere mögliche Ansatz besteht darin, ein Wrapper-Skript zu schreiben, das als Daemon ausgeführt wird rclone mountund wartet, bis der Mount-Prozess abgeschlossen ist. Das Warten kann beispielsweise mit inotifywaitoder nur mit erreicht werden sleep.

Das Wrapper-Skript kann ungefähr so ​​aussehen:

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

(Ich habe es nicht ausreichend getestet, also seien Sie vorsichtig) und vifmrcSie können Folgendes einfügen:

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

Beachten Sie, dass hier (anders als im Beispiel in der Frage) %DESTINATION_DIR„vorher“ steht %PARAMS, da das bereitgestellte Wrapper-Skript dies erwartet.

Auf den allgemeineren Teil Ihrer Frage kenne ich die Antwort leider nicht.

verwandte Informationen