10 ejemplos prácticos de comando rsync en Linux

10 ejemplos prácticos de comando rsync en Linux

Rsync (Sincronización remota) es el comando más utilizado para copiar y sincronizar archivos y directorios de forma remota, así como en la zona en Linux/Desastre sistemas.

Con la ayuda del rsync Comando, puede copiar y sincronizar sus datos de forma remota y local a través de directorios, discos y redes, realizar copias de seguridad de datos y reflejar entre dos máquinas Linux.

RSYNC Sincronización de archivos locales y remotos

Este artículo explica 10 uso básico y avanzado del rsync comandar transferir sus archivos de forma remota y local en Basado en Linux máquinas. No necesitas ser un raíz usuario para ejecutar el rsync dominio.

Algunas ventajas y características del comando rsync

  • Copia y sincroniza eficientemente los archivos hacia o desde un sistema remoto.
  • Admite copia de enlaces, dispositivos, propietarios, grupos y permisos.
  • Es más rápido que SCP (Copia segura) porque rsync Utiliza un protocolo de actualización remota que permite transferir solo las diferencias entre dos conjuntos de archivos. La primera vez, copia el contenido completo de un archivo o un directorio de origen a destino, pero desde la próxima vez, copia solo los bloques y bytes cambiados al destino.
  • RSYNC consume menos utilización de ancho de banda, ya que utiliza el método de compresión y descompresión al enviar y recibir datos en ambos extremos.
