rsync - rsync

rsync
Newrsynclogo.png
Autor (es) original (es) Andrew Tridgell y Paul Mackerras
Desarrollador (es) Wayne Davison
Versión inicial 19 de junio de 1996 ; Hace 25 años ( 1996-06-19 )
Lanzamiento estable
3.2.3  Edita esto en Wikidata / 7 de agosto de 2020 ; Hace 14 meses ( 7 de agosto de 2020 )
Versión de vista previa
3.2.3pre1  Edita esto en Wikidata / 28 de julio de 2020 ; Hace 14 meses ( 28 de julio de 2020 )
Repositorio
Escrito en C
Plataforma Multiplataforma
Escribe Transferencia de datos , respaldo diferencial
Licencia 2007: GPL-3.0-o-posterior
2007: GPL-3.0-only
2007: GPL-2.0-only
1996: GPL-2.0-or-later
Sitio web rsync .samba .org Edita esto en Wikidata

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. Se encuentra comúnmente en sistemas operativos similares a Unix y está bajo la licencia GPL-3.0 o posterior .

Rsync está escrito en C como una aplicación de un solo subproceso . El algoritmo rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib puede usarse para compresión de datos adicional , y SSH o stunnel pueden usarse 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 . También es una de las formas más rápidas de eliminar una gran cantidad de archivos con una aplicación binaria, especialmente en comparación con las aplicaciones estándar de Linux rm y find .

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-filese ejecuta, rsync usar SSH para conectarse como usera remote-host. 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: //").

Historia

Andrew Tridgell y Paul Mackerras escribieron el rsync original, que se anunció por primera vez el 19 de junio de 1996. Es similar en función e invocación a rdist ( rdist -c), creado por Ralph Campbell en 1983 y lanzado bajo Berkeley Software Distribution . Tridgell analiza el diseño, la implementación y el rendimiento de rsync en los capítulos 3 al 5 de su Ph.D. tesis en 1999. Actualmente es mantenida por Wayne Davison.

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. Se ha portado a Windows (a través de Cygwin , Grsync o SFU ), FreeBSD , NetBSD , OpenBSD y macOS .

Usar

Similar a cp, rcpy scp, rsyncrequiere la especificación de una fuente y de un destino, de los cuales al menos uno debe ser local.

Sintaxis genérica:

rsync [OPTION] … SRC … [USER@]HOST:DEST
rsync [OPTION][USER@]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.

rsyncpuede sincronizar clientes Unix con un servidor Unix central usando rsync/ sshy 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, cronpuede realizar tareas como la rsyncduplicació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/

El servidor HTTP Apache admite rsync solo para actualizar espejos.

$ rsync -avz --delete --safe-links rsync.apache.org::apache-dist /path/to/mirror

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/ .

Una forma de imitar las capacidades de Time Machine (macOS) .

$ date=$(date "+%FT%H-%M-%S") # rsync interprets ":" as separator between host and port (i. e. host:port), so we cannot use %T or %H:%M:%S here, so we use %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

Haga una copia de seguridad completa del directorio raíz del sistema:

 $ rsync -avAXHS --progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup/folder

Elimine todos los archivos y directorios, dentro de un directorio, extremadamente rápido:

# Make an empty directory somewhere, which is the first path, and the second path is the directory you want to empty.
$ rsync -a --delete /path/to/empty/dir /path/to/dir/to/empty

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.

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 de las dos.

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.

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 . 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 del destinatario. 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 es posible que la sección del remitente no esté 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. Luego, 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 las transferencias 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

los 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.

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. Lo utilizan Dropbox , rdiff-backup, duplicity y otras utilidades.

La biblioteca acrosync es una implementación multiplataforma independiente del protocolo de red rsync. 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 .

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 -Eo especial --extended-attributesque 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.

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 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.

aplicaciones rsync

Programa Sistema operativo Software libre Descripción
Linux Mac OS Ventanas
Atrás en el tiempo No No
BackupAssist No No No Espejo directo o con historial, VSS.
cwRsync No No No Basado en Cygwin .
Grsync Interfaz gráfica para rsync.
GS RichCopy 360 No No No Diseñado solo para estaciones de trabajo y servidores MS Windows con soporte VSS.
LuckyBackup
rclone 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 No Una utilidad de instantánea del sistema de archivos basada en rsync.
Sincronizar No Utiliza rsync sobre HTTP (S).

Ver también

Notas

Referencias

enlaces externos