SSHFS üzerinden inotify veya adlandırılmış yöneltmeleri nasıl kullanırım?


12

Teşekkürler sshfssihir, ev dizinimi uzak bir sunucudan bağlayabilirim

sshfs user@server:/home/user ~/remote

İyimser, ben yerel bir set düşündüm inotify-hook üzerinde ~/remote/logFile(içinde sshfsyerel bir program uzak günlük değişimlere tepki verebilir böylece montaj).

cd ~/remote
touch logFile                                # create remote file
inotifywait logFile &                        # set up local inotify-hook
ssh user@server -x touch /home/user/logFile  # touch file from remote

Hiçbir şey olmuyor . inotifywaitBen touchyerel olarak dosya sürece sessiz . Adlandırılmış bir boruya yazma benzer şekilde başarısız olur.

Bu neden?
Bu boşluğu nasıl kapatabilirim?

Ben olabilir koşmak inotifywaitgibi uzaktan kumanda üzerindeki dosya sistemi değişikliği seri stratejisi kesmek ve yerel bir bağlantı sürdürmek ama sonra ben temelde sshfs reimplementing . Ve soyutlamayı tamamen öldürüyor.


2
inotifyYerel sistemde uzak dosya sistemindeki değişiklikleri algılamanın bir yolu olduğunu sanmıyorum . Bu değişikliklerde yerel çekirdek döngü dışında. inotifywaitİstemcide değil, sunucuda çalıştırmanız gerekir .
Barmar

@Barmar Ancak istemci (yerel makine) değişiklikler hakkında bilgi sahibi olmaz. Bu konuda biraz eklemek için düzenledim.
Anko

Genel olarak, ağ dosya sistemleri tam şeffaflık sağlayamaz, genellikle soyutlamayı bozarlar. İhtiyaç duyulan şey SSHFS'nin bir geliştirmesidir - yerel olarak inotify çalıştırdığınızda, isteği inotify çalıştıran ve bildirimleri istemciye ileten sunucuya gönderilmesi gerekir.
Barmar

gamine baktın mı
Janus Troelsen

@JanusTroelsen Gamini duymadım. Genel bakış sayfasına göre inotify da kullanıyor. Bu tür güncellemeleri bir ağ üzerinden dağıtmak için yararlı mı?
Anko

Yanıtlar:


10

SSHFS dosya sistemi SFTP protokolünün üzerine kurulmuştur . SFTP yalnızca dosyaları “klasik” şekillerde işlemek için olanaklar sağlar; istemci sunucuya bir istekte bulunur (bir dizin listeler, dosya yükler vb.) ve sunucu yanıt verir. Bu protokolde, sunucunun istemciye bir şey olduğunu kendiliğinden bildirmesi için bir olanak yoktur.

Bu, SSHFS içinde inotify gibi bir tesisin sağlanmasını imkansız hale getirir. SSHFS'yi özel uzantılarla genişletmek veya tam teşekküllü bir SSH bağlantısıyla desteklemek mümkün olabilir; ancak SSHFS için böyle bir uzantı bilmiyorum.

Adlandırılmış kanallar aynı nedenle SSHFS'nin üzerine uygulanamaz. Klasik ağa bağlı dosya sistemi olan NFS'de, borular adı verilen çapraz makineleri de destekleyecek bir tesis bulunmuyor. Ağa bağlı bir dosya sisteminde, adlandırılmış bir kanal, bağlandığı makinelerin her birinde (sunucuya ek olarak) bağımsız bir iletişim noktası oluşturur.

FAM (Linux'a taşınan SGI IRIX'teki inotify analogu), bildirimlerin ağ üzerinden gönderilmesine izin veren bir arka plan programı sağlar. Linux, FAM'ı sahneye çıktığından beri oldukça FAM'ı reddetti, bu yüzden FAM'ı çalıştırmanın kendi uygulamaya özel bildirim sisteminizi yuvarlamaktan daha kolay olup olmadığını bilmiyorum. FAM ve NFS ağ bağlantısını güvence altına almak için SSH üzerinden bir port yönlendirmesi ayarlamanız veya bir VPN oluşturmanız gerekir.

İstemcilerinizin kabuk erişimine izin verdiğinizi varsayarak kendinizinkini almayı seçerseniz, bir istemci adına inotify monitör çalıştırmak oldukça kolaydır: istemcinin bir SSH bağlantısı açmasını ve inotifywaitkomutu sunucuda çalıştırmasını sağlayın , çıktısını istemcide ayrıştırır. Şunları yapabilirsiniz Bir ana bağlantı kurmak aynı sunucuya aynı istemciden açık sayıda bağlantı kurulduğu için daha hızlı yapmak için.


1
en azından qemu bir tür çapraz makine borusunu destekliyor: sanal konuk için bir boru
Janus Troelsen
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.