La sintaxis básica del comando rsync
# Opciones de RSYNC Destino de origen
Algunas opciones comunes utilizadas con los comandos RSYNC
  • -V : detallado
  • -riñonal : Copia los datos de forma recursiva (pero no preserve las marcas de tiempo y el permiso mientras se transfieren datos.
  • -a : Modo de archivo, que permite copiar archivos de manera recursiva y también conserva enlaces simbólicos, permisos de archivos, propiedades de usuarios y grupos y marcas de tiempo.
  • -z : Datos del archivo de comprimir.
  • -H : números de salida legibles por humanos en un formato legible.

[También puede gustar: Cómo sincronizar archivos/directorios utilizando RSYNC con un puerto SSH no estándar]

Instale RSYNC en el sistema Linux

Podemos instalar el rsync Paquete con la ayuda del siguiente comando en su distribución de Linux.

$ sudo apt-get install rsync [en Debian/Ubuntu & Mint] $ Pacman -S rsync [en Arch Linux] $ emerge sys-apps/rsync [en gentoo] $ sudo yum install rsync [en Fedora/Centos/Rhel y Rocky Linux/Almalinux] $ sudo zypper install rsync [en openSuse] 

1. Copiar/sincronizar archivos y directorio localmente

Copiar/sincronizar un archivo en una computadora local

El siguiente comando sincronizará un solo archivo en una máquina local desde una ubicación a otra ubicación. Aquí en este ejemplo, un nombre de archivo respaldo.alquitrán necesita ser copiado o sincronizado para /tmp/copias de seguridad/ carpeta.

[[correo electrónico protegido]]# rsync -zvh copia de seguridad.alquitrán.GZ/TMP/Backups/creado Directory/TMP/Backups Backup.alquitrán.GZ envió 224.54k bytes recibió 70 bytes 449.21k bytes/seg El tamaño total es 224.40k Speedup es 1.00 

En el ejemplo anterior, puede ver que si el destino aún no existe, RSYNC creará un directorio automáticamente para el destino.

Archivos locales rsync
Copiar/sincronizar un directorio en la computadora local

El siguiente comando transferirá o sincronizará todos los archivos de un directorio a un directorio diferente en la misma máquina. Aquí en este ejemplo, /root/rpmpkgs contiene algunos archivos de paquetes RPM y desea que ese directorio se copie dentro /tmp/copias de seguridad/ carpeta.

[[Correo electrónico protegido]]# rsync -avzh/root/rpmpkgs/tmp/backups/enviando lista de archivos incremental rpmpkgs/rpmpkgs/httpd -2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/NAGIOS-4.4.6-4.El8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.El8.x86_64.RPM enviado 3.47m bytes recibió 96 bytes 2.El tamaño total de 32 m bytes/seg es 3.74m Speedup es 1.08 
Directorio local de RSYNC

2. Copiar/sincronizar archivos y directorio a o desde un servidor

Copiar un directorio del servidor local a un servidor remoto

Este comando sincronizará un directorio de una máquina local a una máquina remota. Por ejemplo, Hay una carpeta en su computadora local "rpmpkgs"Eso contiene algunos Rpm paquetes y desea que el contenido de ese directorio local envíe a un servidor remoto, puede usar el siguiente comando.

[[Correo electrónico protegido]: ~]# rsync -avzh/root/rpmpkgs [correo electrónico protegido]:/root/la autenticidad del host '192.168.0.141 (192.168.0.141) 'No se puede establecer. ED25519 La huella digital clave es SHA256: BH2TIWQN4S5O6QMZHMTXCBROV5TU5H4T2C42QDEMX1C. Esta clave no se sabe por ningún otro nombre, ¿está seguro de que desea continuar conectando (sí/no/[huella digital])? Sí Advertencia: agregado permanentemente '192.168.0.141 '(ED25519) a la lista de hosts conocidos. [Correo electrónico protegió la contraseña: envío de la lista de archivos incremental rpmpkgs/ rpmpkgs/ httpd-2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/NAGIOS-4.4.6-4.El8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.El8.x86_64.RPM enviado 3.74m bytes recibidos 96 bytes 439.88k bytes/seg El tamaño total es 3.74m Speedup es 1.00 
Sistema remoto del directorio RSYNC
Copiar/sincronizar un directorio remoto a una máquina local

Este comando lo ayudará a sincronizar un directorio remoto con un directorio local. Aquí en este ejemplo, un directorio /root/rpmpkgs que está en un servidor remoto se está copiando en su computadora local en /tmp/myrpms.

[[Correo electrónico protegido]: ~]# rsync -avzh [correo electrónico protegido]:/root/rpmpkgs/tmp/myrpms [correo electrónico protegido].4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/MOD_SSL-2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM RPMPKGS/NAGIOS-4.4.6-4.El8.x86_64.RPM RPMPKGS/NAGIOS-PLUGINS-2.3.3-5.El8.x86_64.RPM envió 104 bytes recibidos 3.49m bytes 997.68k bytes/seg El tamaño total es 3.74m Speedup es 1.07 
Directorio remoto RSYNC al local

3. Rsync sobre ssh

Con rsync, nosotros podemos usar Ssh (Cubierta segura) para la transferencia de datos, utilizando Ssh Protocolo Mientras transfiere nuestros datos, puede asegurarse de que sus datos se transfieran en una conexión segura con el cifrado para que nadie pueda leer sus datos mientras se transfieren a través del cable en Internet.

[También puede que le guste: cómo asegurar y endurecer el servidor OpenSsh]

También cuando usamos rsync Necesitamos proporcionar el usuario/raíz contraseña para lograr esa tarea en particular, por lo que usar el Ssh La opción enviará sus inicios de sesión de manera encriptada para que su contraseña será segura.

Copie un archivo de un servidor remoto a un servidor local con SSH

Para especificar un protocolo con rsync necesitas dar el "-mi"Opción con el nombre del protocolo que desea usar. Aquí en este ejemplo, usaremos el "ssh" con el "-mi"Opción y realizar transferencia de datos.

[[correo electrónico protegido]: ~]# rsync -avzhe ssh [correo electrónico protegido]:/root/anaconda -kks.contraseña de CFG /TMP [correo electrónico protegido]: recibir la lista de archivos incremental anaconda-ks.CFG envió 43 bytes recibidos 1.10k bytes 325.43 bytes/seg, el tamaño total es 1.90k Speedup es 1.67 
RSYNC Copiar archivo remoto al local
Copie un archivo de un servidor local a un servidor remoto con SSH
[[correo electrónico protegido]: ~]# rsync -avzhe ssh copia de seguridad.alquitrán.Gz [correo electrónico protegido]:/copias de seguridad/[correo electrónico protegido] S PASSA: Envío de la lista de archivos incremental Directorio/copia de seguridad de copias de seguridad.alquitrán.GZ envió 224.59k bytes recibió 66 bytes 64.19k bytes/seg El tamaño total es 224.40k Speedup es 1.00 
RSYNC Copiar el archivo local al control remoto

[También puede gustar: Cómo usar RSYNC para sincronizar archivos nuevos o modificados en Linux]

4. Mostrar progreso mientras se transfiere datos con RSYNC

Para mostrar el progreso al transferir los datos de una máquina a una máquina diferente, podemos usar el '-progreso' opción. Muestra los archivos y el tiempo restante para completar la transferencia.

[[Correo electrónico protegido]:/]# rsync -avzhe ssh --progress/root/rpmpkgs [correo electrónico protegido]:/root/rpmpkgs [correo electrónico protegido] la contraseña: envío de la lista de archivos incremental rpmpkgs/rpmpkgs/httpd -al.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM 1.47m 100% 31.80mb/s 0:00:00 (XFR#1, TO-chk = 3/5) rpmpkgs/mod_ssl-2.4.37-40.módulo_el8.5.0+852+0AAFC63B.x86_64.RPM 138.01K 100% 2.69mb/s 0:00:00 (XFR#2, TO-Chk = 2/5) RPMPKGS/NAGIOS-4.4.6-4.El8.x86_64.RPM 2.01M 100% 18.45mb/s 0:00:00 (XFR#3, TO-chk = 1/5) rpmpkgs/nagios-plugins-2.3.3-5.El8.x86_64.RPM 120.48k 100% 1.04mb/s 0:00:00 (XFR#4, to-chk = 0/5) enviado 3.74m bytes recibidos 96 bytes 1.El tamaño total de 50 m bytes/seg es 3.74m Speedup es 1.00 
RSYNC Progress al copiar archivos

5. Uso de opciones de Incrude and -Exclude

Estas dos opciones nos permiten incluir y excluir Los archivos especificando parámetros con estas opciones nos ayudan a especificar esos archivos o directorios que desea incluir en su sincronización y excluir archivos y carpetas con usted no desea ser transferido.

Aquí en este ejemplo, el comando RSYNC incluirá esos archivos y directorio solo que comienza con 'Riñonal'y excluir todos los demás archivos y directorio.

[[Correo electrónico protegido]:/]# rsync -avze ssh --include 'r*' --exclude '*' [correo electrónico protegido]:/var/lib/rpm//root/rpm [correo electrónico protegido] 'S PASSWORD: Recibir lista de archivos incremental Directorio /Root /RPM ./ Nombre de requisito enviado 61 bytes recibió 273,074 bytes 60,696.67 bytes/seg, el tamaño total es 761,856 La aceleración es 2.79 
Rsync incluye y excluye archivos

6. Uso de la opción -delete

Si un archivo o directorio no existe en la fuente, pero ya existe en el destino, es posible que desee eliminar ese archivo/directorio existente en el destino mientras se sincroniza.

Podemos usar el '-borrar'Opción para eliminar archivos que no están allí en el directorio de origen.

La fuente y el objetivo están sincronizados. Ahora crea un nuevo archivo prueba.TXT en el objetivo.

[[Correo electrónico protegido]: ~]# cd/root/rpm/[[correo electrónico protegido]: ~/rpm]# touch test.txt [[correo electrónico protegido]: ~/rpm]# rsync -avz --delete [correo electrónico protegido]:/var/lib/rpm//root/rpm/[correo electrónico protegido] la contraseña: recepción de la lista de archivos incrementales.TXT ./ .dbenv.cerrar .rpm.bloquear los nombres conflictos del nombre de conflicto dirnames mejoraname nombre filtriggername grupo installtid nombre de obsoletename paquetes providenename.001 __db.002 __db.003 enviados 445 bytes recibieron 18,543,954 bytes 2,472,586.53 bytes/seg, el tamaño total es 71,151,616 La aceleración es 3.84 

Target tiene el nuevo archivo llamado prueba.TXT, Al sincronizar con la fuente con el '-borrar'Opción, eliminó el archivo prueba.TXT.

Opción RSYNC Eliminar

7. Establezca el tamaño máximo de los archivos a transferir

Puedes especificar el Máximo Tamaño del archivo a transferir o sincronizar. Puedes hacerlo con el "-tamaño máximo" opción. Aquí en este ejemplo, el tamaño del archivo máximo es 200K, Entonces, este comando transferirá solo aquellos archivos que son iguales o menores que 200K.

[[Correo electrónico protegido]: ~]# rsync -avzhe ssh --max-size = '200k'/var/lib/rpm/[correo electrónico protegido]:/root/tmppm [correo electrónico protegido] la contraseña: envío de archivos incrementales directorio creado /root /tmppm ./ .dbenv.cerrar .rpm.bloquear conflicto name mejorename nombre fileTriggerName Group InstallTid Nombre obsoletename Recomendado nombre de requisito Sha1Header Sigmd5 Sugerirname SupplementName TransfiletriggerName TriggerName __DB.002 enviado 129.52k bytes recibió 396 bytes 28.87k bytes/seg El tamaño total es 71.15m Speedup es 547.66 
RSYNC Establecer el tamaño de transferencia de archivo MAX

8. Eliminar automáticamente los archivos de origen después de una transferencia exitosa

Ahora, suponga que tiene el servidor web principal y un servidor de copia de seguridad de datos, creó una copia de seguridad diaria y la sincronizó con su servidor de copia de seguridad, ahora no desea mantener esa copia local de la copia de seguridad en su servidor web.

Entonces, ¿esperarás a que la transferencia complete y luego elimine ese archivo de copia de seguridad local manualmente? Claro que no. Esta deleción automática se puede hacer utilizando '-eliminar los archivos de fuente' opción.

[[correo electrónico protegido]: ~]# rsync--remove-sale-files -zvh copia de seguridad.alquitrán.GZ [Correo electrónico protegido]:/tmp/copia de seguridad/[correo electrónico protegido] ¿Contraseña: copia de seguridad.alquitrán.GZ envió 795 bytes recibidos 2.33k bytes 894.29 bytes/seg El tamaño total es 267.30k Speedup es 85.40 [[correo electrónico protegido]: ~]# ls -l copia de seguridad.alquitrán.GZ LS: No se puede acceder a la copia de seguridad.alquitrán.GZ ': no ​​hay dicho archivo o directorio 
RSYNC Eliminar archivo fuente después de la transferencia

9. Hacer una carrera seca con rsync

Si eres un novato que usa RSYNC y no sabes qué va a hacer exactamente tu comando. RSYNC realmente podría estropear las cosas en su carpeta de destino y luego hacer una deshacer puede ser un trabajo tedioso.

[También le puede gustar: Cómo sincronizar dos servidores web de Apache/sitios web con RSYNC]

El uso de esta opción no realizará ningún cambio en los archivos y muestra la salida del comando, si la salida muestra exactamente lo mismo que desea hacer, puede eliminar el '-corrido por secado'Opción desde su comando y ejecutar en la terminal.

[[correo electrónico protegido]: ~]# rsync --corrido por secado --eliminar la copia de seguridad de los archivos-files -zvh.alquitrán.GZ [Correo electrónico protegido]:/tmp/copia de seguridad/[correo electrónico protegido] ¿Contraseña: copia de seguridad.alquitrán.GZ envió 50 bytes recibidos 19 bytes 19.71 bytes/seg El tamaño total es 267.La aceleración de 30k es 3,873.97 (Carrera seca) 
RSYNC DRY RUN

10. RSYNC establece un límite de ancho de banda y archivo de transferencia

Puede establecer el límite de ancho de banda mientras se transfiere datos de una máquina a otra máquina con la ayuda de '-bwlimit' opción. Esta opción nos ayuda a limitar E/S banda ancha.

[[Correo electrónico protegido]]# rsync --bwlimit = 100 -avzhe ssh/var/lib/rpm/[correo electrónico protegido]:/root/tmppm/[correo electrónico protegido] la contraseña: enviar una lista de archivos incremental enviado 324 bytes recibidos 12 recibidos bytes 61.09 bytes/seg El tamaño total es 38.08M Speedup es 113347.05

Además, de forma predeterminada, las sincronizaciones de RSYNC cambiaron solo bloques y bytes, si desea explícitamente sincronizar todo el archivo, entonces usa el '-W'Opción con él.

[[correo electrónico protegido]]# rsync -zvhw copia de seguridad.tar/tmp/copias de seguridad/copia de seguridad.respaldo de alquitrán.alquitrán enviado 14.71m bytes recibidos 31 bytes 3.27m bytes/seg El tamaño total es 16.Speedup de 18 m es 1.10

Eso es todo con rsync ahora, puedes ver Páginas del hombre Para más opciones. Mantente conectado con Tecmenta Para tutoriales más emocionantes e interesantes en el futuro. Deja tu comentario y sugerencias.