涉及符号链接的跨 SSHFS 目录同步

涉及符号链接的跨 SSHFS 目录同步

我有 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/sbinLX04,请将其设为符号 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。将符号链接设置为相对链接通常是一个好主意,这通常会给出所需的结果进行复杂安装时。

相关内容