SSHFS: получить настоящий pwd на оригинальном сервере?
Я подключил одну из папок моего производственного сервера к своему серверу "ssh account" через 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
Надеюсь, теперь это имеет смысл.
Спасибо
2 ответа
Вы можете получить путь, смонтированный через 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
, Очевидно, что каталог должен существовать локально, чтобы это работало.
Разве вы не знаете путь, который экспортируется / монтируется на вашем локальном компьютере? Разве не все пути в точке монтирования будут относиться к "экспортированному" пути?
sshfs [user@]host:[dir] mountpoint [options]
так что если вы находитесь в [dir]/foo/bar, то pwd на реальном хосте - это /[dir]/foo/bar.
Если вы монтируете свою домашнюю папку (по умолчанию, если нет [dir]), и она находится в "пользовательском" месте, то выяснение вашего домашнего пути может быть сделано следующим образом:
$ ssh flode echo \$HOME
/home/pvv/d/rakhmato
... тогда все, что у меня есть в точке монтирования / 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' - это [dir], который вы монтируете через sshfs.