sshfs は SFTP サーバのシンボリックリンクを切断します。

sshfs は SFTP サーバのシンボリックリンクを切断します。

シンボリックリンクを使用できるようにSSHFSを介してリモートSFTPパスをマウントする方法を知っている人はいますか?これにより、私が作成したすべてのシンボリックリンクが間違ったファイル(リンクされたファイルではない)を指します。私が関心のあるすべてのシンボリックリンクは相対的(絶対的ではありません)なので、リモートシステムに表示されているのと同じように表示するのが理想的です。

デフォルトのマウントオプションでsshfsを使用すると、現在のディレクトリ内の他のファイルへのシンボリックリンクを作成できません。

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:11 test2 -> /test

リンク先が現在ディレクトリ(./test)にあるため、これは明らかに間違っていますが、ここではsshfsが間違ったリンクを生成したことがわかります。/testリンク先/mnt/path/to/sshfs/mount/testではありません/test

sshfsファイルシステムをマウントするときにそのオプションを追加すると、transform_symlinks同じコマンドを使用して相対リンクを取得しましたが、まだ間違った場所を指します。

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> ../../../test

./testここでは現在のディレクトリに接続しようとしましたが、レベル3の上に../../../testリンクが表示されました!

sftpただし、sshfsとしてマウントするのではなく、コマンドラインSFTPクライアント接続を使用すると機能します。

sftp> open ...
sftp> symlink test test2
...
$ cd /mnt/path/to/sshfs/mount
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> test

したがって、これはリモートSFTPサーバーが正常に機能していることを示していますが(専用のSFTPクライアントを使用してシンボリックリンクを作成できるため)、何らかの理由でsshfsを介して機能するシンボリックリンクを作成できません。

奇妙なことに、sshfsを使用して(SFTPサーバーの代わりに)シェルアクセスを提供するSSHサーバーにパスをマウントすると、シンボリックリンクは正しく機能します。正しく生成できます。この問題は、SFTP 専用サーバーに接続する場合にのみ発生します。

私は何が間違っていましたか?シンボリックリンクが機能するには、SFTPサーバーに接続するときにsshfsに特別なオプションを渡す必要がありますか?

ベストアンサー1

リモート絶対(で始まる/)シンボリックリンクをマウントポイントに基づいて相対リンクに変換するには、sshfs次のfollow_symlinksオプションを使用します。

sshfs -o follow_symlinks ...

このtransform_symlinksオプションは私には影響しません。参考この問題

おすすめ記事