web-dev-qa-db-ja.com

マウントなしのワークステーション間のシンボリックリンク

ネットワーク共有を「マウント」することなく、あるLinuxワークステーション上のファイルから別のLinuxワークステーションへのシンボリックリンクを作成しようとしています。これが私がやろうとしていることですが、それを機能させることができません。

ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov
8
speedyrazor

次のことはできません。

シンボリックリンクは単に追加の inode (ファイルを指す構造)であり、このiノードは、特に、deviceIdinode pointerで構成されます。 deviceIdは、実際には/devディレクトリ内のデバイス特殊ファイルを指し、inode pointerはそのデバイス上のブロックを指します。

10.0.1.103のネットワーク上の場所はdeviceIdを持たず、また持つことができません(/devにはありません)。そのため、ネットワーク上の場所へのシンボリックリンクを作成することはできません。

一方、マウントされたネットワーク共有にはdeviceIdがあり、マウントされた場所へのシンボリックリンクを作成できます。

14
garethTheRed

Windowsには特別な構文_\\MACHINE\DIRECTORY…\FILE_があり、 [〜#〜] smb [〜#〜] プロトコルを介して_\DIRECTORY…\FILE_と呼ばれるマシンの_\\MACHINE_にあるファイルを意味します。これはオペレーティングシステムに組み込まれており、1つのネットワークプロトコルに特化しています。

Linuxには、 マウント の概念に基づいた柔軟なファイルシステムがあります。ファイルシステムは既存のディレクトリに接続され、管理者はディレクトリ階層の配置方法を選択できます。背景については、 Linuxでデバイスをマウントするとはどういう意味ですか?Linuxのファイルシステムが単一のディレクトリツリーとして設計されているのはなぜですか? および 典型的なLinuxシステムにはどのようなマウントポイントがありますか? 。 Linuxは、 [〜#〜] nfs [〜#〜] 、SMB、 [〜#〜] sshfs [〜#を含む、多くのネットワークファイルシステム(つまり、あるマシンが別のマシン上のファイルにアクセスできるようにするファイルシステム)をサポートしています。 〜] など.

NFSはLinuxのネイティブネットワークファイルシステムと見なすことができます。SMBはWindowsのファイルです。ただし、Linuxはデフォルトでファイルをエクスポートしません。NFSサーバーをインストールする必要があります。NFSサーバーはすべてのLinuxディストリビューションですが、多少の設定が必要です(エクスポートするディレクトリをファイル _/etc/exports_ に登録する必要があります)。さらに、NFSは、ローカルネットワークの攻撃者がそうしなかった、より穏やかな時代のものです懸念事項であり、セキュリティを確保するには、ファイアウォールに関する多少の知識が必要です。これは、この回答の範囲を超えています。リモートマシンからディレクトリ_/some/where_を場所_foo.example.com_で利用できるようにするには_/local/dir_(これは既存のディレクトリでなければなりません)、リモートマシンによってエクスポートされていると想定して、次のコマンドをrootとして実行します。

_mount foo.example.com:/some/where /local/dir
_

セットアップなしでリモートファイルにアクセスする簡単な方法は、SSHFSを使用することです。必要なのは、リモートマシンにSSHサーバーをインストールし、ローカルマシンにsshfsパッケージをインストールすることだけです。また、キーを生成する必要があります( パスワードなしのログインを機能させる方法 を参照)。ただし、パスワードを入力する必要がない場合はhaveを使用しないでください。時間。 SSHは、リモートマシンでコマンドを実行する場合にも役立ちます。リモートマシンのディレクトリ_/some/where_を_foo.example.com_(既存のディレクトリである必要があります)の場所でSSHFSを介して使用できるようにするには、(通常のユーザーとして)次のコマンドを実行します。

_/local/dir_

Linuxは、 Samba ソフトウェアを介してSMBプロトコル(Windowsマシンと通信するか、他のLinuxマシンと通信しますが、他のプロトコルよりも統合性が低い)のサーバーまたはクライアントです。 。

automounterautofsなど)を設定して、特定のディレクトリにアクセスすると、一部のリモートマシンからディレクトリが自動的にマウントされるようにすることができます。たとえば、一般的な構成では、autofsファイルシステムがディレクトリ_sshfs foo.example.com:/some/where /local/dir _にマウントされ、_/net_にアクセスすると、リモートディレクトリ_/net/MACHINE/DIRECTORY_が_/DIRECTORY_からNFS経由でマウントされます。その場所(および一定の非アクティブ期間が経過するとアンマウントされます)。もちろん、リモートマシンにはNFSサーバーがセットアップされていて、その接続を許可している必要があります。

SSHFSを使用して自動マウンターをセットアップすることが可能です。クイックチュートリアルについては、 LinuxでFuseとAutofsを使用した完全にシームレスなSSHFS および Autofsとsshfs-完璧なカップル を参照してください。一言で言えば:

  1. autofssshfsをインストールします。
  2. 次の行を_/net/MACHINE_に追加します。

    _/etc/auto.master_

    1000の2つの出現箇所をユーザーIDとグループIDで置き換えます(これらの値を表示するには、_/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost _および_id -u_を実行します)。ディレクトリ_id -g_を作成します。

  3. 次のような行を含むファイル_/mnt/sshfs_を作成します。

    _/etc/auto.sshfs_

    ここで、_machinename -fstype=Fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#machinename.example.com\: _はリモートマシンのホスト名(またはIPアドレス)であり、machinenameはパス_machinename.example.com_を介してローカルでアクセスする名前です。

Autosshfs は、より便利なautofs + sshfsセットアップを提供します。

最後に、シンボリックパーツについて:存在しないパスへのシンボリックリンクを作成できます。シンボリックリンクは2番目の引数なので、次のようなものが必要になります

_/mnt/sshfs/machinename_

_ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov _に_/sharedFolder_をマウントするには、手動でまたは自動的に_10.0.1.103_を_/net/10.0.1.103/sharedFolder_にマウントする必要があります。

それは価値があるもののために...

私は、Raphael S. Carvalhoの GhostFS に基づく lionfs と呼ばれる小さなツールで作業しました。目標は [〜#〜] uri [〜#〜] を指すシンボリックリンクを許可することです。これはかなり不完全で、多くの問題があり、現在はHTTPのみをサポートしています。 Fuse (ユーザースペースのファイルシステム)は、背景の処理に使用されます。