我已通过 将我的一个生产服务器文件夹与我的“ssh 帐户”服务器连接起来sshfs
。
我经常需要在原始(生产)服务器上找出pwd
(或realpath
)文件,但 pwd 返回连接(“ssh 帐户”)服务器上文件的路径。
有没有办法获取原始路径?
谢谢
编辑:有关此内容的更多信息:我正在使用它将我的 ssh 服务器链接到多个不同的 SFTP 服务器/共享主机。
因此,如果我这样做(在某些服务器上):,sshfs user@domain:/ mount_point
那么我将连接到我的 FTP 帐户,该帐户以 root 用户的身份运行,但更像是,/var/www/clients/c/a/account/pub/
这就是我需要的路径 –
sshfs user@domain:/ mount_point # mount SFTP acc.
cd mount_point
XXXX file.ext # get back: /var/www/clients/…/pub/file.ext
pwd file.ext # returns /ssh-server/path/mount_point/file.ext
希望现在有意义了。
谢谢
答案1
您可以从 的输出中获取通过 sshfs 挂载的路径mount
(或者简单地记住它)。然后您可以
建立一个别名,该别名采用客户端上的路径,删除 SSHfs 的挂载点并在服务器上添加目录的原始名称。例如,如果您将远程目录
/var/www/mywebsite
本地挂载到/home/test/website
(sshfs server:/var/www/mywebsite /home/test/website
),则以下内容将起作用:$ alias mpwd="pwd | sed 's|^/home/test/website|/var/www/mywebsite|'" $ pwd /home/test/website $ mpwd /var/www/mywebsite $ cd gallery $ mpwd /var/www/mywebsite/gallery $ cd /etc $ mpwd /etc
请注意不匹配的目录(
/etc
)并没有被破坏。将删除的目录挂载到本地的同一位置,即执行 sshfs 例如:
sshfs server:/var/www/mywebsite /var/www/mywebsite
。显然,目录必须存在于本地才能正常工作。
答案2
您不知道本地机器上导出/挂载的路径吗?挂载点下的所有路径不是都与“导出”路径相关吗?
sshfs [user@]host:[dir] mountpoint [options]
因此如果您在 [dir]/foo/bar 那么真实主机上的密码是 /[dir]/foo/bar。
如果您正在挂载主文件夹(如果没有 [dir],则为默认文件夹),并且它位于“自定义”位置,则可以像这样找出您的主路径:
$ ssh flode echo \$HOME
/home/pvv/d/rakhmato
...那么我在 mountpoint/moo/hei 中的内容实际上位于 /home/pvv/d/rakhmato/moo/hei
如果您要挂载的 [dir] 是另一个文件夹的别名 (mount -o bind),那么您可以通过查看 /etc/mtab 文件来找到原始路径。例如:
$ ssh localhost mount |grep '/media.*bind'
/mnt/media/media on /media type none (rw,bind)
/mnt/media/root-extension/usr/share/doc on /usr/share/doc type none (rw,bind)
...其中 localhost 是您的服务器名称,“/media”是您通过 sshfs 挂载的 [dir]。