Articulo de referencia

rsync

"},"developer":{"wt":"Andrew Tridgell"},"released":{"wt":"{{Start date and age|1996|06|19}} {{Cite newsgroup |url=http://groups.google.com/group/comp.os.linux.announce/msg/3bb93...

rsync (sincronización remota) es una utilidad para transferir y sincronizar archivos entre un ordenador y una unidad de almacenamiento, y entre ordenadores en red , comparando las fechas de modificación y los tamaños de los archivos. [ 7 ]

El algoritmo rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib puede utilizarse para una compresión de datos adicional . [ 7 ]

Una aplicación de rsync es la sincronización de repositorios de software en sitios espejo utilizados por sistemas de gestión de paquetes . [ 8 ]

Los desarrolladores de rsync han sido criticados por el uso de herramientas de codificación asistidas por IA en el ciclo de desarrollo , lo que ha provocado errores y una reducción de la funcionalidad del software.

Historia

Andrew Tridgell y Paul Mackerras escribieron el rsync original, que se anunció por primera vez el 19 de junio de 1996. [ 1 ] Es similar en función e invocación a rdist ( rdist -c), creado por Ralph Campbell en 1983 y lanzado como parte de 4.3BSD . [ 9 ] Tridgell analiza el diseño, la implementación y el rendimiento de rsync en los capítulos 3 a 5 de su tesis doctoral de 1999. [ 10 ] Wayne Davison se convirtió en el principal mantenedor en 2002. En abril de 2024, Davison anunció que Andrew Tridgell había regresado al desarrollo y mantenimiento activo de rsync después de que Davison solicitara ayuda debido a su tiempo limitado. Desde entonces, rsync ha sido mantenido bajo la organización RsyncProject, con Tridgell como mantenedor del proyecto. [ 11 ]

Se ha portado a Windows (a través de Cygwin , Grsync o SFU [ 12 ] ), FreeBSD , [ 13 ] NetBSD , [ 14 ] OpenBSD , [ 15 ] y macOS .

Ejemplos

Una línea de comandos para replicar FreeBSD podría verse así: [ 16 ]

$ rsync -avz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/ 

El servidor HTTP Apache admite rsync únicamente para actualizar réplicas. [ 17 ]

$ rsync -avz --delete --safe-links rsync.apache.org::apache-dist /ruta/al/espejo 

La forma preferida (y más sencilla) de replicar un sitio web de PuTTY en el directorio actual es usar rsync. [ 18 ]

$ rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ . 

Una forma de imitar las capacidades de Time Machine (macOS) ; [ 19 ]

$ date = $( date "+%FT%H-%M-%S" ) # rsync interpreta ":" como separador entre host y puerto (es decir, host:puerto), por lo que no podemos usar %T o %H:%M:%S aquí, así que usamos %H-%M-%S $ rsync -aP --link-dest = $HOME /Backups/current /path/to/important_files $HOME /Backups/back- $date $ ln -nfs $HOME /Backups/back- $date $HOME /Backups/current 

Realiza una copia de seguridad completa del directorio raíz del sistema: [ 20 ]

$ rsync -avaXHS --progress --exclude ={ "/dev/*" , "/proc/*" , "/sys/*" , "/tmp/*" , "/run/*" , "/mnt/*" , "/media/*" , "/lost+found" } / /ruta/a/la/carpeta/de/copia/de/seguridad 

Elimina todos los archivos y directorios dentro de un directorio de forma extremadamente rápida:

$ rsync -a --delete /ruta/al/directorio/vacío /ruta/al/directorio/vacío # Crea un directorio vacío en algún lugar, que es la primera ruta, y la segunda ruta es el directorio que deseas vaciar.

Algoritmo

Determinar qué archivos enviar

Por defecto, rsync determina qué archivos difieren entre los sistemas emisor y receptor comprobando la fecha de modificación y el tamaño de cada archivo. Si la fecha o el tamaño difieren entre los sistemas, transfiere el archivo del sistema emisor al receptor. Como esto solo requiere leer la información del directorio de archivos, es rápido, pero no detectará modificaciones inusuales que no afecten a ninguno de los dos. [ 7 ]

Determinar qué partes de un archivo han cambiado

El destinatario divide su copia del archivo en fragmentos y calcula dos sumas de verificación para cada fragmento: el hash MD5 y una " suma de verificación rodante " más débil pero más fácil de calcular. [ 21 ] Envía estas sumas de verificación al remitente.

El remitente calcula la suma de verificación para cada sección móvil en su versión del archivo que tenga el mismo tamaño que los fragmentos utilizados por el destinatario. Mientras que el destinatario calcula la suma de verificación solo para los fragmentos que comienzan en múltiplos enteros del tamaño del fragmento, el remitente la calcula para todas las secciones que comienzan en cualquier dirección. Si alguna de estas sumas de verificación móviles calculadas por el remitente coincide con una suma de verificación calculada por el destinatario, entonces esta sección es candidata para no transmitir el contenido de la sección, sino solo la ubicación en el archivo del destinatario. En este caso, el remitente utiliza el hash MD5, que requiere mayor capacidad de cálculo, para verificar que la sección del remitente y el fragmento del destinatario sean iguales. Cabe señalar que la sección en el remitente puede no estar en la misma dirección de inicio que el fragmento en el destinatario. Esto permite la transmisión eficiente de archivos que difieren por inserciones y eliminaciones. [ 22 ]

Crítica

Cuando rsync se actualizó a la versión 3.4.3 el 20 de mayo de 2026, varios usuarios informaron que no podían realizar copias de seguridad incrementales de archivos. Estos usuarios descubrieron que, desde rsync 3.4.1, docenas de confirmaciones de Git habían sido realizadas por "tridge y claude", con Claude de Anthropic siendo utilizado en el proceso de codificación. Esto llevó a un usuario a publicar un problema en GitHub llamado Please Do Not Vibe Fuck Up This Software , que se extendió a otros sitios de redes sociales como Reddit , lo que generó debates sobre la aceptación de código generado por IA en infraestructuras críticas de código abierto. [ 23 ]

En respuesta, Tridge publicó una entrada de blog titulada «rsync y la indignación» , en la que afirma haber utilizado IA para añadir conjuntos de pruebas y «técnicas de endurecimiento de defensa en profundidad» al código. [ 24 ] Tridge también afirmó que openrsync de OpenBSD , una implementación alternativa de rsync a la que algunos usuarios planeaban cambiarse, no supera el conjunto de pruebas asistido por IA; esta afirmación fue criticada por el editor de OSNews, Thom Holwerda, por ser «infantil e innecesaria, y denota inseguridad». [ 23 ] [ 25 ]

Variaciones

ElLa utilidad rdiff utiliza el algoritmo rsync para generararchivos deltacon la diferencia entre el archivo A y el archivo B (similar a la utilidaddiff, pero en un formato delta diferente). El archivo delta se puede aplicar al archivo A, convirtiéndolo en el archivo B (similar a lapatch). rdiff funciona bien conarchivos binarios.

El script rdiff-backup mantiene una copia de seguridad de un archivo o directorio, ya sea localmente o de forma remota a través de la red en otro servidor. rdiff-backup almacena deltas incrementales de rdiff con la copia de seguridad, lo que permite recrear cualquier punto de copia de seguridad. [ 26 ]

La biblioteca librsync utilizada por rdiff es una implementación independiente del algoritmo rsync. No utiliza el protocolo de red rsync ni comparte código con la aplicación rsync. [ 27 ] Es utilizada por Dropbox , rdiff-backup, duplicity y otras utilidades. [ 27 ]

La biblioteca acrosync es una implementación independiente y multiplataforma del protocolo de red rsync. [ 28 ] A diferencia de librsync, es compatible con rsync (versión de protocolo 29 o 30). Se distribuye bajo la Licencia Pública Recíproca y es utilizada por el software comercial rsync Acrosync . [ 29 ]

El software de copia de seguridad Duplicity , escrito en Python, permite realizar copias de seguridad incrementales con servicios de almacenamiento sencillos como el sistema de archivos local, SFTP , Amazon S3 y muchos otros. Utiliza librsync para generar datos delta a partir de las firmas de las versiones anteriores de los archivos, cifrándolos con GPG y almacenándolos en el servidor. Por motivos de rendimiento, se utiliza un directorio de archivo local para almacenar en caché las firmas de la cadena de copias de seguridad, pero se pueden volver a descargar desde el servidor si es necesario.

A partir de macOS 10.5 y versiones posteriores, existe una opción especial -Eque --extended-attributespermite conservar gran parte de los metadatos de los archivos HFS+ al sincronizar entre dos máquinas compatibles con esta función. Esto se logra transmitiendo la bifurcación de recursos junto con la bifurcación de datos. [ 30 ]

La utilidad openrsync es una reimplementación con licencia BSD del rsync original dirigida a OpenBSD , pero también portable a Linux y macOS. [ 31 ] [ 32 ]

zsync es una herramienta similar a rsync, optimizada para múltiples descargas por versión de archivo. Distribuciones de Linux como Ubuntu [ 33 ] utilizan zsync para distribuir archivos de imagen ISO beta que cambian rápidamente . zsync utiliza el protocolo HTTP y archivos .zsync con hash rodante precalculado para minimizar la carga del servidor y, al mismo tiempo, permitir la transferencia de diferencias para la optimización de la red. [ 34 ]

Rclone es una herramienta de código abierto inspirada en rsync que se centra en la nube y otros sistemas de almacenamiento de alta latencia. Admite más de 50 proveedores diferentes y proporciona una interfaz similar a la de rsync para el almacenamiento en la nube. [ 35 ] Sin embargo, Rclone no admite sumas de verificación móviles para la sincronización parcial de archivos (diferencias binarias) porque los proveedores de almacenamiento en la nube no suelen ofrecer esta función y Rclone evita almacenar metadatos adicionales. [ 36 ]

aplicaciones rsync

Véase también

Notas

  1. GPL-3.0-o-posterior desde el 10-07-2007, pre-lanzamiento 3.0.0pre1 el 05-10-2007, estable 3.0.0 el 01-03-2008.
  2. GPL-3.0-only desde el 07/07/2007 hasta el 09/07/2007.
  3. GPL-2.0-only desde el 4 de febrero de 2007 hasta el 7 de julio de 2007.
  4. GPL-2.0 o posterior desde el 16/06/1996 hasta el 31/01/2007, versiones 0.1 a 2.6.9.

Referencias

  1. 1 2 3 Tridgell, Andrew (19 de junio de 1996). "Primera versión de rsync: reemplazo de rcp" . Grupo de noticias : comp.os.linux.announce . Usenet: cola-liw-835153950-21793-0@liw.clinet.fi . Archivado del original el 8 de noviembre de 2011. Recuperado el 19 de julio de 2007 .  
  2. "Versión 3.4.4" . 8 de junio de 2026. Consultado el 8 de junio de 2026 .
  3. "Noticias" .
  4. "Ajustar un poco más el texto de la licencia" .
  5. "Licencia de rsync" .
  6. "Licencia de rsync" .
  7. 1 2 3 "rsync(1) – Página man de Linux" . linux.die.net . Archivado del original el 1 de enero de 2017. Consultado el 2 de febrero de 2017 .
  8. "Uso y funcionamiento de espejos" . Proyecto GNU. Archivado del original el 16 de abril de 2020. Consultado el 15 de abril de 2020 .
  9. "rdist(1)" .
  10. Tridgell, Andrew; Algoritmos eficientes para la ordenación y la sincronización , febrero de 1999, consultado el 29 de septiembre de 2009.
  11. "Tridge regresa a rsync" . LWN.net . 17 de abril de 2024. Consultado el 30 de mayo de 2026 .
  12. "Almacén de herramientas" . Comunidad SUA . Archivado del original el 6 de abril de 2013.
  13. "Puertos de FreeBSD" . Consultado el 24 de octubre de 2016 .
  14. "Puertos de NetBSD" . Archivado del original el 25 de octubre de 2016. Consultado el 24 de octubre de 2016 .
  15. "Puertos de OpenBSD" . Consultado el 24 de octubre de 2016 .
  16. "Cómo replicar FreeBSD (con rsync)" . Freebsd.org . Consultado el 18 de agosto de 2014 .
  17. "Cómo convertirse en un espejo para la Apache Software Foundation" . Apache.org. Archivado del original el 21 de agosto de 2014. Consultado el 18 de agosto de 2014 .
  18. "Películas espejo de sitios web PuTTY: Directrices para la duplicación de páginas" . Chiark.greenend.org.uk. 20 de diciembre de 2007. Archivado del original el 19 de agosto de 2014. Consultado el 18 de agosto de 2014 .
  19. "Rsync configurado para funcionar como Time Machine" . Blog.interlinked.org. Archivado del original el 15 de noviembre de 2007. Consultado el 18 de agosto de 2014 .
  20. "Copia de seguridad completa del sistema con rsync" . wiki.archlinux.org. Archivado del original el 11 de febrero de 2015. Consultado el 15 de diciembre de 2014 .
  21. "Novedades sobre rsync 3.0.0" . 1 de marzo de 2008. Archivado del original el 20 de marzo de 2008.
  22. Norman Ramsey. "El algoritmo Rsync" .
  23. 1 2 Page, Carly (4 de junio de 2026) .'Por favor, no arruines este software': Copias de seguridad defectuosas provocan una disputa sobre la codificación de IA en un proyecto rsync" . theregister . Consultado el 9 de junio de 2026 .
  24. Brockmeier, Joe (3 de junio de 2026). "Tridgell: rsync y la indignación" . LWN.net . Consultado el 9 de junio de 2026 .
  25. Holwerda, Thom (3 de junio de 2026). "Rsync abre las compuertas, se producen regresiones y errores – OSnews" . www.osnews.com . Archivado del original el 3 de junio de 2026. Recuperado el 9 de junio de 2026 .
  26. rdiff-backup
  27. 1 2 Pool, Martin; "librsync" Archivado el 9 de diciembre de 2013 en Wayback Machine
  28. Chen, Gilbert. "acrosync-library" . github.com. Archivado del original el 10 de febrero de 2017. Recuperado el 22 de junio de 2016 .
  29. "acrosync.com" . Archivado del original el 20 de diciembre de 2019. Consultado el 29 de julio de 2020 .
  30. "Biblioteca para desarrolladores de Mac" . Developer.apple.com. Archivado del original el 26 de septiembre de 2012. Consultado el 18 de agosto de 2014 .
  31. "openrsync/README.md en 48070e68d73f67d6922b2ffc8c2dee9754e659c6 · kristapsdz/openrsync" . Actualmente es portable en Linux (glibc y musl), FreeBSD, NetBSD, Mac OS X y OmniOS.{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace )
  32. "Openrsync: Una implementación de rsync, por el equipo de OpenBSD | Hacker News" . news.ycombinator.com . Archivado del original el 31 de mayo de 2026. Consultado el 2 de junio de 2026 .
  33. "Imagen de CD de Zsync" . ubuntu.com . Consultado el 6 de enero de 2015 .
  34. Sitio web de zsync
  35. Craig-Wood, Nick. "Descripción general de los sistemas de almacenamiento en la nube" . rclone.org . Archivado del original el 4 de octubre de 2017. Consultado el 10 de julio de 2017 .
  36. Craig-Wood, Nick. "Preguntas frecuentes sobre Rclone" . rclone.org . Archivado del original el 10 de mayo de 2022. Consultado el 13 de mayo de 2022 .
  37. "Grsync para Windows" . SourceForge . 12 de julio de 2016. Archivado del original el 24 de marzo de 2019. Consultado el 24 de marzo de 2019 .
  • Sitio web oficialEdita esto en Wikidata
  • Algoritmo Rsync – 9 de noviembre de 1998
  • Tesis doctoral que introduce el algoritmo Rsync.
  • Ejemplos de Rsync en Linux (Cómo usar rsync)