rsync es una utilidad para transferir y sincronizar archivos de manera eficiente entre una computadora y un disco duro externo y entre computadoras en red mediante la comparación de los tiempos y tamaños de modificación de los archivos. [3] Se encuentra comúnmente en sistemas operativos similares a Unix . Rsync está escrito en C como una aplicación de un solo subproceso . [4] El algoritmo rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib se puede utilizar para la compresión de datos adicional , [3] y SSH o stunnel se pueden utilizar para seguridad. Rsync es la función que se utiliza normalmente para sincronizar repositorios de software en sitios espejo que utilizan los sistemas de gestión de paquetes . [5] [6]
Autor (es) original (es) | Andrew Tridgell y Paul Mackerras |
---|---|
Desarrollador (es) | Wayne Davison |
Versión inicial | 19 de junio de 1996 [1] |
Lanzamiento estable | 3.2.3 (6 de agosto de 2020 [±] [2] | )
Repositorio | |
Escrito en | C |
Plataforma | Multiplataforma |
Tipo | Transferencia de datos , respaldo diferencial |
Licencia | GPLv3 |
Sitio web | rsync |
Rsync se utiliza normalmente para sincronizar archivos y directorios entre dos sistemas diferentes. Por ejemplo, si el comando rsync local-file user@remote-host:remote-file
se ejecuta, rsync usar SSH para conectarse como user
a remote-host
. [7] Una vez conectado, invocará el rsync del host remoto y luego los dos programas determinarán qué partes del archivo local deben transferirse para que el archivo remoto coincida con el local.
Rsync también puede operar en modo demonio (rsyncd), sirviendo y recibiendo archivos en el protocolo nativo rsync (usando la sintaxis "rsync: //").
Tiene licencia de GNU General Public License . [8] [9] [10] [11]
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 bajo Berkeley Software Distribution . [12] Tridgell analiza el diseño, la implementación y el rendimiento de rsync en los capítulos 3 al 5 de su doctorado. tesis en 1999. [13] Actualmente es mantenida por Wayne Davison. [14]
Debido a la flexibilidad, velocidad y capacidad de secuencia de comandos de rsync
, se ha convertido en una utilidad estándar de Linux, incluida en todas las distribuciones populares de Linux. Ha sido portado a Windows (vía Cygwin , Grsync o SFU [15] ), FreeBSD , [16] NetBSD , [17] OpenBSD , [18] y macOS .
Usar
Similar a cp, rcpy scp, rsync
requiere la especificación de una fuente y de un destino, de los cuales al menos uno debe ser local. [19]
Sintaxis genérica:
rsync [ OPCIÓN ] … SRC… [ USUARIO @ ] HOST: DESTrsync [ OPCIÓN ] … [ USUARIO @ ] HOST: SRC [ DEST ]
donde SRC es el archivo o directorio (o una lista de varios archivos y directorios) para copiar, DEST es el archivo o directorio para copiar y los corchetes indican parámetros opcionales.
rsync
puede sincronizar clientes Unix con un servidor Unix central usando rsync
/ ssh
y cuentas Unix estándar. Se puede utilizar en entornos de escritorio, por ejemplo, para sincronizar de manera eficiente archivos con una copia de seguridad en un disco duro externo. Una utilidad de programación, como por ejemplo, cron
puede realizar tareas como la rsync
duplicación automática basada en cifrado entre varios hosts y un servidor central.
Ejemplos de
Una línea de comando para reflejar FreeBSD podría verse así:
$ rsync -avz --delete ftp4.de.FreeBSD.org::FreeBSD/ / pub / FreeBSD / [20]
El servidor HTTP Apache solo admite rsync para actualizar los espejos.
$ rsync -avz --delete --safe-links rsync.apache.org::apache-dist / path / to / mirror [21]
La forma preferida (y más sencilla) de reflejar el sitio web de PuTTY en el directorio actual es usar rsync.
$ rsync -auH rsync: //rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/. [22]
Una forma de imitar las capacidades de Time Machine (macOS) ; consulte también tym . [23]
$ fecha = $ ( fecha "+% 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í, entonces 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 / actual
Haga una copia de seguridad completa del directorio raíz del sistema: [24]
$ rsync -avAXHS --progress --exclude = { "/ dev / *" , "/ proc / *" , "/ sys / *" , "/ tmp / *" , "/ run / *" , "/ mnt / * " , " / media / * " , " / perdido + encontrado " } / / ruta / a / copia de seguridad / carpeta
Conexión
Un proceso rsync opera comunicándose con otro proceso rsync, un remitente y un receptor. Al inicio, un cliente rsync se conecta a un proceso de pares. Si la transferencia es local (es decir, entre sistemas de archivos montados en el mismo host), el par se puede crear con fork, después de configurar las tuberías adecuadas para la conexión. Si está involucrado un host remoto, rsync inicia un proceso para manejar la conexión, generalmente Secure Shell . Tras la conexión, se emite un comando para iniciar un proceso rsync en el host remoto, que utiliza la conexión así establecida. Como alternativa, si el host remoto ejecuta un demonio rsync, los clientes rsync pueden conectarse abriendo un socket en el puerto TCP 873, posiblemente usando un proxy. [25]
Rsync tiene numerosas opciones de línea de comandos y archivos de configuración para especificar shells, opciones y comandos alternativos, posiblemente con la ruta completa y los números de puerto. Además de usar shells remotos, la tunelización se puede usar para que los puertos remotos aparezcan como locales en el servidor donde se ejecuta un demonio rsync. Esas posibilidades permiten ajustar los niveles de seguridad al estado del arte, mientras que un demonio rsync ingenuo puede ser suficiente para una red local.
Algoritmo
Determinar qué archivos enviar
De forma predeterminada, rsync determina qué archivos difieren entre los sistemas de envío y recepción al verificar la hora de modificación y el tamaño de cada archivo. Si el tiempo o el tamaño es diferente entre los sistemas, transfiere el archivo del sistema de envío al sistema de recepción. Como esto solo requiere leer la información del directorio de archivos, es rápido, pero se perderán modificaciones inusuales que no cambian ninguna. [3]
Rsync realiza una verificación más lenta pero completa si se invoca con --checksum
. Esto fuerza una comparación de suma de comprobación completa en cada archivo presente en ambos sistemas. A menos que se produzcan colisiones de suma de comprobación poco frecuentes , esto evita el riesgo de perder archivos modificados a costa de leer todos los archivos presentes en ambos sistemas.
Determinar qué partes de un archivo han cambiado
La utilidad rsync utiliza un algoritmo inventado por el programador informático australiano Andrew Tridgell para transmitir de manera eficiente una estructura (como un archivo) a través de un enlace de comunicaciones cuando la computadora receptora ya tiene una versión similar, pero no idéntica, de la misma estructura. [26]
El destinatario divide su copia del archivo en fragmentos y calcula dos sumas de comprobación para cada fragmento: el hash MD5 y una " suma de comprobación continua " más débil pero más fácil de calcular . [27] Envía estas sumas de comprobación al remitente.
El remitente calcula la suma de comprobación para cada sección móvil en su versión del archivo que tiene 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 completos del tamaño del fragmento, el remitente calcula la suma de control para todas las secciones que comienzan en cualquier dirección. Si dicha suma de verificación continua calculada 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 de destinatarios. En este caso, el remitente usa el hash MD5 computacionalmente más costoso para verificar que la sección del remitente y el fragmento del destinatario sean iguales. Tenga en cuenta que la sección del remitente no debe estar en la misma dirección de inicio que el fragmento del destinatario. Esto permite una transmisión eficiente de archivos que se diferencian por inserciones y eliminaciones. [28] El remitente envía al destinatario las partes de su archivo que no coinciden, junto con información sobre dónde fusionar los bloques existentes en la versión del destinatario. Esto hace que las copias sean idénticas.
La suma de comprobación continua utilizada en rsync se basa en la suma de comprobación adler-32 de Mark Adler , que se utiliza en zlib , y se basa en sí misma en la suma de comprobación de Fletcher .
Si las versiones del archivo del remitente y del destinatario tienen muchas secciones en común, la utilidad necesita transferir relativamente pocos datos para sincronizar los archivos. Si se utilizan algoritmos de compresión de datos típicos , los archivos que son similares cuando no están comprimidos pueden ser muy diferentes cuando están comprimidos y, por lo tanto, será necesario transferir el archivo completo. Algunos programas de compresión, como gzip , proporcionan un modo "rsyncable" especial que permite sincronizar estos archivos de manera eficiente, asegurando que los cambios locales en el archivo sin comprimir solo produzcan cambios locales en el archivo comprimido.
Rsync admite otras funciones clave que ayudan significativamente en la transferencia de datos o en la copia de seguridad. Incluyen compresión y descompresión de datos bloque a bloque usando zlib , y soporte para protocolos como ssh y stunnel .
Variaciones
La La utilidad rdiff usa el algoritmo rsync para generararchivos deltacon la diferencia del archivo A al archivo B (como la utilidaddiff, pero en un formato delta diferente). Luego, el archivo delta se puede aplicar al archivo A, convirtiéndolo en el archivo B (similar a lautilidad deparche). rdiff funciona bien conarchivos binarios.
El script rdiff-backup mantiene un espejo de respaldo de un archivo o directorio, ya sea de forma local o remota a través de la red en otro servidor. rdiff-backup almacena deltas rdiff incrementales con la copia de seguridad, con lo que es posible recrear cualquier punto de copia de seguridad. [29]
La biblioteca librsync utilizada por rdiff es una implementación independiente del algoritmo rsync. No utiliza el protocolo de red rsync y no comparte ningún código con la aplicación rsync. [30] Lo utilizan Dropbox , rdiff-backup, duplicity y otras utilidades. [30]
La biblioteca acrosync es una implementación multiplataforma independiente del protocolo de red rsync. [31] A diferencia de librsync, es compatible con rsync (protocolo versión 29 o 30). Se publica bajo la Licencia Pública Recíproca y es utilizado por el software comercial rsync Acrosync . [32]
La duplicidad es una variación de rdiff-backup que permite realizar copias de seguridad sin la cooperación del servidor de almacenamiento, como ocurre con los servicios de almacenamiento simples como Amazon S3 . Funciona generando los hashes para cada bloque por adelantado, cifrándolos y almacenándolos en el servidor. Luego los recupera cuando realiza una copia de seguridad incremental. El resto de los datos también se almacenan encriptados por motivos de seguridad.
A partir de macOS 10.5 y posteriores, hay un conmutador -E
o especial --extended-attributes
que permite retener gran parte de los metadatos del archivo HFS al sincronizar entre dos máquinas que admiten esta función. Esto se logra transmitiendo el Resource Fork junto con el Data Fork. [33]
zsync es una herramienta similar a rsync optimizada para muchas descargas por versión de archivo. zsync es utilizado por distribuciones de Linux como Ubuntu [34] para distribuir archivos de imagen ISO beta que cambian rápidamente . zsync utiliza el protocolo HTTP y archivos .zsync con hash rodante calculado previamente para minimizar la carga del servidor y permitir la transferencia de diferencias para la optimización de la red.
Rclone es una herramienta de código abierto inspirada en rsync que se centra en la nube y otros tipos de almacenamiento de alta latencia. Es compatible con más de 50 proveedores diferentes y proporciona una interfaz similar a rsync para almacenamiento en la nube. [35]
aplicaciones rsync
Programa | Sistema operativo | Software libre | Descripción | ||
---|---|---|---|---|---|
Linux | Mac OS | Ventanas | |||
Atrás en el tiempo | sí | No | No | sí | |
BackupAssist | No | No | sí | No | Espejo directo o con historial, VSS. |
cwRsync | No | No | sí | No | Basado en Cygwin . |
Grsync | sí | sí | Sí [36] | sí | Interfaz gráfica para rsync. |
GS RichCopy 360 | No | No | Sí [37] | No | Diseñado solo para estaciones de trabajo y servidores MS Windows con soporte VSS. |
LuckyBackup | sí | sí | sí | sí | |
rclone | sí | sí | sí | sí | Inspirado en rsync y compatible con más de 50 proveedores de almacenamiento en la nube y otros servicios de almacenamiento de alta latencia. |
rsnapshot | sí | sí | No | sí | Una utilidad de instantánea del sistema de archivos basada en rsync. |
Sincronizar | sí | sí | sí | No | Utiliza rsync sobre HTTP (S). |
Ver también
- casync
- Compresión diferencial remota
- Lista de números de puerto TCP y UDP
Referencias
- ↑ a b Tridgell, Andrew (19 de junio de 1996). "Primera versión de rsync - reemplazo de rcp" . Grupo de noticias : comp.os.linux.announce . Usenet: [email protected] . Archivado desde el original el 8 de noviembre de 2011 . Consultado el 19 de julio de 2007 .
- ^ "NOTICIAS para rsync 3.2.3 (6 de agosto de 2020)" . rsync . 6 de agosto de 2020 . Consultado el 19 de octubre de 2020 .
- ^ a b c "rsync (1) - página de manual de Linux" . linux.die.net . Archivado desde el original el 1 de enero de 2017 . Consultado el 2 de febrero de 2017 .
- ^ "Copia archivada" . Archivado desde el original el 6 de agosto de 2019 . Consultado el 18 de diciembre de 2019 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ "Uso y ejecución de espejos" . Proyecto GNU. Archivado desde el original el 16 de abril de 2020 . Consultado el 15 de abril de 2020 .
- ^ "Cómo crear espejos públicos para CentOS" . Wiki de CentOS. Archivado desde el original el 1 de abril de 2020 . Consultado el 15 de abril de 2020 .
- ^ "Usando Rsync y SSH" . Troy.jdmz.net . Consultado el 18 de agosto de 2014 .
- ^ Sayood, Khalid (18 de diciembre de 2002). Manual de compresión sin pérdidas . ISBN 9780080510491. Consultado el 18 de agosto de 2014 .
- ^ Almacenamiento en caché y distribución de contenido web: actas del 8º Taller Internacional . Springer Science & Business Media. 2004. p. 316 . Consultado el 18 de agosto de 2014 , a través de Internet Archive .
rsync ampliamente utilizado.
- ^ Rasch, David; Quemaduras, Randal; In-Place Rsync: Sincronización de archivos para dispositivos móviles e inalámbricos Archivado el 13 de abril de 2016 en Wayback Machine , Departamento de Ciencias de la Computación, Universidad Johns Hopkins
- ^ Dempsey, Bert J .; Weiss, Debra (30 de abril de 1999). "Hacia un mecanismo de replicación escalable y eficiente para el proyecto I2-DSI". Informe técnico TR-1999-01 . CiteSeerX 10.1.1.95.5042 .
- ^ "Página del manual Rdist" .
- ^ Tridgell, Andrew; Efficient Algorithms for Sorting and Synchronization , febrero de 1999, consultado el 29 de septiembre de 2009
- ^ "rsync" . Archivado desde el original el 27 de noviembre de 2014 . Consultado el 28 de noviembre de 2014 .
- ^ "Almacén de herramientas" . Comunidad SUA . Archivado desde el original el 6 de abril de 2013.
- ^ "Puertos FreeBSD" . Consultado el 24 de octubre de 2016 .
- ^ "Puertos NetBSD" . Archivado desde el original el 25 de octubre de 2016 . Consultado el 24 de octubre de 2016 .
- ^ "Puertos OpenBSD" . Consultado el 24 de octubre de 2016 .
- ^ Vea el archivo README Archivado el 10 de diciembre de 2007 en Wayback Machine.
- ^ "Cómo duplicar FreeBSD (con rsync)" . Freebsd.org . Consultado el 18 de agosto de 2014 .
- ^ "Cómo convertirse en un espejo de la Apache Software Foundation" . Apache.org. Archivado desde el original el 21 de agosto de 2014 . Consultado el 18 de agosto de 2014 .
- ^ "Espejos del sitio web PuTTY: directrices de duplicación" . Chiark.greenend.org.uk. 20 de diciembre de 2007. Archivado desde el original el 19 de agosto de 2014 . Consultado el 18 de agosto de 2014 .
- ^ "Rsync configurado para ejecutarse como Time Machine" . Blog.interlinked.org. Archivado desde el original el 15 de noviembre de 2007 . Consultado el 18 de agosto de 2014 .
- ^ "Copia de seguridad completa del sistema con rsync" . wiki.archlinux.org. Archivado desde el original el 11 de febrero de 2015 . Consultado el 15 de diciembre de 2014 .
- ^ "Cómo funciona Rsync" . Archivado desde el original el 16 de diciembre de 2016 . Consultado el 24 de enero de 2017 .
- ^ "RSync - Descripción general" . Archivado desde el original el 10 de abril de 2017 . Consultado el 9 de abril de 2017 .
- ^ NOTICIAS para rsync 3.0.0 Archivado el 20 de marzo de 2008 en Wayback Machine (1 de marzo de 2008)
- ^ Norman Ramsey. El algoritmo Rsync
- ^ rdiff-backup
- ^ a b Pool, Martín; "librsync" Archivado el 9 de diciembre de 2013 en Wayback Machine.
- ^ Chen, Gilbert. "biblioteca acrosync" . github.com. Archivado desde el original el 10 de febrero de 2017 . Consultado el 22 de junio de 2016 .
- ^ "acrosync.com" . Archivado desde el original el 20 de diciembre de 2019 . Consultado el 29 de julio de 2020 .
- ^ "Biblioteca de desarrolladores de Mac" . Developer.apple.com. Archivado desde el original el 26 de septiembre de 2012 . Consultado el 18 de agosto de 2014 .
- ^ "Imagen de Cd Zsync" . ubuntu.com . Consultado el 6 de enero de 2015 .
- ^ Craig-Wood, Nick. "Visión general de los sistemas de almacenamiento en la nube" . rclone.org . Archivado desde el original el 4 de octubre de 2017 . Consultado el 10 de julio de 2017 .
- ^ "Grsync para Windows" . SourceForge . Archivado desde el original el 24 de marzo de 2019 . Consultado el 24 de marzo de 2019 .
- ^ "GS RichCopy 360 Enterprise - Software de sincronización o copia rápida de archivos y rsync para Windows" . www.gurusquad.com .
enlaces externos
- Página web oficial
- algoritmo rsync - 1998-11-09
- Ejemplos de rsync (Cómo utilizar rsync)