Melhor maneira de montar pasta remota

40

Eu tenho dois RasberryPi executando o debian wheezy e gostaria de montar uma pasta do computador A no computador B.

Qual é a melhor maneira (como na mais eficiente) de fazer isso?

Eu posso fazer isso via SMB, mas isso é para Windows, acho que deve haver uma maneira melhor de compartilhar o Linux.

cjburkha
fonte

Respostas:

31

Você pode usar muitas coisas, entre as quais opções populares são:

  • NFS
  • Samba / CIFS
  • SSHFS

Pela facilidade de configuração, acho que eles teriam que ser colocados nesta ordem (em cima: mais fácil)

SSHFS

Através do FUSE, você pode montar sistemas de arquivos remotos via ssh. Não vou explicar como, como Cristopher já explicou muito bem isso. Observe que, para montar o arquivo automaticamente, será necessário um pouco mais de trabalho .

Samba

Isso permitirá que você use máquinas Windows e Unix para acessar a pasta remota. Se não é um grande problema para você, provavelmente não se beneficiará disso. No entanto, é fácil montá-lo automaticamente no init (basta inserir os valores apropriados em /etc/fstab, inclusive username=<your-samba-username>,password=<your-samba-password>na coluna de opções.

NFS

Ele permitirá que você se autentique apenas via IP (sem nomes de usuário = mais rápido, apenas para uso em sua LAN não hostil ) ou via tíquetes Kerberos (muito doloroso para apenas duas framboesas; mas útil em ambientes corporativos).

Como possui suporte ao modo kernel, ele será executado mais rapidamente que o sshfs. Além disso, como não há criptografia realizada, ela terá uma taxa de transferência melhor e, no caso do pequeno Raspberry ARM, pode fazer a diferença.

Além disso, não é tão doloroso configurar simplesmente você confia na sua rede. Você também tem suporte para montagem automática /etc/fstabe não precisa colocar dados confidenciais (como nomes de usuário ou senhas), e se você tiver seus nomes de usuário sincronizados (mesmo /etc/passwde /etc/grouparquivos), poderá usar o conjunto de ferramentas de permissões POSIX usual ( chown, chgrpe chmod).

ssice
fonte
Eu uso o meu Pi como um servidor NFS com discos com principalmente os meus filmes e outros meios de comunicação (ou seja não crítico de sistema stuff, não '/ home /' ou algo semelhante). O NFS me permite assistir a um filme sem primeiro copiá-lo para a unidade local, mas ao gravar arquivos no disco NFS, prefiro usar o rsync. Por isso, montei meus discos NFS somente leitura e escrevi coisas sobre SSH (com rsync). Isso também me impede de sincronizar acidentalmente um disco montado em NFS (que é muito ineficiente).
Zrajm
@zrajm como montar seus discos no pi?
FutuToad
arisu:/mnt/ytra /mnt/ytra nfs soft,ro,intr 0 2
Zrajm 11/03/2014
O Samba pode confundir alguns aplicativos unix, principalmente em torno de permissões ou stat()retornos, por exemplo, coisas que dependem da nlinkcontagem da qual o CIFS não tem noção. SSHFS: Não fiquei muito impressionado, pois executava alternâncias de contexto no servidor de arquivos muito poderosas e não suportava o bloqueio necessário exigido pelos programas internos. Então, NFS ...
thrig
38

SSHFS é maravilhoso. Ele pode montar diretórios remotos em um diretório local com o FUSE . Os comandos abaixo são usados #para indicar que um comando foi executado como root, enquanto $indica a execução como um usuário comum. Como o software FUSE é necessário, primeiro verifique se ele está disponível e em execução.

Um dos comandos lsmode grep, abaixo, pode revelar se o software está carregado e pronto para uso. Um resultado de qualquer comando indica que fuseestá disponível.

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

Se não houver resultado de nenhum dos comandos, tente carregar o módulo do kernel sem reiniciar usando modprobee verifique novamente.

# modprobe fuse
# lsmod fuse

Se o carregamento do módulo falhar, instale o software com apt-get.

# apt-get install fuse

Verifique novamente após a instalação.

# modprobe fuse
# lsmod fuse

O FUSE deve estar instalado e funcionando antes de continuar.


Verifique as permissões de /dev/fuse. As permissões devem fornecer à sua conta de usuário comum acesso de leitura e gravação. Pule esta parte se tiver determinado que sua conta de usuário comum já possui permissão de leitura e gravação /dev/fuse.

# ls -l /dev/fuse

A saída pode ser algo como um dos seguintes.

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)

Em 2013, meu Debian criou /dev/fusecom 0600permissões, proprietário root, proprietário do grupo fuse. Eu precisava deixar o grupo de fusíveis usar o dispositivo e adicionar minha conta de usuário comum ao grupo, como mostrado abaixo.

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

Se a nova associação ao grupo for necessária, efetue logout e logon novamente para se tornar um membro do grupo.


Em seguida, instale sshnos dois lados da seguinte maneira.

# apt-get install ssh

Essa resposta foi escrito para Debian, mas no Ubuntu 18.x, pelo menos, openssh-client, fuse, e alguns outros pacotes são uma parte do Ubuntu sshfspacote. O sshfssoftware é necessário no lado do cliente, mas pode ser instalado nos dois lados, se desejado. Uma das dependências do pacote é fuse, mas o instalador ignora o software que já foi instalado.

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

Com fusee sshdisponível e com permissão para usar o dispositivo /dev/fuse, crie um ponto de montagem para o sistema de arquivos remoto; e monte esse sistema de arquivos remoto localmente da seguinte maneira.

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

Para montar um diretório diferente de home, especifique-o após os dois pontos.

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

Para desmontar, use fusermount.

fusermount -u /mnt/$directory_name

Se você possui uma máquina Windows, ela também pode usar SSHFS com win-sshfs . Este software "mapeia uma unidade" com SSHFS, para que você possa ter uma letra de unidade do Windows que contenha o diretório remoto.

Christopher
fonte
11
Você pode melhorar significativamente a velocidade de desempenho do SSHFS usando opções adicionais. Consulte este artigo para obter mais informações e comparações de velocidade com o NFS: admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS
blendenzo
Ei - tentei usar suas instruções (ajustando para yum install fuse-sshfs.x86_64), mas quando o fiz modprobe fuse, não criei um grupo de fusíveis para mim. Então, quando eu fiz usermod -a -G fuse [your-user], eu consegui usermod: group 'fuse' does not exist. você pode ajudar? obrigado antecipadamente
anfíbio
lsmod | grep fuseretorna resultado e eu tenho /dev/fuse, m, que pertence à raiz. então você está dizendo que eu estou bem sem o grupo?
amphibient
sim, eu recebocrw-rw-rw-. 1 root root 10, 229 Nov 21 15:32 /dev/fuse
anfphient
Após o # apt-get install fuse-utils sshfs, recebo "Não foi possível localizar o pacote fuse-utils". Alguma idéia do porquê? (Ubuntu 18.04.01)
Kvothe
7

No linux, você escolheria o NFS (também verifique o artigo no archwiki sobre ele, que também pode ter informações aplicáveis ​​à sua distribuição). Possui recursos mais avançados que o samba. Se você precisar bloquear (ou seja, acessos simultâneos), verifique também o lockd porque o nfs é sem estado. No entanto, é mais difícil de configurar do que smb. Eu sugeriria tentar o samba e o nfs para ver qual deles atende às suas necessidades.

Silverrocker
fonte
1

Eu usei a unidade de rede SFTP e o ExpanDrive no passado e posso dizer que o sshfs supera os dois sem uma pergunta.

sublime
fonte