シンボリックリンクで作業できるように、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
。
transform_symlinks
sshfsファイルシステムをマウントするときにオプションを追加すると、同じコマンドで代わりに相対リンクが表示されますが、それでも間違った場所を指します。
$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers 11 Jul 3 09:13 test2 -> ../../../test
ここで./test
は、現在のディレクトリにリンクしようとしましたが、代わりに../../../test
3レベル上のリンクがありました!
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に渡す必要がある特別なオプションはありますか?
sftp
小文字で言うと、コマンドラインのSFTPインターフェイス、つまりを意味します/usr/bin/sftp
。投稿の最後の例は、あなたがリクエストしたとおりに、このSFTPクライアントを使用してシンボリックリンクを作成する場合です。
transform_symlinks
オプションなしでsshfsマウントで実行していること、オプションでsshマウントでtransform_symlinks
実行していること、sftpクライアントで実行していることを明確にしてください。シンボリックリンクはSSHFSで正常に機能するため、最初の文に対する答えは「何もありません」です。バグに遭遇したか、正しいコマンドを入力していませんが、レポートが不明確すぎて、何が間違っているのかわかりません。
ls -l
、テストシンボリックリンクで実行すると何が表示されますか?