Tutorial rsync por ssh sin configurar servicio: Transfiere únicamente lo que cambió

Rsync es una herramienta muy potente para sincronización rápida de directorios y que se puede usar a través de ssh sin requerir ninguna configuración especial en el servidor. Aquí hablaremos de:

  • Tutorial para comenzar a usar rsync inmediatamente. Ejemplos.
  • Utilizar rsync a través de ssh.
  • Enviar únicamente los cambios realizados, para backup por ejemplo.
  • Comprimir la transmisión.
  • Transferir únicamente cambios en archivos grandes.

Rsync es una de las herramientas más útiles que he utilizado en los últimos tiempos y ahora lo uso a diario. Anteriormente siempre lo vi como un misterio que había que montar un servicio rsync para poder sincronizar dos máquinas remotamente. Bueno, recientemente descubrí que se puede transferir usando únicamente ssh.

Supongamos que queremos transferir el contenido de un directorio con sus subdirectorios desde una máquina local a una remota por ssh:
rsync -avz -e ssh /home/usuario/directoriofuente/ usuario@ipremota:/home/usuario/directoriodestino/ 
Ahora estudiemos la instrucción:

  1. La opción a nos dice que va a preservar los permisos y usuarios siempre que pueda.
  2. La opción v nos muestra que está haciendo.
  3. La opción z le dice a rsync que comprima mientras transfiere los archivos. Muy útil si el destino está en Internet.
  4. El comando -e ssh le dice que use ssh para transferir archivos, esto nos evita un servicio rsync y además transmite seguro.
  5. Es importante notar los / al final de los directorios, es necesario colocarlos para asegurarse que copie todo y no confunda las cosas con archivos.
Otras opciones interesantes:
  • --progress: Muestra el progreso mientras se copian archivos grandes.
  • --delete: Borra en el destino los archivos que no encuentre en la fuente. Muy muy útil para mantener directorios perfectamente sincronizados.

Transfiere únicamente lo que cambió


El gran poder del rsync es cuando se quiere transferir por segunda vez. Él únicamente transfiere lo que cambió y más aún si lo que cambió es un archivo muy grande de varios megas hasta gigas él únicamente transfiere las partes del archivo que cambiaron.
Ahora la gran utilidad de esto es poder mantener sincronizadas dos máquinas, para cambios en sitios web por ejemplo, o inclusive programas java ya que se puede extraer el jar en ambas máquinas, transferir y luego volverlos a comprimir. Únicamente se transferirán los cambios.

Al aprender a usar rsync en el día a día nos acelera bastante el hecho de mantener sincronizados los directorios con nuestros discos externos, backups, dropbox, etc

Hasta la próxima...

4 comentarios:

  1. Respuestas
    1. Que bueno. He descubierto algunas casas por ejemplo "-e ssh" es la opción por defecto. Aja pero no todo el mundo lo sabe asi que dejo el título como está.

      Otra cosa es que si conguras ssh para usar certificados se puede poner el rsync en un crontab para hacer backup diario por ejemplo. De repente escribo un post de eso.

      Saludos

      Eliminar
  2. Entonces esta es la combinación matadora: tu articulo sumado a este

    http://miguelcarmona.name/blog/acceso-ssh-sin-contrasena

    :)

    ResponderEliminar
    Respuestas
    1. Así mismo, yo agregaría usar el comando ssh-copy-id para copiar la clave pública al servidor por simplicidad. Bien que se quede ahí ese enlace ya que es un buen complemento a este post.

      Eliminar

- Comenta, comenta, adelante. Así nos animas a seguir el blog -

Búsqueda

CodeWeavers