リモートホスト上の便利なファイルアクセス

Habréでは、多くの開発者がリモートホスト上のファイルを操作します。 IDE、デバッガー、必要なものはすべてローカルマシンで起動され、ファイル自体はサーバーに配置され、定期的にバックアップ、自動ビルド、テストなどが行われます。 非常に便利な作業オプション。 はい、私は自分で使用します。

不便な唯一の問題は、ファイルがまだ別のコンピューターにあり、それらへのアクセスが「自分の」ファイルほど単純で透過的ではないことです。

カットの下-そのようなアクセスを可能な限り便利にする方法。 必要なときに自動的に起動するように、そして最も重要なこと-必要でないときに起動しないように!



ファイルへのリモートアクセスのすべてのオプション:SSHFS、NFS、およびWindows共有-SMB(夜も忘れずに)、私は次の理由でSSHFSを選択しました。

-セットアップの最大の容易さ

-ほとんどすべての場所で機能し、サーバーにトリッキーなコンポーネントをインストールする必要はありません

-最大のセキュリティ:クライアント、サーバー、および送信データ。



Ubuntuへのインストールは可能な限り簡単です。

$ sudo apt-get install sshfs





これにより、fuse-utilsとlibfuse2が依存関係として自動的にインストールされます。

ヒューズグループも作成する必要があり、ヒューズモジュールのロードはmodconf.dに書き込まれます。ただし、ディストリビューションによって異なります。手動で確認して修正する必要があります。

Windowsユーザーの場合、 Dokan SSHFSのサムライ開発があります。 Dokan lib、次にdokan sshfsをダウンロードします。 このことは機能しますが、すぐに言います-私は実際にそれを使用しませんでした、おそらく長期使用ではいくつかの問題が出てきます。



これはすべてコンソール呼び出しで簡単にマウントできます:

$ sshfs username@server.ru:/home/user mount-point/







しかし、これは最も便利な使用例ではありません。コンソールで毎回フォルダーをマウントする必要があります。もちろん、これをすべて/ ets / fstabに書き込むことができますが、より良いオプション-Automount FUSEがあります。 リポジトリから再度置くことができます:

$ sudo apt-get install afuse







その後、必要なパラメーターを指定して実行するだけで十分です。

afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs/





その後、〜/ sshfs /フォルダー内のファイルとフォルダーへのすべてのアクセスにより、対応するフォルダーが〜/ sshfs /にマウントされます。 その後、呼び出しはリモートホストにさらに進みます。 私たちにとって最も重要なこと- プログラムから目的のフォルダに初めてアクセスすると、すべてが完全に透過的に行われます。

たとえば、 ls ~/sshfs/tmpvar@foobarhost.com



最初に少しls ~/sshfs/tmpvar@foobarhost.com



、次にルートフォルダー/サーバーfoobarhost.comの内容を表示します。 もちろん、サーバーtmpvar@foobarhost.com:22に完全なアドレスとアクセスパラメーターを書き込むことは必ずしも便利ではないため、sshアクセス設定に転送します。



 cat〜/ .ssh / config 
ホストファイルストレージ
	ホスト名filestorage.server.ru
	ポート2222#サーバーで非標準ポートを使用できます
	 HostKeyAlias fs 
	ユーザー管理者




これで、sshとsshfsの両方で短縮名fsを使用してサーバーにアクセスできます。

> ssh fs#サーバーに移動-追加の設定は不要

> ls〜/ sshfs / fs#サーバーのルートフォルダーを確認します。



初めてフォルダーをマウントする場合、指定したサーバーにアクセスするためのパスワード入力ウィンドウが表示されます。 接続が確立されると、ウィンドウが表示されなくなります。 既に理解したように、キーでサーバーに認証を行うことで、ウィンドウに出ないように簡単に伝えることができます。



それで 、私たちは何を得ましたか?

そして、私たちはクールなものを得ました-透過的なSSHFSマウントされたフォルダーをオンデマンドで これは次のことを意味します。

-取り付けは必要なときに自動的に実行されます 。 たとえば、午前中にラップトップの電源を入れ、現在のプロジェクトでEclipseを開きます。 起動するとすぐに、サーバーから古いファイルをすぐに開きますが、フォルダーはマウントされ、すべての隠されたメカニズムが発生します。 しかし、ユーザーとして、私はもはやそれに興味がありません-私はプログラムを立ち上げて、そこで働きます。

-しかし、もっと面白いことがあります: マウントは、必要でないときに開始されません! たとえば、インターネットカフェや国のgprsモデムに座っているとします。 ラップトップを起動するときに、作業中のサーバーのすべてのフォルダーを接続する必要が本当にありますか? その結果、ダウンロードは30分続き、大量のエラーが表示されましたか? これは、/ etc / fstabの設定を処方することに対する主な利点です-必要でない場合、システムは気にしません。 :)



しかし、人はすぐにすべての善に慣れます。 私はこのシステムから正確に2週間引きずり出した-そして、私はafuseを実行するために気品を忘れ始めた:) その結果、私のためにこれを行う小さなスクリプトを作成する必要がありました。

  $ cat〜/ bin / afuse.sh 
 #!/ bin / sh

 [!  -z `ls -d / tmp / afuse- * 2> / dev / null`]; それから 
   echo 'Afuseは既に実行中です'; 
他に
   / usr / bin / afuse -o mount_template = "sshfs%r:/%m" -o unmount_template = "fusermount -u -z%m"〜/ sshfs /
 fi


GNOMEの自動実行に追加しました。



これでシステムは完璧になりました:)



All Articles