Uzak klasörü takmanın en iyi yolu


40

Debian Wheezy çalışan iki RasberryPi var ve B bilgisayarına A bilgisayarından bir klasör eklemek istiyorum.

Bunu yapmanın en iyi yolu (en verimli şekilde) nedir?

SMB üzerinden yapabilirim, ama bu pencereler için, Linux arasında paylaşmanın daha iyi bir yolu olması gerektiğini düşünüyorum.


Olası değişiklik kopyası güncellenen dosyanın indirme kopyası
dchirikov

Yanıtlar:


31

Popüler seçeneklerden bazıları olan birçok şeyi kullanabilirsiniz:

  • NFS
  • Samba / CIFS
  • sshfs

Kurulum kolaylığı ile bu sıraya konmaları gerektiğini düşünüyorum (üst: en kolay)

sshfs

FUSE ile uzak dosya sistemlerini ssh ile bağlayabilirsiniz. Cristopher'in bunu zaten çok iyi açıkladığı gibi, bunun nasıl olduğunu anlatamam. Sadece dosyayı otomatik olarak monte etmek için biraz daha fazla çalışmaya ihtiyaç duyacağına dikkat edin .

Samba

Uzak klasöre erişmek için Windows ve Unix makinelerini kullanmanıza izin verecektir. Sizin için önemli bir şey değilse, muhtemelen bundan faydalanamazsınız. Bununla birlikte, onu başlangıçta otomatik olarak ayarlamak kolaydır (sadece seçenekler sütununda /etc/fstabdahil olmak üzere uygun değerleri girin username=<your-samba-username>,password=<your-samba-password>.

NFS

Sadece IP üzerinden (kullanıcı adı yok = hızlı, sadece düşmanca olmayan LAN'ınız içinde kullanımda ) veya Kerberos Biletleri (sadece iki Ahududu için çok acı verici; ancak kurumsal ortamlarda yararlı) kimliğinizi doğrulamanıza izin verecektir .

Çekirdek modu desteğine sahip olduğundan, sshfs'den daha hızlı çalışacaktır. Ayrıca, şifreleme yapılmaması nedeniyle daha iyi bir verim elde edilir ve küçük Ahududu KOL'unda bu durum bir fark yaratabilir.

Ayrıca, ağınıza güvenmeniz için kurulum yapmak çok acı verici değildir. İçeri automount desteğe sahip /etc/fstabçok ve siz (kullanıcı adları veya şifreler gibi) hassas verileri koymak zorunda değilsiniz ve size kullanıcı adları syncrhronized var (aynı ise /etc/passwdve /etc/groupdosyaları) her zamanki POSIX izinleri araç kullandığınızda (edebilirsiniz chown, chgrpve chmod).


Pi'mi, NFS sunucusu olarak, çoğunlukla filmleri ve diğer medyaları içeren disklerle kullanıyorum (yani , sistem kritik öneme sahip şeyler değil, '/ home /' veya benzeri bir şey değil). NFS önce bir filmi yerel sürücüye kopyalamak zorunda kalmadan bir film izlememe izin veriyor, ancak NFS diskine dosya yazarken rsync kullanmayı tercih ediyorum. Bu nedenle NFS disklerimi salt okunur ve SSH (rsync ile) üzerine bir şeyler yazdım. Bu aynı zamanda yanlışlıkla NFS takılı bir diske (çok yetersiz) rsyncing yapmamı engelliyor.
zrajm

@zrajm, disklerinizi pi'ye nasıl yerleştirirsiniz?
FutuToad

arisu:/mnt/ytra /mnt/ytra nfs soft,ro,intr 0 2
zrajm

Samba, bazı unix uygulamalarını, özellikle izinlerin etrafında ya da neyin stat()geri döndüğü gibi, örneğin nlinkCIFS'in nosyonunun hiçbir fikrinin olmadığı sayıya bağlı olanları karıştırabilir. SSHFS, etkilenmedim, çünkü dosya sunucusundaki bağlam anahtarları çok kuvvetli bir şekilde yükseldi ve kurum içi programlar için gereken kilitlemeyi desteklemedi. Yani, NFS ...
thrig

38

SSHFS harika. Uzak dizinleri FUSE ile yerel bir dizine bağlayabilir . Kullanım aşağıda komutlar #komut olarak idam edildi belirten rootederken, $normal bir kullanıcı olarak işletildiğini gösterir. FUSE yazılımı gerektiğinden, önce kullanılabilir olduğundan ve çalıştığından emin olun.

Yazılımın yüklenmiş ve kullanıma hazır olup olmadığını aşağıdakilerden lsmodve grepkomutlarından biri ortaya çıkarabilir. Her iki komutun bir sonucu da fusebunun uygun olduğunu gösterir .

# lsmod | grep fuse
$ grep -i fuse /lib/modules/$(uname -r)/modules.builtin

Her iki komuttan da sonuç alınamazsa, çekirdek modülünü kullanarak yeniden başlatmadan yüklemeyi deneyin modprobeve tekrar kontrol edin.

# modprobe fuse
# lsmod fuse

Modülün yüklenmesi başarısız olursa, yazılımı yükleyin apt-get.

# apt-get install fuse

Kurulumdan sonra tekrar kontrol edin.

# modprobe fuse
# lsmod fuse

Devam etmeden önce FUSE kurulmalı ve çalışıyor olmalıdır.


İzinlerini kontrol edin /dev/fuse. İzinler, normal kullanıcı hesabınıza okuma ve yazma erişimi sağlamalıdır. Normal kullanıcı hesabınızın zaten okuma ve yazma izninin olduğunu tespit ettiyseniz, bu bölümü atlayın /dev/fuse.

# ls -l /dev/fuse

Çıktı, aşağıdakilerden biri gibi bir şey olabilir.

crw-rw-rw- 1 root root (all users can read/write)
crw------- 1 root fuse (only root can read/write)
crw-rw---- 1 root fuse (root and members of fuse group can read/write)

2013 yılında, benim Debian yarattı /dev/fuseile 0600izinler, sahibi root, grup sahibi fuse. Ben bildirmek için gerekli sigorta grubu cihazı kullanmak ve aşağıda gösterildiği gibi, gruba benim normal kullanıcı hesabı eklemek için.

# usermod -aG fuse $your_regular_user_account
# chmod 0660 /dev/fuse

Yeni grup üyeliği gerekliyse, gruba üye olmak için oturumu kapatıp tekrar açın.


Ardından, sshher iki tarafa aşağıdaki gibi takın .

# apt-get install ssh

Bu cevap Debian için yazılmıştır, ancak Ubuntu 18.x üzerinde en azından openssh-client, fuseve birkaç diğer paketler Ubuntu bir parçası olan sshfspaketin. sshfsYazılım istemci tarafında gereklidir, ancak istenirse her iki tarafta da monte edilebilir. Paket bağımlılıklarından biri fuse, ancak yükleyici önceden yüklenmiş olan yazılımı atlar.

# Ubuntu 18.x: 
# apt-get install sshfs

Kullanılabilir fuseve sshkullanılabilir ve cihazı kullanma izniyle /dev/fuse, uzak dosya sistemi için bir bağlantı noktası oluşturun; ve bu uzak dosya sistemini yerel olarak aşağıdaki şekilde monte edin.

# mkdir /mnt/$directory_name
# chown $your_user:$group /mnt/$directory_name/
$ sshfs $remote_username@$remote_server_name: /mnt/$directory_name/

Ev dışındaki bir dizini takmak için bunu iki noktadan sonra belirtin.

$ sshfs $remote_username@$remote_server_name:/remote/directory /mnt/$directory_name

Çıkarmak için kullanın fusermount.

fusermount -u /mnt/$directory_name

Windows makineniz varsa, SSHFS'yi win-sshfs ile de kullanabilirsiniz . Bu yazılım SSHFS ile "bir sürücüyü eşleştirir", böylece uzak dizini içeren bir Windows sürücü harfini alabilirsiniz.


1
Ek seçenekler kullanarak SSHFS'nin performans hızını önemli ölçüde artırabilirsiniz. NFS ile daha fazla bilgi ve hız karşılaştırması için bu makaleye bakın: admin-magazine.com/HPC/Articles/Sharing konumu
with-

Hey - Talimatlarını kullanmaya çalıştım (ayarlayarak yum install fuse-sshfs.x86_64) ama yaptığım zaman benim modprobe fuseiçin bir sigorta grubu yaratmadı. Öyleyse usermod -a -G fuse [your-user]anladım usermod: group 'fuse' does not exist. yardım edebilir misin şimdiden teşekkürler
amfi 21:17

lsmod | grep fusesonucu döndürür ve ben de sahibim /dev/fuse, m'nin root'a ait olması. Yani grupsuz olduğumu mu söylüyorsun?
amfi

evet, alıyorumcrw-rw-rw-. 1 root root 10, 229 Nov 21 15:32 /dev/fuse
Kasım'da

# Apt-get install fuse-utils sshfs komutundan sonra "fuse-utils paketini bulamıyorum" alıyorum. Neden bir fikrin var mı? (Ubuntu 18.04.01)
Kvothe

7

Linux dünyada, bir yere seçsin NFS (aynı zamanda kontrol makale dağıtım lutfen için geçerli bilgilere sahip olabilir bu konuda archwiki üzerine). Daha sonra samba daha gelişmiş özelliklere sahiptir. Dosyaları kilitlemeniz gerekiyorsa (yani eşzamanlı erişim) dosyaları kilitlediniz, çünkü nfs durumsuzdur. Bununla birlikte, yapılandırmak smb'den daha zordur. Hangisinin sizin gereksinimlerinize uygun olduğunu görmek için hem samba hem de nfs'i denemeyi öneririm.


1

Geçmişte hem SFTP net sürücü ve ExpanDrive kullanmış ve sana söyleyebilirim sshfs bir sorgulamadan geride hem.

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.