Hace un par de meses volví a trabajar en un proyecto con una antigua cliente. El proyecto es Room Hints y esta desarrollado en Django. Hasta hace unos meses, dicho proyecto no tenía un servidor de pruebas con la misma configuración que producción, pero tuve la suerte de ser yo el encargado de instalar el servidor de pruebas.
Entre los muchos problemas que encontré fue la sincronización de la información entre el servidor de producción y el de pruebas, para poder probar las funcionalidades con la misma información.
El problema más grande, era copiar todos los archivos de imágenes de producción al servidor de pruebas. Normalmente y con cantidades pequeñas de archivos, usaría scp (yo sé que no es la mejor opción, pero si la más rápida para hacer).
En este caso, ya que había que copiar casi medio centener de GB y no erá práctico copiarlo todo, me decidí pro usar rsync aunque nunca he sido su fan, porque lo encontraba complicado.
Para sincronizar entre directorios en los dos servidores yo uso el comando
rsync -azP xxx.xxx.xxx.xxx:path/hacia/carpeta/ /path/local/hacia/carpeta/
Para usar el comando, necesitan reemplazar xxx.xxx.xxx.xxx por la dirección IP de su servidor o el nombre de dominio.
Las opciones son bastante simples.
- La a la usamos para decirle a rsync que copie en modo archivo y de forma incremental los archivos (Sólo va a copiar los archivos que tengan algún cambio o los nuevos)
- La z se usa compresion, para reducir el ancho de banda usado en la transferencia
- La P muestra el progreso en la copia de cada archivo
- La n sirve para simular la copia de archivos y ver la lista de archivos que se copiarían.
También podemos usar el flag --delete si queremos que se borren en local los archivos que se borraron en el servidor remoto, ya que por defecto rsync no lo hace.
Espero que les sea de mucha utilidad esta pequeña explicación sobre como usar rsync para sincronizar carpetas entre servidores.
Comentarios
Los comentarios están deshabilitados.