我正在尝试创建一个从一台 Linux 工作站到另一台 Linux 工作站的文件的符号链接,而无需“安装”任何网络共享。以下是我想做的事情,但无法让它工作。
ln -s /link/to/local/file.mov //10.0.1.103/sharedFolder/symlinkFile.mov
答案1
你不能:
符号链接只是一个额外的索引节点(指向文件的结构),该 inode 由 adeviceId
和 an组成inode pointer
。有效deviceId
地指向/dev
目录中的设备特殊文件,并且inode pointer
指向该设备上的块。
您的网络位置10.0.1.103
没有也不可能有deviceId
(它不在 中/dev
),因此您不可能有指向网络位置的符号链接。
另一方面,安装的网络共享将有一个 ,deviceId
这就是为什么您可以创建指向安装位置的符号链接。
答案2
Windows 有一个特殊的语法,意味着位于机器上的文件通过\\MACHINE\DIRECTORY…\FILE
\DIRECTORY…\FILE
\\MACHINE
中小企业协议。它内置于操作系统中并专门针对一种网络协议。
Linux 有一个基于以下概念的灵活文件系统安装。文件系统附加到现有目录,管理员可以选择如何安排目录层次结构。有关更多背景信息,请阅读Linux 中挂载设备是什么意思?,为什么 Linux 的文件系统被设计为单一目录树?和典型的 Linux 系统上存在哪些挂载点?。 Linux 支持许多网络文件系统(即允许一台机器访问另一台机器上的文件的文件系统),包括网络文件系统, 中小企业,SSHFS, ETC。
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
在本地计算机上安装软件包。您还应该生成一个密钥(请参阅如何实现无密码登录),虽然你不有如果您不介意每次都输入密码,请执行此操作。 SSH 对于在远程计算机上运行命令也很有用。要通过 SSHFS 使/some/where
远程计算机中的目录foo.example.com
在该位置/local/dir
(必须是现有目录)可用,请运行以下命令(以常用用户身份):
sshfs foo.example.com:/some/where /local/dir
Linux 可以通过以下方式成为 SMB 协议的服务器或客户端(与 Windows 机器通信,甚至与其他 Linux 机器通信,尽管它的集成程度不如其他协议)桑巴舞软件。
您可以设置一个自动安装器(例如autofs
),以便访问某些目录会自动从某些远程计算机挂载目录。例如,常见配置安排 autofs 文件系统挂载在 目录 上/net
,并且访问会导致远程目录通过 NFS 挂载在该位置(并且在一段时间不活动后将被卸载)。当然,远程计算机必须设置 NFS 服务器并允许该连接。/net/MACHINE/DIRECTORY
/DIRECTORY
/net/MACHINE
可以使用 SSHFS 设置自动安装程序。看Linux 下使用 Fuse 和 Autofs 实现完全无缝的 SSHFS和Autofs 和 sshfs – 完美组合快速教程;简而言之:
- 安装
autofs
并sshfs
。 将以下行添加到
/etc/auto.master
:/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
将两次出现的 1000 替换为您的用户 ID 和组 ID(运行
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\:
其中
machinename.example.com
是远程计算机的主机名(或 IP 地址),machinename
是您想要通过路径在本地访问它的名称/mnt/sshfs/machinename
。
自动sshfs提供更方便的autofs+sshfs设置。
最后,关于符号部分:您可以创建指向不存在路径的符号链接。符号链接是第二个参数,所以你需要类似的东西
ln -s /net/10.0.1.103/sharedFolder/symlinkFile.mov /link/to/local/file.mov
您需要手动或自动安排将/sharedFolder
from10.0.1.103
安装在/net/10.0.1.103/sharedFolder
。