Chuletillas (y XXII) – Montar un servicio FTP sobre un directorio local

chuleta Mi servicio de hosting me proporciona casi 1000 Gbytes de espacio en disco (750 de base más algunos extras por referencias) de los que estoy usando unos 800 Mbytes y cerca de 120 GBytes de transferencia diaria de la que apenas aprovecho un par ¿Por qué no usar estos recursos extra para hacer backups incrementales de mis datos locales? Yo uso para este fin un sencillo script que usa rdiff-backup el cual me permite conexión con una máquina remota a través de ssh, pero no de ftp. Y mi hosting no me da conexión por ssh. Una solución sencilla a esto podría ser montar mi servidor ftp sobre un directorio local usando FUSE y, a partir de ahí, usar mi script de la forma habitual.

Para seguir esta chuletilla necesitas tener instalado curlftpfs, una utilidad que permite el uso de curl sobre FUSE disponible entre los paquetes estables tanto de Fedora como de Ubuntu y de Debian. Una vez instalado, sólo debes de ejecutar lo siguiente con privilegios de root:

# curlftpfs -o allow_other ftp://user:pass@ftp.server.com /mnt/ftp

Donde user y pass son los datos de tu cuenta de ftp, ftp.server.com el nombre de tu servidor ftp y /mnt/ftp el directorio local donde quieres montarlo. Fácil ¿verdad? Bueno, vamos a mejorarlo un poco…

Si queremos que el montaje se realice de forma más cómoda, sólo tenemos que incluir esta línea en nuestro fichero /etc/fstab:

curlftpfs#user:pass@ftp.server.com /mnt/ftp fuse allow_other,rw,user,noauto 0 0

El directorio no se montará de forma automática en el arranque del sistema como el resto de las unidades (gracias al parámetro noauto) pero a partir de ahora montarlo y desmontarlo será tan fácil como ejecutar mount /mnt/ftp o umount /mnt/ftp respectivamente.

Por último, si nos preocupa que el usuario y la contraseña de nuestra cuenta de ftp sea visible dentro de un archivo legible por todos los usuarios del sistema (o, también, visualizando la lista de procesos en ejecución) podemos guardar estos datos en un fichero llamado .netrc dentro del directorio del usuario root. El formato del fichero sería este:

machine ftp.server.com
login user
password pass

Y ahora la línea en nuestro fichero fstab quedaría así

curlftpfs#ftp.server.com /mnt/ftp fuse allow_other,rw,user,noauto 0 0

Dos apuntes finales. Recuerda que tus datos viajarán en claro a través de la red, así que si guardas información especialmente sensible procura cifrarla antes y trata de usar en todo momento la línea de comandos para acceder a esta nueva unidad. La utilidades gráficas no son eficientes para este tipo de accesos.

Un comentario sobre “Chuletillas (y XXII) – Montar un servicio FTP sobre un directorio local”

  1. Hola.

    Quizas me puedas ayudar. Estoy intentando hacer lo que comentabas en tu blog.

    Montar un servicio FTP sobre un directorio local.

    El problema es que al ejecutar el comando, me sale el siguiente error:

    root@OpenWrt:/# curlftpfs -o allow_other ftp://192.168.1.251 /mnt/ftp/
    fuse: device not found, try ‘modprobe fuse’ first

    Estoy intentando agregar el modulo “fuse” al kernel, con “insmod” pero tampoco funciona.

    kern.err kernel: [ 2749.088000] fuse: version magic ‘3.6.9 mod_unload MIPS32_R1 32BIT ‘ should be ‘3.3.8 mod_unload MIPS32_R1 32BIT ‘

    Espero que me puedas ayudar. Muchas gracias!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *