Rsync

rsync
Desarrollador(es)
Wayne Davidson
http://rsync.samba.org
Información general
Lanzamiento inicial 19 de junio de 1996 (info)
Última versión estable 3.1.2 (info)
21 de diciembre de 2015 (11 meses y 15 días)
Género ?
Sistema operativo Unix, Microsoft Windows
Licencia GNU General Public License
Estado actual En desarrollo
En español Sí / No
[ editar datos en Wikidata]

rsync es una aplicación libre para sistemas de tipo Unix y Microsoft Windows que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos. Una característica importante de rsync no encontrada en la mayoría de programas o protocolos es que la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o mostrar directorios contenidos y copia de archivos, opcionalmente usando compresión y recursión.

Actuando como un daemon de servidor, rsync escucha por defecto el puerto TCP 873, sirviendo archivos en el protocolo nativo rsync o via un terminal remoto como RSH o SSH. En el último caso, el ejecutable del cliente rsync debe ser instalado en el host local y remoto.

rsync se distribuye bajo la licencia GNU General Public License.

Algoritmo

El algoritmo en que se basa rsync fue creado por el programador australiano Andrew Tridgell, permite transmitir eficientemente una estructura (como un archivo) a través de un canal de comunicación cuando el receptor ya tiene una versión diferente de la misma estructura. Su funcionamiento a grandes rasgos es el siguiente:

  • El receptor divide su copia del archivo en bloques de tamaño fijo S, no solapados, y calcula dos sumas de verificación ( checksum) para cada bloque: el hash MD4, y un ‘rolling checksum’ más débil. Luego envía estos checksums al emisor. La versión 30 del protocolo (lanzado con rsync versión 3.0.0) ahora utiliza MD5 en lugar de MD4.[1]
  • El emisor calcula el rolling checksum para cada posible bloque de tamaño S, solapando bloques. Esto se puede hacer eficientemente gracias a una propiedad del rolling checksum: si el rolling checksum de los bytes n a n+S-1 es R, se puede calcular el checksum de los bytes n+1 a n+S a partir del byte n, el byte n+S y R, sin tener que examinar los bytes intermedios. Entonces, si ya se ha calculado el rolling checksum de los bytes 1 a 25, se puede calcular el rolling checksum de los bytes 2 a 26 de manera separada a partir del checksum anterior, y de los bytes 1 y 26.
  • El rolling checksum usado en rsync está basado en el checksum adler-32, de Mark Adler, que es utilizado en zlib y que está basado a su vez en el checksum de Fletcher.
  • El emisor compara entonces sus rolling checksums con los enviados por el receptor para determinar si existen coincidencias. Cuando las encuentra, verifica calculando el checksum MD4 para el bloque propio coincidente y comparando con el del bloque del receptor.
  • Finalizado el proceso el emisor envía únicamente los bloques para los cuales no se encontró ninguna coincidencia, junto con instrucciones para su ensamblado en la versión del receptor. En la práctica, esto crea un archivo idéntico a la copia del emisor. Sin embargo, es en principio posible que la copia del receptor sea distinta en este punto del emisor: esto puede pasar cuando los dos archivos tienen pedazos diferentes con el mismo hash y rolling checksum. Cabe destacar que las posibilidades de que esto suceda son en la práctica extremadamente remotas. Si las versiones del archivo del emisor y receptor tienen muchas secciones en común, la utilidad necesita transmitir pocos datos para sincronizar los archivos.
Other Languages
català: Rsync
čeština: Rsync
dansk: Rsync
Deutsch: Rsync
English: Rsync
فارسی: آرسینک
français: Rsync
italiano: Rsync
日本語: Rsync
Nederlands: Rsync
norsk nynorsk: Rsync
polski: Rsync
português: Rsync
română: Rsync
русский: Rsync
svenska: Rsync
Türkçe: Rsync
українська: Rsync
中文: Rsync