Tutoriales

16 ejemplos prácticos de instrucciones Rsync en Linux

Sincronizar (sincronización remota) es el comando más utilizado para la copia y sincronización remota y local de archivos y directorios en sistemas Linux/Unix.

con la ayuda de Sincronizar Con los comandos, puede copiar y sincronizar datos de forma remota y local entre directorios, discos y redes, y realizar copias de seguridad y duplicación de datos entre dos computadoras Linux.

Este artículo explica dieciséis Usos básicos y avanzados de Sincronizar Comandos para transferir archivos de forma remota y local Basado en Linux máquina.no necesitas ser un raíz El usuario corre Sincronizar Orden.

Ventajas de la instrucción Rsync

Ofrece varias ventajas, entre ellas:

  • Transferencia de archivos eficiente – rsync utiliza un algoritmo de transferencia incremental, lo que significa que solo transfiere la diferencia entre el archivo original y el archivo de destino, lo que reduce significativamente la cantidad de datos transferidos, lo que lo hace eficiente en la sincronización de archivos o directorios grandes.
  • Sincronización remota de archivos – rsync admite la transferencia de archivos local y remota a través de SSH, lo que permite la sincronización entre sistemas locales y remotos o directorios espejo en varias máquinas.
  • respaldo incremental – rsync es ideal para copias de seguridad incrementales porque crea y actualiza copias de seguridad de manera eficiente transfiriendo solo archivos nuevos o modificados.
  • Mantener permisos de archivos – rsync puede preservar varias propiedades del archivo, como permisos, propiedad, marcas de tiempo y enlaces simbólicos, lo que garantiza que los archivos copiados conserven sus características originales en el destino.
  • Control de Ancho de Banda – rsync le permite limitar el uso del ancho de banda durante las transferencias de archivos porque utiliza métodos de compresión y descompresión al enviar y recibir datos en ambos extremos.
  • apresúrate – rsync transfiere archivos más rápido que scp (Copia segura), especialmente cuando se sincronizan directorios grandes o se procesan archivos que se han transferido parcialmente o existen en el destino.

Sintaxis del comando Rsync

este Sincronizar Los comandos siguen la siguiente sintaxis:

# rsync [OPTIONS] SOURCE DESTINATION

A continuación se muestra una explicación de los diferentes componentes y opciones utilizadas. Sincronizar Orden:

  • -v – Salida detallada, que muestra los detalles de la transferencia.
  • -r – Copia material de forma recursiva (pero no conserva marcas de tiempo ni permisos al transferir material).
  • -a – Modo de archivo, que permite la copia recursiva de archivos y al mismo tiempo conserva enlaces simbólicos, permisos de archivos, propiedad de usuarios y grupos, y marcas de tiempo.
  • -z – Comprimir archivos durante la transmisión para reducir el uso de la red.
  • -h – Legible por humanos, genera el número en un formato legible por humanos.
  • -P – Muestra el progreso del proceso de transferencia.
  • SOURCE – Especifique el archivo o directorio fuente que se transferirá, que puede ser una ubicación local o remota.
  • DESTINATION – Especifique la ruta de destino a la que se copiará el archivo o directorio. Al igual que la fuente, puede ser una ruta local o una ubicación remota.

Instale Rsync en el sistema Linux

podemos instalar Sincronizar Dependiendo de su distribución de Linux, instale paquetes con la ayuda de los siguientes administradores de paquetes.

$ sudo apt install rsync         [On Debian, Ubuntu and Mint]
$ sudo yum install rsync         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
$ sudo emerge -a sys-apps/rsync  [On Gentoo Linux]
$ sudo apk add rsync            [On Alpine Linux]
$ sudo pacman -S rsync           [On Arch Linux]
$ sudo zypper install rsync      [On OpenSUSE]    

1. Copiar/sincronizar archivos localmente

Para copiar o sincronizar archivos localmente, puede usar los siguientes comandos para sincronizar un solo archivo en su computadora local de una ubicación a otra.

En este ejemplo, el nombre del archivo copia de seguridad.tar Es necesario copiarlo o sincronizarlo con /tmp/copia de seguridad/ Carpeta.

[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/

created directory /tmp/backups
backup.tar.gz

sent 224.54K bytes  received 70 bytes  449.21K bytes/sec
total size is 224.40K  speedup is 1.00

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

Archivos nativos rsync

2. Directorio local de copia/sincronización

El siguiente comando transferirá o sincronizará todos los archivos de un directorio a un directorio diferente en la misma computadora.

En este ejemplo, /root/rpmpkgs Contiene algunos archivos de paquetes rpm y desea copiar este directorio en /tmp/copia de seguridad/ Carpeta.

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_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

sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08
directorio local rsync
directorio local rsync

3. Copie el directorio del servidor local al remoto.

Para copiar un directorio del servidor local a un servidor remoto, puede usar el siguiente comando, que sincronizará el directorio de la computadora local a la computadora remota.

Por ejemplo, Si tiene una carpeta en su computadora local «paquete rpm”que contiene algunos Velocidad de rotación Paquete, si desea transferir el contenido del directorio local al servidor remoto, puede usar el siguiente comando.

# rsync -avzh /root/rpmpkgs [email protected]:/root/

The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email protected]'s password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_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

sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00
Sistema remoto del directorio Rsync
Sistema remoto del directorio Rsync

4. Copie el directorio del servidor remoto al servidor local.

Este comando le ayudará a sincronizar el directorio remoto con el directorio local.En este ejemplo, un directorio /root/rpmpkgs Los archivos del servidor remoto se están copiando a su computadora local /tmp/myrpms.

# rsync -avzh [email protected]:/root/rpmpkgs /tmp/myrpms

[email protected]'s password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_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

sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07
Directorio remoto Rsync a la máquina local
Directorio remoto Rsync a la máquina local

5. Rsync a través de SSH

y Sincronizarpodemos usar SSH (Secure Shell) para la transferencia de datos, use SSH Acuerdo Al transmitirnos sus datos, puede asegurarse de que se transmitan a través de una conexión segura cifrada para que nadie pueda leer sus datos mientras se transmiten a través de Internet.

También cuando usamos Sincronizar necesitamos proporcionar usuario/raíz contraseña para realizar esa tarea específica, así que use SSH opción enviará su información de inicio de sesión encriptada para que contraseña Será seguro.

usar Sincronizar Superar SSH,puedes usarlo -e opción para especificar el comando de shell remoto, generalmente ssh, como se muestra en la figura.

# rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination

6. Utilice SSH para copiar archivos del servidor remoto al servidor local

Para sincronizar archivos desde un servidor remoto a un servidor local, puede especificar el protocolo: Sincronizar usar»-mi”Opción y el nombre del contrato que desea utilizar.

En este ejemplo usaremos «SSH«y»-mi”Opción y realizar la transferencia de datos.

# rsync -avzhe ssh [email protected]:/root/anaconda-ks.cfg /tmp

[email protected]'s password: 
receiving incremental file list
anaconda-ks.cfg

sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67
Rsync copia archivos remotos a la máquina local
Rsync copia archivos remotos a la máquina local

7. Utilice SSH para copiar archivos del servidor local al servidor remoto

Para sincronizar archivos del servidor local al servidor remoto usando SSH, puede usar el siguiente comando como se muestra a continuación.

# rsync -avzhe ssh backup.tar.gz [email protected]:/backups/

[email protected]'s password: 
sending incremental file list
created directory /backups
backup.tar.gz

sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00
Rsync copia archivos locales al extremo remoto
Rsync copia archivos locales al extremo remoto

8. Muestra el progreso al usar Rsync para transferir datos.

Para mostrar el progreso de la transferencia de datos de una máquina a otra podemos usar ‘--progress' Opción para mostrar el archivo y el tiempo restante para completar la transferencia.

# rsync -avzhe ssh --progress /root/rpmpkgs [email protected]:/root/rpmpkgs

[email protected]'s password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_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.module_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)

sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00
Progreso de Rsync al copiar archivos
Progreso de Rsync al copiar archivos

9. Utilice Rsync para incluir archivos con extensiones de archivo específicas

Para incluir un archivo o patrón específico durante una operación rsync, puede usar --include Opción de tener extensiones de archivo que coincidan con todos los archivos.

# rsync -avz --include="*.txt" /path/to/source/ user@remote:/path/to/destination/

En el ejemplo proporcionado, rsync solo contendrá .txt se extiende desde /ruta/a/fuente/ Directorio durante la transferencia.

10. Utilice Rsync para excluir archivos con extensiones de archivo específicas

Del mismo modo, para excluir extensiones de archivos específicas durante las operaciones rsync, puede usar --exclude Opciones con patrones comodín.

# rsync -avz --exclude="*.ext" /path/to/source/ user@remote:/path/to/destination/

En el ejemplo proporcionado, rsync excluirá archivos con la extensión especificada (*.ext) Durante la transferencia, también se incluyen todos los demás archivos y directorios.

11. Incluir y excluir archivos usando Rsync

Para incluir y excluir archivos o patrones específicos durante las operaciones rsync, puede usar --include y --exclude Opciones con patrones de comodines apropiados.

Estas dos opciones nos permiten incluir y excluir Al especificar parámetros, estas opciones nos ayudan a especificar los archivos o directorios que desea incluir en la sincronización y excluir archivos y carpetas que no desea transferir.

