In Linux Última actualizaciónated:
Comparte en:
Cloudways ofrece alojamiento en la nube administrado para empresas de cualquier tamaño para alojar un sitio web o aplicaciones web complejas.

rsync es una herramienta de línea de comandos de uso gratuito que le permite sync ubicación de archivosally y de forma remota. Con él, puedes transferir archivos y directorios.

Esto lo hace muy útil para migrar datos, realizar copias de seguridad y mirroring, lo que lo hace ideal para webmasters y administradores para tareas recurrentes de transferencia de datos.

Este artículo nos enseñará cómo funciona Rysnc y dará algunos ejemplos útiles.

¿Cómo lo hace?sync ¿Trabajo?

rsync es un control remoto syncUtilidad de línea de comandos de sincronización para sistemas tipo Unix. Le da al usuario la posibilidad de transferir/sync archivos entre máquinas o dos hosts sin problemas.

Debajo del capó, rsync utiliza el delta-algoritmo de transferencia. Este algoritmo implica copiar las diferencias entre los dos archivos en dos hosts (origen y destino). El origen y el destino pueden ser locales o remotos. El rsync El comando puede realizar copia/sync tareas de datos de dos maneras. Estos son:

  • Uso ssh, rsh copiar/sync entre dos anfitriones.
  • Uso TCP-rsync demonio para copiar/syncing.

Como está diseñado para funcionar en sistemas tipo Unix, también funciona en Linux

El paso a paso process rsync utiliza de la siguiente manera:

  • Rsync utiliza SSH para conectarse al host remoto y solicita una contraseña.
  • Una vez conectado, el r del host remotosync comunicates con la fuente.
  • Estos programas luego determinarán los archivos y directorios que necesitan sync. Utiliza un delta-Algoritmo de transferencia para comprobar la diferencia entre los archivos.

Si la rsync El comando no encuentra un archivo en el control remoto pero no en el host, lo copiará y lo transferirá al sistema host. De manera similar, para archivos ya existentes (tanto en el host como en el remoto), copiará la diferencia entre ellos (es decir, las partes modificadas). Por último, ignorará los archivos existentes en ambos sistemas sin realizar modificaciones.

el rsync El comando logra una actualización incremental.ates almacenando la diferencia en un archivo temporal antes de enviarlo al destino.

Antes de que empieces:

  • Necesitas tener privilegios de root o sudo
  • Tener acceso a la terminal/línea de comando
  • Acceso SSH para ejecutar r de forma segurasync comandos
  • También necesitas dos máquinas para hacer r.sync. 

Para el tutorial, vamos a utilizar Linux Mint 21.1 Vera. Puede seguir fácilmente la guía sin problemas utilizando cualquier otra distribución de Linux.

¿Por qué usar r?sync ¿Sobre Scp?

Scp (copia segura) es un popular protocolo de línea de comandos que permite a los usuarios copiar archivos. Sigue un enfoque lineal para copiar. Esto significa que simplemente copia los archivos del origen al destino. Para hacerlo de forma segura, utiliza SSH.

La sintaxis del comando scp es la siguiente:

scp option SOURCE DESTINATION

Sin embargo, la pregunta sigue siendo: ¿por qué utilizar r?sync sobre scp?

Bueno, existen múltiples beneficios al usar r.sync. Estos beneficios incluyen:

  • Ejecución más rápida: rsync es más rápido que scp porque utiliza una actualización remotaate protocolo. Esto le permite transferir sólo las diferencias en lugar de todo el archivo. Entonces, si configuras un regular sync con el tiempo, solo necesitarás hacer una copia completa la primera vez. A partir de la próxima vez solo copia la actualización.ated piezas con la ayuda del delta-algoritmo de transferencia.
  • Menos Bandwidth Consumo: Como rsync No es necesario volver a copiar todo el archivo, ya que genera menos bandwidth consumo. Además, también utiliza algoritmos de compresión/descompresión para minimizar el tamaño del archivo durante la transferencia.
  • Más opciones de línea de comandos: rsync también supera a scp en la cantidad de opciones de línea de comandos. Esto significa que puedes ajustar rsync más que scp.

En conclusión, rsync es un excelente incremental sync herramienta. La herramienta scp también es útil para transferir/syncing archivos. En un escenario del mundo real, scp es adecuado para las tareas del día a día si buscas un enfoque más sencillo. Sin embargo, para tareas recurrentes, utilice rsync.

rsync Sintaxis del comando

el rsync El comando es el siguiente:

  • De local a local: rsync opción FUENTE DESTINO
  • Local a Remoto: rsync opción FUENTE USUARIO@HOST:DEST
  • Remoto a local: rsync opción USUARIO@HOST:SRC DEST

Aquí, los términos se definen a continuación:

  • OPCIÓN – Estos son los rsync opciones
  • FUENTE – Directorio de origen
  • DEST - Directorio de destino
  • USUARIO – Nombre de usuario remoto
  • HOST – Nombre de host remoto o dirección IP

