Ich kann mein Google Drive mithilfe von mounten rclone mount gdrive: localfolder
. Ich weiß auch, wie man ein Remote-Dateisystem automatisch mithilfe sshfs
von mountet vifm
. Aber ist es möglich, rclone
mithilfe von ein Cloud-Laufwerk vifm
automatisch 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.drive
mit 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 mount
läuft standardmäßig im Vordergrund, während der Remote-Computer gemountet wird, und gibt verschiedene Meldungen auf stdout aus. Dies unterscheidet sich beispielsweise von , sshfs
das im Vordergrund nach den Anmeldeinformationen fragt und den Vorgang beendet. Um vifm
den Mount-Vorgang abzuschließen und neue Benutzereingaben zu akzeptieren, rclone mount
muss irgendwie ein Daemon gestartet werden. Dies kann über ein Flag erfolgen --daemon
, in diesem Fall springt es jedoch vifm
zu 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 mount
und wartet, bis der Mount-Prozess abgeschlossen ist. Das Warten kann beispielsweise mit inotifywait
oder 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 vifmrc
Sie 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.