ネットワーク共有を「マウント」することなく、あるLinuxワークステーション上のファイルから別のLinuxワークステーションへのシンボリックリンクを作成しようとしています。これが私がやろうとしていることですが、それを機能させることができません。
ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov
次のことはできません。
シンボリックリンクは単に追加の inode (ファイルを指す構造)であり、このiノードは、特に、deviceId
とinode pointer
で構成されます。 deviceId
は、実際には/dev
ディレクトリ内のデバイス特殊ファイルを指し、inode pointer
はそのデバイス上のブロックを指します。
10.0.1.103
のネットワーク上の場所はdeviceId
を持たず、また持つことができません(/dev
にはありません)。そのため、ネットワーク上の場所へのシンボリックリンクを作成することはできません。
一方、マウントされたネットワーク共有にはdeviceId
があり、マウントされた場所へのシンボリックリンクを作成できます。
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マシンと通信しますが、他のプロトコルよりも統合性が低い)のサーバーまたはクライアントです。 。
automounter (autofs
など)を設定して、特定のディレクトリにアクセスすると、一部のリモートマシンからディレクトリが自動的にマウントされるようにすることができます。たとえば、一般的な構成では、autofsファイルシステムがディレクトリ_sshfs foo.example.com:/some/where /local/dir
_にマウントされ、_/net
_にアクセスすると、リモートディレクトリ_/net/MACHINE/DIRECTORY
_が_/DIRECTORY
_からNFS経由でマウントされます。その場所(および一定の非アクティブ期間が経過するとアンマウントされます)。もちろん、リモートマシンにはNFSサーバーがセットアップされていて、その接続を許可している必要があります。
SSHFSを使用して自動マウンターをセットアップすることが可能です。クイックチュートリアルについては、 LinuxでFuseとAutofsを使用した完全にシームレスなSSHFS および Autofsとsshfs-完璧なカップル を参照してください。一言で言えば:
autofs
とsshfs
をインストールします。次の行を_/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
_を作成します。
次のような行を含むファイル_/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 (ユーザースペースのファイルシステム)は、背景の処理に使用されます。