excluir un directorio de rsync

Posted by alexmoreno on Tue, 13/04/2010 - 21:10

Rsync es una herramienta perfecta para hacer copias de seguridad, incluso de un directorio a otro dentro de la propia máquina. Con Drupal, por ejemplo, o con wordpress, te ahorra muchos quebraderos de cabeza, y te permite tener una copia de seguridad totalmente actualizada e incluso sincronizada via cron (en el caso de servidores linux o *ix en general).

La idea es tener un directorio en un disco montado fuera del sistema, por ejemplo en /mnt/discobackups, y hacer el rsync desde él:

rsync -avz /var/www/dominio.com/httpdocs/ /mnt/discobackups

Facil, verdad? Ahora bien, cuando empezamos a recibir tráfico es importante usar una herramienta o un plugin de cache, como boost en Drupal o su alternativa en Joomla, wordpress y demás. Esto deja mucha basura que no vamos a querer copiarnos a nuestra carpeta de backup, y que de hecho tendríamos que estar sincronizando casi al minuto. Pues bien, la solución es bien fácil, excluimos la carpeta donde el sistema esté escribiendo los datos de "caching". En drupal esta carpeta suele estar almacenada en /RUTA-A-DRUPAL/sites/cache o directamente en /RUTA-A-DRUPAL/cache.

Haremos la magia con la directiva --exclude, de la siguiente forma:

rsync -avz --exclude 'sites/cache' /var/www/dominio.com/httpdocs/ /mnt/discobackups

donde la ruta 'sites/cache' es relativa al directorio que estemos sincronizando, en este caso

/var/www/dominio.com/httpdocs/