Cuando quieres administrar un sitio web a través de FTP, es un poco engorroso estar conectando y desconectando para subir o borrar archivos, incluso para mantener una copia de seguridad sincronizada en un equipo local. Una solución es montar este servidor FTP en una carpeta local, en la cual podemos trabajar normalmente y sobre la cual podemos hacer copias de seguridad. Para conseguir esto tenemos que instalar curlftp:

~$ sudo su -
~# apt-get install curlftpfs

Después necesitamos crear un archivo con los credenciales de la conexión FTP:

~# vim /root/.netrc

Y añadimos los datos de nuestra conexión FTP con el siguiente formato:

machine www.mi_servidor_ftp.es
login usuario-ftp
password ftp-pass

Cambiamos los permisos de este archivo a 600 (lectura y escritura sólo para el root):

~# chmod 600 /root/.netrc

Necesitamos saber el uid y gid del usuario que tendrá permisos para escribir en la carpeta FTP, normalmente si es el primer usuario será 1000:

~$ id

Crea la carpeta donde se montará el servidor FTP:

~# mkdir /mnt/mi_ftp

Ahora tendremos que añadir una línea al archivo /etc/fstab para que se monte la carpeta al arranque del ordenador (Ajusta el UID y GID a lo que obtuviste en el comando id):

~# vim /etc/fstab

Añade esta línea al final:

curlftpfs#www.mi_servidor_ftp.es /mnt/mi_ftp fuse allow_other,uid=1000,gid=1000,umask=0022 0 0

Ahora ya puedes montar la carpeta:

~# mount -a

Script para hacer copias de seguridad automáticas

Podemos crear un script para automatizar las copias de seguridad de nuestro sitio web (ej. misitio.es)

#!/bin/bash
# mount
curlftpfs -o umask=0777,uid=1000,gid=1000,allow_other ftp://usuario:contraseña@ftp.misitio.es /mnt/misitio
# rsync
rsync --recursive --times --perms --links --delete /mnt/misitio/ /mnt/backups/misitio
# unmount
umount /mnt/misitio

Podemos guardar este script con el nombre de misitio.backup.sh en la carpeta /etc/cron.weekly/ y le damos permisos de ejecución. Por supuesto las carpetas /mnt/misitio (donde montamos la web) y /mntbackups/misitio (donde volcamos la copia de seguridad) deben de existir:

~# mkdir /mnt/misitio
~# mkdir /mnt/backups/misitio
~# cp misitio.backup.sh /etc/cron.weekly/
~# chmod +x /etc/cron.weekly/misitio.backup.sh