我有 2 个具有类似目录结构的 Ubuntu Linux 机器,LX02 和 LX04。当我从 LX02 上的终端 ssh 到 LX04 并转到我的主脚本目录 /root/sbin 时,我看到的子目录集与从 LX04 上的终端会话转到相同目录时看到的子目录集不同。为什么?
细节
两台机器都有一个 /0 目录,其中包含每个远程主机的安装点目录,如下所示...
/0/LX02
/0/LX04
/etc/fstab 包含将远程主机的根 (/) 目录挂载到这些目录的条目。有一个“挂载绑定”条目用于挂载本地 (/) 目录,从而避免在脚本中对本地主机进行特殊编码。
/root/sbin 是每台计算机上 /usr/local/sbin 的符号链接。
LX02 上的本地 /root/sbin 目录看起来像...
root@LX02:/ cd /root/sbin
root@LX02:~/sbin ls -l | grep '^d'
drwxr-x--- 2 root root 4096 2011-07-16 00:49 Archives-sbin-20110825
drwxr-x--- 2 root root 4096 2010-07-28 08:13 lst
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Misc
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Slates
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Tomboy
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Ubuntu_8.04
drwxr-x--- 2 root root 4096 2010-07-28 08:13 www
drwxr-xr-x 2 root root 4096 2012-09-27 12:48 zim
从 LX02 终端会话转到 /0/LX04/root/sbin 会导致...
root@LX02:/0/LX04/root/sbin cd /0/LX04/root/sbin
root@LX02:/0/LX04/root/sbin ls -l | grep '^d'
drwxr-x--- 2 root root 4096 2011-07-16 00:49 Archives-sbin-20110825
drwxr-x--- 2 root root 4096 2010-07-28 08:13 lst
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Misc
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Slates
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Tomboy
drwxr-xr-x 2 root root 4096 2012-04-11 09:28 Ubuntu_8.04
drwxr-x--- 2 root root 4096 2010-07-28 08:13 www
drwxr-xr-x 2 root root 4096 2012-09-27 12:48 zim
然而,LX04 上的 /root/sbin 目录实际上看起来像......
root@LX04:/ cd /root/sbin
root@LX04:~/sbin ls -l | grep '^d'
drwx------ 4 root root 12288 2011-12-23 03:23 Archives
drwx------ 2 root root 4096 2011-07-16 00:49 Archives-sbin-20110825
drwxr-xr-x 3 root root 4096 2012-11-14 00:22 Examples
drwxr-x--- 2 root root 4096 2011-04-29 13:50 fnc
drwxr-x--- 2 root root 4096 2011-05-19 15:00 lst
drwxr-xr-x 3 root root 4096 2012-10-28 10:01 Synergy
drwxr-x--- 2 root root 4096 2011-03-10 20:54 tmp
drwxr-x--- 2 root root 4096 2011-03-10 20:54 www
这里发生了什么事?
答案1
如果我正确理解你的设置,/root/sbin
在 LX04 上是一个到/usr/local/sbin
.因此,/0/LX04/root/sbin
在作为 SSHFS 文件系统一部分的 LX02 上,有一个指向/usr/local/sbin
.当您使用 LX02 时,目录/0/LX04/root/sbin
位于/usr/local/sbin
,这就是您看到的内容。既然您在 LX02 上,您当然会看到 LX02 /usr/local/sbin
(也可以通过 访问/root/sbin
)。
符号链接是纯文本的,它们不携带您认为它们应该针对的文件系统的任何信息。
如果您想/0/LX04/root/sbin
指向/usr/local/sbin
LX04,请将其设为符号 to /0/LX04/usr/local/sbin
。如果您想从同一台计算机上/0/LX04/root/sbin
显示/usr/local/sbin
它所在的位置(这里是同一件事),请将其设置为相对链接:(/root/sbin ->../usr/local/sbin
运行ln -snf ../usr/local/sbin /0/LX04/root/sbin
。将符号链接设置为相对链接通常是一个好主意,这通常会给出所需的结果进行复杂安装时。