sshfs, SFTP sunucusundan sembolik bağlantıları keser


16

Symlink'lerle çalışabilmeniz için SSHFS aracılığıyla uzak bir SFTP yolunun nasıl kurulacağını bilen var mı? Bunu yaptığımda, oluşturduğum tüm semboller yanlış dosyalara işaret ediyorlar (bağlantılı olduğumları değil.) İlgilendiğim tüm semboller göreceli (mutlak değil), bu yüzden tam olarak uzak makinede olduğu gibi görünmelerini sağlamak ideal olun.

Varsayılan bağlama seçenekleriyle sshfs kullanarak, geçerli dizindeki başka bir dosyaya sembolik bağlantı oluşturamıyorum:

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

Bağlantı hedefi geçerli dizinde ( ./test) olduğu için açıkça yanlıştır, ancak burada sshfs'nin /testyanlış olan bir bağlantı oluşturduğunu görebilirsiniz - bağlantı hedefi /mnt/path/to/sshfs/mount/testdeğil /test.

transform_symlinksBen sshfs dosya sistemi monte seçeneği ekleyerek, bunun yerine aynı komutla göreli bir bağlantı olsun, ama yine de yanlış yere işaret ediyor:

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

Burada ./testgeçerli dizinde bağlantı kurmaya çalıştım , ancak bunun yerine ../../../testüç seviyeye kadar bir bağlantı aldım !

sftpAncak sshfs ile bağlanmak yerine SFTP istemcisi komut satırıyla bağlantı kurmak işe yarar:

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

Bu bana uzak SFTP sunucusunun iyi çalıştığını söylüyor (özel bir SFTP istemcisi ile semboller oluşturabildiğim için), ancak bazı nedenlerden dolayı sshfs ile herhangi bir çalışan sembol oluşturamıyorum.

Garip bir şekilde, bir SSH sunucusuna kabuk erişimi sağlayan bir yol bağlamak için sshfs kullandığımda (yalnızca SFTP sunucusunun aksine) semboller iyi çalışıyor - Onları doğru şekilde oluşturabilirim. Yalnızca salt SFTP sunucusuna bağlandığında sorunlu görünüyor.

Neyi yanlış yapıyorum? Sembolleri çalıştırmak için bir SFTP sunucusuna bağlanırken sshfs'ye geçmek zorunda olduğum özel bir seçenek var mı?


Sorunuzu anlamıyorum: sshfs her zaman SFTP kullanır. Ne demek sftp yerine ssh aracılığıyla? Belirli bir SFTP sunucusunda sorun yaşıyormuşsunuz gibi görünüyor. Bir SFTP istemcisi kullanıyorsanız, ls -ltest sembollerinizde çalıştırdığınızda ne gösterir ?
Gilles 'SO- kötü olmayı kes'

Üzgünüm, sftpküçük harf dediğimde SFTP arabirimi, yani komut satırı demek /usr/bin/sftp. Gönderideki son örneğim, istekte bulunduğunuz gibi bu SFTP istemcisini kullanarak symlink'i yaptığım.
Malvineous

Ne demek istediğini hala bilmiyorum. Lütfen yerel olarak ne yaptığınızı, transform_symlinksseçenek olmadan bir sshfs montajı üzerinden ne yaptığınızı, transform_symlinksseçenek ile bir ssh montajı üzerinden ne yaptığınızı ve bir sftp istemcisi ile ne yaptığınızı açıklığa kavuşturmak için yazınızı düzenleyin . Symlinks SSHFS üzerinden normal şekilde çalışır, bu nedenle ilk cümlenizin cevabı “hiçbir şey” dir - bir hatayla karşılaştınız veya doğru komutları yazmıyorsunuz, ancak raporunuz neyin yanlış olduğunu bilmiyor.
Gilles 'SO- kötü olmayı bırak'

Ne istediğimi en iyi şekilde açıklığa kavuşturmaya çalıştım, ancak soru bana net göründüğü için neyin peşinde olduğundan emin değilim. Hala net değilse, lütfen bana hangi parçaların mantıklı olmadığını ve nedenini söyle ve bu parçalara odaklanmaya çalışacağım. Umarım sorularınız şimdi cevaplanmıştır.
Malvineous

Yanıtlar:


13

Uzak mutlak (başlangıçtan itibaren /) sembol sshfsbağlantılarını bağlama noktasına göre dönüştürmek için şu follow_symlinksseçeneği kullanın:

sshfs -o follow_symlinks ...

transform_symlinksSeçenek, benim için hiçbir şey yapmaz, bkz bu sorunu .


benim durumumda doğru cevap. Daha önce sembolik dosyalar / klasör görmedim ve şimdi görüyorum ve takip edebiliyorum.
oturum kapatma

1

Daha önce açıkladığınız davranışı gördüm, ancak şimdi test ediyorum, sadece sshfs'ye monte edilmiş bir dizinde iyi semboller oluşturabilirim:

$ touch T
$ ln -s T L
$ ls -l T L
lrwxrwxrwx 1 user user 1 Apr  9 16:10 L -> T
-rw-rw-r-- 1 user user 0 Apr  9 16:10 T

$ echo hello >> L
$ cat T
hello
$ pwd
/home/user/oak/tmp
$ mount | grep oak
user@oak: on /home/user/oak type fuse.sshfs (rw,nosuid,nodev,user=user)

Yaklaşık 4 ay önce uzaktan kumandayı sshd'ye yükselttim . Eski sürüm birkaç yaşında olurdu. Belki yükseltme sorunu çözdü. Bu şimdi ne kullandığım hakkında bazı ipuçları verebilir:

$ ssh oak 'ident $(which sshd)' | grep ssh
/usr/sbin/sshd:
 $NetBSD: sshd.c,v 1.13.4.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshpty.c,v 1.2.26.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshlogin.c,v 1.4.22.1 2015/04/30 06:07:31 riz Exp $

Ubuntu'nun otomatik olarak yaptığı dışında, sshfs'yi değiştirmek için hiçbir şey yapmadım.
HTH.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.