La mejor manera de montar una carpeta remota

40

Tengo dos RasberryPi ejecutando debian wheezy y me gustaría montar una carpeta desde la computadora A en la computadora B.

¿Cuál es la mejor manera (como la más eficiente) de hacer esto?

Puedo hacerlo a través de SMB, pero eso es para Windows, creo que debe haber una mejor manera de compartir en Linux.

cjburkha
fuente
Posible copia de la copia de descarga del archivo que se actualiza en el cambio
dchirikov

Respuestas:

31

Puede usar muchas cosas, entre las cuales, las opciones populares son:

  • NFS
  • Samba / CIFS
  • SSHFS

Por facilidad de configuración, creo que tendrían que colocarse en este orden (arriba: más fácil)

SSHFS

A través de FUSE, puede montar sistemas de archivos remotos a través de ssh. No cubriré cómo, como Cristopher ya lo ha explicado muy bien. Solo tenga en cuenta que, para montar el archivo automáticamente, necesitará un poco más de trabajo .

Samba

Le permitirá usar máquinas Windows y Unix para acceder a la carpeta remota. Si no es un gran problema para ti, entonces probablemente no te beneficiarás. Sin embargo, es fácil montarlo automáticamente en init (solo ingrese los valores apropiados en /etc/fstab, incluida username=<your-samba-username>,password=<your-samba-password>la columna de opciones.

NFS

Le permitirá autenticarse solo a través de IP (sin nombre de usuario = más rápido, solo para usar dentro de su LAN no hostil ) o mediante Kerberos Tickets (demasiado doloroso para solo dos Frambuesas; pero útil en entornos corporativos).

Como tiene soporte para modo kernel, se ejecutará más rápido que sshfs. Además, como no se realiza el cifrado , tendrá un mejor rendimiento y, en el caso de la pequeña Raspberry ARM, puede marcar la diferencia.

Además, no es tan doloroso configurarlo simplemente confías en tu red. También tiene soporte para /etc/fstabmontaje automático, y no tiene que poner datos confidenciales (como nombres de usuario o contraseñas), y si tiene sus nombres de usuario sincronizados (los mismos /etc/passwdy los /etc/grouparchivos) puede usar el conjunto de herramientas de permisos POSIX habitual ( chown, chgrpy chmod).

ssice
fuente
Utilizo mi Pi como un servidor NFS con discos con la mayoría de mis películas y otros medios (es decir, no cosas críticas para el sistema, ni '/ home /' ni nada similar). NFS me permite ver una película sin tener que copiarla primero en la unidad local, pero al escribir archivos en el disco NFS prefiero usar rsync. Por lo tanto, he montado mis discos NFS de solo lectura y escribo cosas sobre SSH (con rsync). Esto también me impide sincronizar accidentalmente a un disco montado en NFS (que es muy ineficiente).
zrajm
@zrajm, ¿cómo montar tus discos en la pi?
FutuToad
arisu:/mnt/ytra /mnt/ytra nfs soft,ro,intr 0 2
zrajm
Samba puede confundir algunas aplicaciones de Unix, especialmente en torno a los permisos o lo que stat()devuelve, por ejemplo, cosas que dependen del nlinkrecuento del que CIFS no tiene noción. SSHFS No me ha impresionado mucho, ya que ejecutó cambios de contexto en el servidor de archivos muy alto y no admitió el bloqueo necesario requerido por los programas internos. Entonces, NFS ...
2015
38

SSHFS es maravilloso. Puede montar directorios remotos en un directorio local con FUSE . Los siguientes comandos se utilizan #para indicar que un comando se ejecutó como root, mientras que se $indica la ejecución como usuario normal. Debido a que se requiere el software FUSE, primero asegúrese de que esté disponible y en ejecución.

Uno de los comandos lsmody grep, a continuación, puede revelar si el software está cargado y listo para usar. Un resultado de cualquiera de los comandos indica que fuseestá disponible.

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

Si no hay resultado de ninguno de los comandos, intente cargar el módulo del kernel sin reiniciar modprobey verifique nuevamente.

# modprobe fuse
# lsmod fuse

Si la carga del módulo falla, instale el software con apt-get.

# apt-get install fuse

Verifique nuevamente después de la instalación.

# modprobe fuse
# lsmod fuse

FUSE debe estar instalado y funcionando antes de continuar.


Verifique los permisos de /dev/fuse. Los permisos deben proporcionar a su cuenta de usuario habitual acceso de lectura y escritura. Omita esta parte si ha determinado que su cuenta de usuario normal ya tiene permiso de lectura y escritura /dev/fuse.

# ls -l /dev/fuse

El resultado podría ser algo como uno de los siguientes.

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)