En este ejemplo, Sincronizar El comando solo incluirá archivos y directorios que comiencen con ‘R’ y excluir todos los demás archivos y directorios.

# rsync -avze ssh --include 'R*' --exclude '*' [email protected]:/var/lib/rpm/ /root/rpm
Rsync incluye y excluye archivos
Rsync incluye y excluye archivos

12. Usando la opción –delete en Rsync

Si el archivo o directorio no existe en el origen, pero ya existe en el destino, es posible que desee eliminar el archivo/directorio existente en el destino al realizar la sincronización.

Nosotros podemos usar ‘--delete‘La opción elimina archivos que no existen en el directorio de origen.

El origen y el destino están sincronizados.Ahora crea un nuevo archivo prueba.txt en el objetivo.

[root@tecmint:~]# cd /root/rpm/
[root@tecmint:~/rpm]# touch test.txt
[root@tecmint:~/rpm]# rsync -avz --delete [email protected]:/var/lib/rpm/ /root/rpm/

[email protected]'s password: 
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003

sent 445 bytes  received 18,543,954 bytes  2,472,586.53 bytes/sec
total size is 71,151,616  speedup is 3.84

El objetivo tiene un nuevo archivo llamado prueba.txt Al sincronizar con la fuente–delete‘opción, que elimina el archivo prueba.txt.

Opciones de eliminación de Rsync
Opciones de eliminación de Rsync

13. Uso de restricciones de transferencia de perfil de Rsync

Puedes especificar máximo Tamaño del archivo para transferir o sincronizar. puedes usarlo»--max-size» opción. En este ejemplo, el tamaño máximo de archivo es 200.000por lo que el comando transferirá solo aquellos archivos que sean iguales o más pequeños que 200.000.

# rsync -avzhe ssh --max-size="200k" /var/lib/rpm/ [email protected]:/root/tmprpm

[email protected]'s password: 
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002

sent 129.52K bytes  received 396 bytes  28.87K bytes/sec
total size is 71.15M  speedup is 547.66
Rsync establece el tamaño máximo de transferencia de archivos
Rsync establece el tamaño máximo de transferencia de archivos

14. Eliminar automáticamente los archivos fuente después de la transferencia

Ahora, digamos que tiene un servidor web principal y un servidor de respaldo de datos, crea una copia de seguridad diaria y la sincroniza con el servidor de respaldo, pero ahora no desea mantener una copia local de la copia de seguridad en el servidor web.

Entonces, ¿espera a que se complete la transferencia y luego elimina manualmente el archivo de copia de seguridad local? Por supuesto que no. Esta eliminación automática se puede realizar usando ‘--remove-source-files‘ opción.

# rsync --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/

[email protected]'s password: 
backup.tar.gz

sent 795 bytes  received 2.33K bytes  894.29 bytes/sec
total size is 267.30K  speedup is 85.40

[root@tecmint:~]# ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory
Eliminar archivos fuente después de la transferencia Rsync
Eliminar archivos fuente después de la transferencia Rsync

15. Prueba de ejecución con Rsync

Si eres nuevo en rsync y no sabes qué hace exactamente tu comando. Rsync tiene el potencial de estropear el contenido de la carpeta de destino y luego deshacerlo puede ser una tarea tediosa.

El uso de esta opción no realiza ningún cambio en el archivo y muestra el resultado del comando. Si el resultado aparece exactamente como desea, puede eliminar el ‘--dry-run‘ opción en el comando y ejecútela en la terminal.

# rsync --dry-run --remove-source-files -zvh backup.tar.gz [email protected]:/tmp/backups/

[email protected]'s password: 
backup.tar.gz

sent 50 bytes  received 19 bytes  19.71 bytes/sec
total size is 267.30K  speedup is 3,873.97 (DRY RUN)
Ejecución de prueba de Rsync
Ejecución de prueba de Rsync

16. Rsync establece el límite de ancho de banda y transfiere archivos

Puede establecer límites de ancho de banda al transferir datos de una computadora a otra--bwlimit‘ opción.Esta opción nos ayuda a limitar de entrada y salida banda ancha.

# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  [email protected]:/root/tmprpm/
[email protected]'s password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Además, de forma predeterminada, rsync solo sincroniza fragmentos y bytes modificados; si desea sincronizar explícitamente todo el archivo, puede usar ‘-W‘ opción.

# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10
en conclusión

Con esto concluye nuestra descripción general. Sincronizar y sus capacidades. Para explorar más a fondo su amplia gama de opciones y capacidades, le recomiendo que consulte las páginas de manual completas (páginas de manual) disponibles.

LEER  Una herramienta que se puede utilizar en la fase de post-explotación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba