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.
Tabla de Contenidos
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.
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
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
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
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
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
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
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
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.
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
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
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)
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.