Fermars
Posts: 21
Joined: Wed Sep 17, 2014 2:35 pm
Location: Madrid, Spain

Montar carpeta en unidad externa

Wed Sep 17, 2014 2:54 pm

Hola a todos, a ver si me podéis echar una mano.
Tengo una Raspberry con una SD de 16GB y conectado por USB un disco duro externo de 250GB.
He instalado motion para controlar una webcam y las imágenes/vídeos, en vez de guardarlo en la SD que tiene poco espacio quiero guardarlo en una carpeta de ese disco duro. Al mismo tiempo, debo tener acceso a esa carpeta desde un cliente de FTP externo.

Para que lo anterior pueda darse he encontrado un método que consiste en usar el comando "mount" con el modificador --bind que permite hacerlo de una forma muy sencilla:

Code: Select all

sudo mount --bind /carpeta/memoriaSD /carpeta/hdd
Al principio pensé en usar un enlace simbólico pero estos no se ven desde un cliente FTP. Haciéndolo de esa manera, con mount, funciona perfectamente, arrancas "motion" y las imágenes/vídeos que se guardan en el disco duro los puedo ver desde una carpeta que había creado en mi directorio HOME. El problema es que al reiniciar la Raspberry se pierde esa configuración y hay que rehacerlo de nuevo.
Pensé que añadiendolo al "/etc/fstab" sería suficiente, pero aunque los archivos puedo verlos vinculados perfectamente, e incluso puedo subir y borrar archivos por FTP, resulta que Motion me dice que NO tiene permisos para escribir en esa carpeta.

Code: Select all

/home/pi/public_html/motion     /mnt/extdisk/motion     bind    defaults,bind   0       0
Por supuesto la carpeta tanto remota del disco duro (/mnt/extdisk/motion) como la que tengo en mi carpeta "home" tiene permisos de escritura.
Lo que no entiendo es por qué si ejecuto el comando mount --bind funciona perfectamente y no cuando se inicia desde fstab.

¿alguna idea?

Gracias!

User avatar
lmarmisa
Posts: 1266
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: Montar carpeta en unidad externa

Wed Sep 17, 2014 5:31 pm

El comando mount --bind monta carpetas de particiones físicas previamente montadas. Digamos que es una especie de link simbólico a nivel de montaje.

Previamente a que teclees

Code: Select all

sudo mount --bind /carpeta/memoriaSD /carpeta/hdd
has montado la partición física del disco duro probablemente mediante un click de la interfaz gráfica, es decir, la propia interfaz gráfica de Raspbian ha montado el disco sin que hayas tecleado ningún comando específico de montaje.

La pregunta clave con respecto a introducir o no una línea en el fichero fstab para montar el disco USB es si ese disco va a conectarse esporádicamente a la RPi o va a estar siempre conectado. En caso de estar siempre conectado en el arranque, sí interesa montarlo automáticamente con una entrada en fstab, pero la línea a añadir no será la de un montaje del tipo bind sino la correspondiente al montaje de una partición física. Adicionalmente podrías añadir una segunda línea en fstab con un montaje --bind si lo desea, pero siempre después del montaje físico.

La segunda pregunta a hacerse en caso de que el disco esté siempre conectado a la RPi, es qué sistema de ficheros usar en ese disco. Mi opinión personal sería usar un sistema de ficheros ext4, es decir, nativo de Linux y no un sistema de ficheros de Windows como son ntfs o fat.

Este enlace puede servirte de ayuda en caso de usar fstab:

https://help.ubuntu.com/community/Fstab

Salu2.

NOTA: en la entrada de fstab te recomiendo usar identificadores UUID (numeracos tipo c7228d2f-23c6-4700-96b1-223402c7044d) y no dispositivos del tipo /dev/sda1. El comando sudo blkid te ayudará a encontrar el UUID.

Fermars
Posts: 21
Joined: Wed Sep 17, 2014 2:35 pm
Location: Madrid, Spain

Re: Montar carpeta en unidad externa

Wed Sep 17, 2014 8:06 pm

Gracias por la respuesta.
En realidad no uso el entorno gráfico, tan solo esporádicamente.
El disco duro está formateado en NTFS porque, aunque siempre lo tengo conectado a la Raspberry, en ocasiones lo pincho en un Windows para poder pasar archivos rápidamente.

Creo que ya tengo la solución, pero sinceramente no se por qué pasa eso. Resulta que cuando creo una carpeta en el disco duro o un archivo, siempre se crea con permisos 777 y para root. Además, me es imposible cambiarlo con sudo chown pi (por ejemplo) o sudo chmod 755 (por ejemplo). Siempre permanece igual.
Ahora bien, cuando realizo el montaje ya sea directamente con mount --bind o bien reiniciando o con mount -a (para fstab) resulta que los permisos de ambas carpetas cambian automáticamente a 755 y para el usuario "pi". Claro, de esto me acabo de dar cuenta y es que con 755, el usuario "motion" es "others", así que no puede escribir en esa carpeta, efectívamente no tiene permisos. Curiosamente, ahora que la carpeta está montada, sí puedo cambiar los permisos con chmod o cambiar el usuario/propietario para que quede así si quiero:

Code: Select all

drwxr-xr-x 3 motion motion 4096 Sep 17 22:02 motion
Y funciona sin problemas. Las dudas son las anteriores, no tengo claro por qué sucede eso.

Un saludo.

User avatar
lmarmisa
Posts: 1266
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: Montar carpeta en unidad externa

Thu Sep 18, 2014 11:54 am

Creo que para habilitar el acceso de varios o todos los usuarios a las carpetas del disco duro externo formateado como ntfs deberás usar los parámetros fmask y dmask. ¡Recuerda que funcionan con lógica negada!.

http://askubuntu.com/questions/429848/d ... nt-options

Este hilo habla de ese tema:

http://www.raspberrypi.org/forums/viewt ... 0&p=614768

Return to “Español”