Las opciones son parámetros que ofrecen funcionalidad adicional al comando. Por ejemplo, puedes sync datos de forma recursiva con el -r opción. Sin embargo, las -r opción no sync propiedad de grupos y usuarios, marcas de tiempo, permisos o enlaces simbólicos. En su lugar, puede utilizar el -una opción, que ejecuta el comando en arcohive modo, asegurando que toda la propiedad, permiso y enlaces simbólicos del archivo se conserven al copiar.

Otro rsync las opciones incluyen:

  • -z: comprimir datos para ahorrar espacio
  • -h: proporciona salida en formato legible por humanos
  • -B: realiza una copia de seguridad durante los datos synchronización process
  • -mi: use el protocolo SSH para transferencias remotas de datos
  • -Progreso: mostrar los datos syncprogreso de cronización
  • -v: pregunta rsync para mostrar una salida detallada
  • n: realizar un ensayo para probar la configuración y la configuración de los datos synchronización
  • -q: suprimir rsync salida del comando y opciones

Instalación de rsync

La mayoría de los sistemas Unix y Linux vienen con rsync instalado. Si su sistema no tiene rsync, puede instalarlo usando los siguientes comandos.

Para Debian/Ubuntu y Mint

sudo apt-get install rsync

Para Arch Linux

pacman -S rsync

En Gentoo

emerge sys-apps/rsync

En CentOS/Fedora/REHL

sudo yum install rsync

en openSUSE

sudo zypper install rsync

Como tenemos Linux Mint, Rsync Viene preinstalado. Entonces puedes ejecutar el rsync comando en la terminal para ver si está instalado. Explicará sus capacidades, opciones y otra información vital si está presente.

nitt ~
$ rsync
rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.

Veamos ahora rsync en acción con diferentes casos de uso.

Para el tutorial, vamos a hacer dos directorios.

  • directorio fuente
  • directorio destino

Para eso, debe escribir los siguientes comandos.

mkdir source-directory
mkdir dest-directory

Además, necesitaremos generarate archivos para hacer rsync trabajar. Así que vamos a crearate algunos archivos de prueba con el siguiente comando.

touch source-directory/file{1..100}

este creates 100 archivos vacíos en el directorio fuente. Puede confirmarlo ingresando el siguiente comando.

ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Nota: Hemos mantenido el directorio de destino vacío.

Copiar directorios Locally Recursivamente

Aunque rsync tiene como objetivo principal copiar archivos entre un servidor local y remoto, es equally útil para copiar archivos locally. 

En este caso, usaremos la siguiente rsync sintaxis.

rsync opción FUENTE DESTINO

Copie los archivos en nuestro directorio fuente En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. directorio destino ejecutando el siguiente comando.

rsync -r source-directory/ dest-directory

Aquí, el comando “recursivamente” copia los archivos del directorio fuente En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. directorio de destino.

nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Esto copia cada archivo en el directorio fuente En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. directorio destino.

Copiar ubicación de archivo únicoally

Ahora que hemos aprendido a sync dos directorios, aprenderemos cómo copiar un solo archivo.

Para ello, editaremos el archivo vacío. file1 existentes directorio fuente y luego sync con el mismo archivo presente en el directorio de destino.

Para editar un archivo, escriba el siguiente comando.

nano source-directory/file1

Ahora copie y pegue el siguiente texto en el editor nano.

We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.

Ahora, cierre y guarde el archivo.

Ahora copiemos el archivo usando r.sync.

sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1

sent 557 bytes  received 35 bytes  1,184.00 bytes/sec
total size is 474  speedup is 0.80

nitt rsync-tutorial
$ 

Como habrás notado, usamos -existente opción. esta actualizaciónates los archivos existentes. Si ejecuta el comando sin -existente, no se actualizaráate, aunque se ejecuta correctamente.

Si el único archivo que está copiando no existe en la carpeta de destino, debe ejecutar el siguiente comando.

rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile

sent 82 bytes  received 35 bytes  234.00 bytes/sec
total size is 0  speedup is 0.00

Copiar varios archivos

Si tiene la intención de copiar varios archivos, debe mencionar las rutas de origen de ambos archivos, seguidas del directorio de destino.

Para ello, crearemosate dos nuevos archivos: nuevoarchivo2 y nuevoarchivo3, En la directorio fuente. Ejecute el siguiente comando para hacerlo.

touch source-directory/newfile{2..3}

Ahora, use el siguiente comando para sync varios archivos.

rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3

sent 135 bytes  received 54 bytes  378.00 bytes/sec
total size is 0  speedup is 0.00
nitt rsync-tutorial
$ 

Copiar archivo o directorio de local a remoto

el rsync La sintaxis para la transferencia local a remota es la siguiente.

rsync option SOURCE USER@HOST:DEST

Como puede ver, usted necesita saber el Dirección IP de la máquina remota para que esto funcione. Además, debe agregar la dirección IP después del archivo de origen.

rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Antes de iniciar la transferencia, te pedirá la contraseña. Introdúcelo para continuar. Además, si el usuario es diferente en la máquina remota, debe mencionarlo antes de la dirección IP seguida de @.

rsync -av /Projects/rsync-tutorial/source-directory nithya@192.168.192.200: /Projects/rsync-tutorial/dest-directory

Si tiene la intención de copiar varios archivos o directorios, debe enumerar las rutas de los archivos o directorios. La sintaxis para ello está a continuación.

rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Protocolos específicos de transferencia remota

rsync le permite especificar protocolos de transferencia de archivos específicos. Para hacerlo, es necesario utilizar el -e opción, seguido del protocolo.

Por ejemplo, si desea utilizar el protocolo ssh, debe agregar -e ssh a la rsync mando.

rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Copiar un archivo o directorio de remoto a local

el rsync La sintaxis para la transferencia local a remota es la siguiente.

sync option USER@HOST:SRC DEST

Esto actúa como una solicitud de extracción. Por lo tanto, para obtener los archivos/directorios necesarios desde un servidor remoto a su máquina local, debe ejecutar el siguiente comando.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

El comando extrae los archivos dentro de la máquina remota directorio destino a la máquina local directorio fuente.

Del mismo modo, puede extraer un archivo específico mencionándolo a través de su ruta completa.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory

Para copiar varios archivos o directorios de local a remoto, debe especificar la ruta entre llaves (separated por comas) después de la dirección IP del servidor.

rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory

Del mismo modo, también puede mencionar archivos.

Mostrar progreso en vivo durante la transferencia

Es una buena idea ver el progreso en vivo durante más tiempo. copias de seguridad de datos. Para eso, necesitas usar el -Progreso bandera. Agréguelo a la rsync comando, y podrá ver la velocidad de transferencia, el tiempo restante y la cantidad de datos transferidos.

rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Elimine los archivos de origen una vez que se complete la transferencia

Puede utilizar el -eliminar-archivos-fuente marca para eliminar los archivos fuente después de la transferencia completa. Esto puede ayudarle en muchos escenarios, especialmenteally a la hora de proteger tus archivos sin dejar rastro o simplemente usarlos para liberar espacio.

rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

rsync carrera en seco

Rysnc también te permite evaluarate antes de hacer una carrera real. El ensayo te permite ver si estás haciendo lo correcto. Después de todo, no quieres actualizarate archivos por error o incluso eliminarlos.

Necesitas usar el –ejecución en seco opción de hacer un simulacro. Agréguelo al comando, seguido del origen y el destino.

sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1

sent 43 bytes  received 19 bytes  124.00 bytes/sec
total size is 474  speedup is 7.65 (DRY RUN)
nitt rsync-tutorial

El resultado es similar a cómo lo ejecutamos antes. Sin embargo, notará una mención de (FUNCIONAMIENTO EN SECO) al final de la salida.

Establecer tamaño de archivo mínimo y máximo

Rysnc también le permite establecer un tamaño de archivo mínimo o máximo durante la transferencia.

Entonces, si desea transferir con un tamaño mínimo de 15 KB, debe usar –tamaño mínimo=15K.

rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

El comando solo copiará archivos con un tamaño de archivo mínimo de 15 KB. Si el tamaño del archivo es inferior, lo ignorará.

Del mismo modo, puede usar el –bandera de tamaño máximo para establecer el tamaño máximo de archivo.

rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Aquí, r.sync ignorará los archivos por encima del tamaño de 450K.

Sep Bandwidth <div style="margin-top:15px">Límite</div>

Si estás haciendo otros bandwidth-tareas intensivas, puede configurar rysnc para configurar el bandwidth límite para la transferencia. Para ello, utilice el –bwlímite=KB/s.

rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Aquí, establecemos el bandwidth a 100 KB / s durante la transferencia.

Palabras finales

Esto nos lleva al final de nuestra rsync guía de mando. Aprendimos a usar rysnc y cubrimos muchos comandos de manera efectiva.

Sin embargo, rysnc ofrece mucho más de lo que cubrimos. Es por eso que es posible que también desee pasar por el rsync página man, donde cada aspecto de rsync esta cubierto.

A continuación, echa un vistazo hojas de trucos de la línea de comandos para Windows, Linux y macOS.

Comparte en:
  • Nitish Singh
    Autor
    Tengo la certificación C1 Advanced (MCER) writer con una maestría en informática (Nivel B de NIELIT, India) y siete años de experiencia en escritura. Mi experiencia incluye escribir para la Web y cubrir diversos temas, incluidos Web3,…

Gracias a nuestros patrocinadores

Más lecturas excelentes sobre Linux

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a su negocio grow.
  • La herramienta de conversión de texto a voz que utiliza IA para generarate Voces realistas parecidas a las humanas.

    Intente Murf AI
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.

    Prueba Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.

    Intente Intruder