spe*_*zor 10 linux remote symlink ln
我正在尝试在一个 linux 工作站上创建一个文件到另一个 linux 工作站的符号链接,而不必“挂载”任何网络共享。这是我正在尝试做的,但无法使其正常工作。
ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov
Run Code Online (Sandbox Code Playgroud)
Windows 有一种特殊的语法,表示位于通过SMB协议调用的机器上的文件。它内置于操作系统中,专门用于一种网络协议。\\MACHINE\DIRECTORY…\FILE
\DIRECTORY…\FILE
\\MACHINE
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
Run Code Online (Sandbox Code Playgroud)
无需设置即可访问远程文件的简单方法是通过 SSHFS。您只需要在远程机器上安装一个 SSH 服务器,并sshfs
在本地机器上安装软件包。你也应该生成一个密钥(请参阅如何使密码的登录工作),但你不要有这样做,如果你不介意每次都输入密码。SSH 还可用于在远程机器上运行命令。要通过 SSHFS/some/where
使远程机器上的目录foo.example.com
在该位置/local/dir
(必须是现有目录)可用,请运行以下命令(以您的普通用户身份):
sshfs foo.example.com:/some/where /local/dir
Run Code Online (Sandbox Code Playgroud)
Linux 可以通过Samba软件作为 SMB 协议的服务器或客户端(与 Windows 机器通信,甚至与其他 Linux 机器通信,尽管它的集成不如其他协议好)。
您可以设置自动挂载程序(例如autofs
),以便访问某些目录会自动从某个远程机器挂载目录。例如,一个常见的配置安排将 autofs 文件系统挂载在目录上/net
,访问会导致远程目录from在该位置通过 NFS 挂载(并且在一段时间不活动后将被卸载)。远程机器当然必须设置一个 NFS 服务器并允许该连接。/net/MACHINE/DIRECTORY
/DIRECTORY
/net/MACHINE
可以使用 SSHFS 设置自动挂载程序。请参阅Linux 下使用 Fuse 和 Autofs以及Autofs 和 sshfs 的完全无缝 SSHFS——快速教程的完美组合;简而言之:
autofs
和sshfs
.将以下行添加到/etc/auto.master
:
/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
Run Code Online (Sandbox Code Playgroud)
用您的用户 ID 和组 ID 替换两次出现的 1000(运行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\:
Run Code Online (Sandbox Code Playgroud)
其中machinename.example.com
是远程机器的主机名(或 IP 地址),machinename
是您希望通过路径在本地访问它的名称/mnt/sshfs/machinename
。
Autosshfs提供了更方便的 autofs+sshfs 设置。
最后,关于符号部分:您可以创建一个指向不存在路径的符号链接。符号链接是第二个参数,所以你需要像
ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov
Run Code Online (Sandbox Code Playgroud)
您需要手动或自动安排/sharedFolder
from10.0.1.103
安装在/net/10.0.1.103/sharedFolder
.