LoginSignup
0
1

More than 3 years have passed since last update.

Ubuntuのデスクトップ環境でリモートサーバをマウントする

Posted at

プログラミングと直接的に関係はないのですが。

Ubuntuというよりもgvfsだったりnautilusだったり、上物のソフトウェアの話かと思います。
ただ僕が使ってるマシンがUbuntuというだけです。

Ubuntuのデフォルトのファイラーはnautilusですが、これssh(sftp)でリモートサーバをマウントしてあたかもローカルにあるのと同様にファイラーでアクセスできるんですね。
で、そうすると何がうれしいかというと、vscodeみたいなIDEでも特別な設定なしにリモートのリソースにアクセスできるわけですよ。

普通のファイルもファイラーからのCtrl+C/Ctrl+Vでローカル/リモート間でコピペもできますし。
なんならターミナルでも透過的に操作ができる。

これ、実態はgvfsの機能ですかね。nautilusはあくまでもgvfsの機能を叩いてるんだと思います。
ちゃんと調べてないです。

さて、gvfsの機能であるという所まで辿りついたので、次はコマンドラインでマウントできると楽なのではないかというところになっていきます。

コマンドラインでマウントするには以下のコマンドを発行します。

gio mount sftp://USER@example.com/

もちろんユーザー名とホスト名は適宜変更してくださいね。

こうしてマウントするとnautilusに左側にもマウントされた項目が表示されます。
便利だ。

コマンドラインで書けたら次は自動ログインしたくなるでしょう?なりません?
僕はしたかったんですが、そこでちょっとハマったので記事を書いておこうと思った次第です。
ちなみに毎日ルーターの再起動してるために毎日接続が切れるので、接続切れた後に再接続しておいて欲しかったのが動機です。

#!/bin/bash

if [ -z $DBUS_SESSION_BUS_ADDRESS ]; then
    DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
fi

export DBUS_SESSION_BUS_ADDRESS

for url in \
    'sftp://USER@example.com/' \
    'sftp://USER@example.com/' \
; do
    (gio mount "${url}") > /dev/null 2>&1 &
done

こんな感じにDBUS_SESSION_BUS_ADDRESSが必要となるようです。
で、cronから実行すると環境変数が定義されておらずマウント出来ない。
ちなみに1000となってるところは多分uidなので適宜自分のuidにしてください。

それでは良いLinuxライフを。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1