En 2013, mi Debian creó /dev/fusecon 0600permisos, propietario root, propietario de grupo fuse. Necesitaba dejar que el grupo de fusibles usara el dispositivo y agregar mi cuenta de usuario habitual al grupo, como se muestra a continuación.

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

Si se requería la nueva membresía de grupo, cierre sesión y vuelva a iniciar sesión para convertirse en miembro del grupo.


Luego, instálelo sshen ambos lados de la siguiente manera.

# apt-get install ssh

Esta respuesta fue escrito para Debian, pero en Ubuntu 18.x al menos, openssh-client, fuse, y algunos otros paquetes son una parte de la Ubuntu sshfspaquete. El sshfssoftware se requiere en el lado del cliente, pero se puede instalar en ambos lados si lo desea. Una de las dependencias del paquete es fuse, pero el instalador omite el software que ya se ha instalado.

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

Con fusey sshdisponible, y con permiso para usar el dispositivo /dev/fuse, cree un punto de montaje para el sistema de archivos remoto; y monte ese sistema de archivos remoto localmente de la siguiente manera.

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

Para montar un directorio que no sea home, especifíquelo después de los dos puntos.

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

Para desmontar, use fusermount.

fusermount -u /mnt/$directory_name

Si tiene una máquina Windows, también puede usar SSHFS con win-sshfs . Este software "mapeará una unidad" con SSHFS, para que pueda tener una letra de unidad de Windows que contenga el directorio remoto.

Christopher
fuente
1
Puede mejorar significativamente la velocidad de rendimiento de SSHFS mediante el uso de opciones adicionales. Consulte este artículo para obtener más información y comparaciones de velocidad con NFS: admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS
blendenzo
Oye, intenté usar tus instrucciones (ajustándome a yum install fuse-sshfs.x86_64), pero cuando lo hice modprobe fuse, no creé un grupo de fusibles para mí. Entonces cuando lo hice usermod -a -G fuse [your-user], lo conseguí usermod: group 'fuse' does not exist. puedes ayudar? gracias de antemano
anfibio
lsmod | grep fusedevuelve el resultado y tengo /dev/fuse, m que es propiedad de root. ¿Entonces estás diciendo que estoy bien sin el grupo?
anfibio
Sí, lo entiendocrw-rw-rw-. 1 root root 10, 229 Nov 21 15:32 /dev/fuse
amphibient
Después de # apt-get install fuse-utils sshfs aparece "No se puede encontrar el paquete fuse-utils". ¿Alguna idea de por qué? (Ubuntu 18.04.01)
Kvothe
7

En Linux, elegiría para NFS (también consulte el artículo en archwiki sobre él, que también puede tener información aplicable para su distribución). Tiene características más avanzadas que samba. Si necesita bloquear archivos (es decir, acceso concurrente), también debe buscar en lockd porque nfs no tiene estado. Sin embargo, es más difícil de configurar que smb. Sugeriría probar tanto samba como nfs para ver cuál se adapta a tus necesidades.

Silverrocker
fuente
1

He usado tanto la unidad de red SFTP como ExpanDrive en el pasado y puedo decirles que sshfs supera a ambos sin ninguna duda.

sublime
fuente