Copia de archivos y directorios con rsync
- DESCRIPCIÓN
Puede usar la herramienta rsync para copiar archivos de forma local o remota. rsync es unidireccional y solo puede copiar archivos en una dirección.
- INTENCIÓN
Este artículo proporciona una descripción general de la herramienta rsync y su uso básico para copiar archivos de forma local y remota.
- ESFUERZO
Se necesitan unos 20 minutos para comprender el uso básico de la herramienta rsync.
- OBJETIVO
Comprender los conceptos básicos de rsync y cómo usar la herramienta para transferencias de archivos.
- REQUISITOS
Permisos de acceso a las ubicaciones de origen y destino para copiar archivos.
1 El concepto de rsync #
Puede usar la herramienta rsync para transferir o copiar archivos de forma local y remota. rsync es unidireccional. Copia archivos en una sola dirección y no sincroniza datos. En lugar de transmitir todo el contenido del archivo, rsync minimiza la cantidad de datos copiados moviendo solo los cambios que se han realizado en el archivo. Por lo tanto, permite la transferencia de datos a través de una conexión de red lenta.
Para copiar archivos grandes usando rsync, se requiere cierta potencia de cálculo para detectar los cambios. Por lo tanto, asegúrese de que los equipos de origen y de destino tengan suficientes recursos, incluida RAM.
Use rsync cuando sea necesario transmitir periódicamente una gran cantidad de datos que contengan solo cambios menores. Esto resulta útil cuando se trabaja con copias de seguridad. rsync también puede ser útil para reflejar servidores de prueba que almacenan árboles de directorios completos de servidores Web en un servidor Web de una DMZ.
Este artículo incluye ejemplos que muestran el uso de rsync para copiar archivos de forma local y remota. También se explica cómo configurar y utilizar un servidor de rsync.
2 Uso básico de rsync #
Puede usar rsync en cualquier equipo en el que tenga acceso y permisos de escritura.
Copie los archivos desde la ubicación de origen a la ubicación de destino como se muestra en el siguiente ejemplo:
>rsync [OPTION] SOURCE [SOURCE]... DESTINATION
Puede tener varias entradas SOURCE, y los marcadores de posición SOURCE y DESTINATION pueden ser vías, direcciones URL o ambas.
A continuación se muestran algunos casos de uso de copia de archivos:
>rsync -av /directory1/ /destination/En el ejemplo anterior, la barra diagonal al final del directorio denota el contenido del directorio, y no el directorio en sí. En este caso, solo el contenido de
/directory1se copia en/destination.>rsync -av /directory1 /destination/En el ejemplo anterior, el directorio
/directory1se copia en/destination, por lo que el resultado es/destination/directory1/.>rsync -av example1.txt example2.txt /destination/directory/El ejemplo anterior muestra cómo copiar los archivos
example1.txtyexample2.txten el directorio de destino.
Los valores más comunes de OPTIONS se indican a continuación:
-VActiva la salida de texto detallada.
-aModo de archivo; copia archivos recursivamente y conserva las marcas de tiempo, la propiedad del usuario/grupo, los permisos de archivo y los enlaces simbólicos.
-zComprime los datos transmitidos.
-no--dry-runRealiza una prueba sin realizar cambios.
-rSe repite en los directorios.
--progressMuestra el progreso durante la transferencia.
-bRealiza una copia de seguridad durante la sincronización de los datos.
-hMuestra los números en el resultado con un formato legible para humanos.
-ePara transferencias remotas, indica a rsync que utilice el protocolo SSH.
-q or --quietSilencia el comando rsync y el resultado de la opción.
--versionMuestra el número de versión de rsync y cierra.
- Copia de archivos localmente con compresión
>rsync -avz example1.txt example2.txt /destination/-a: modo de archivo-v: resultado detallado-z: comprime datos durante la transferencia- Copia de un directorio con compresión
>rsync -avz /sourcedirectory/ /destinationdirectory/Transfiere el contenido de
/sourcedirectory/con compresión.- Transferencia remota de archivos con compresión
>rsync -avz example1.txt user@remote_host:/remote/destination/Transfiere
example1.txta un equipo remoto a través de SSH mientras se comprimen los datos.- Transferencia remota de directorios con compresión
>rsync -avz /sourcedirectory/ user@remote_host:/remote/destination/Transfiere
/sourcedirectory/a un equipo remoto a través de SSH mientras se comprimen los datos.
3 Copia de archivos y directorios localmente con rsync #
Puede copiar archivos dentro del mismo equipo usando rsync si tiene permiso de escritura para la ubicación de destino.
Para copiar el archivo backup.tar.xz en la ubicación /var/backup/, use el comando rsync -avz backup.tar.xz /var/backup/.
El archivo backup.tar.xz se copia en /var/backup/, y la ruta absoluta es /var/backup/backup.tar.xz.
4 Copia de archivos y directorios remotamente con rsync #
Puede copiar archivos de un equipo a otro equipo remoto usando rsync. Asegúrese de tener rsync en los equipos de origen y de destino y de que se ha conectado al equipo remoto a través de SSH.
Para copiar un solo archivo de un directorio de su equipo en el directorio /var/backup de un equipo remoto, use el siguiente comando:
>rsync -avz example1.txt user@remote_host:/var/backup/
Asegúrese de añadir la barra diagonal final detrás del directorio /var/backup/. Si no la inserta, el archivo example1.txt se copiará en el archivo /var/backup, y no dentro del directorio /var/backup/.
Compruebe que el archivo copiado está en la ruta absoluta /var/backup/example1.txt.
Para copiar el directorio source/ y su contenido en el directorio /var/backup/:
>rsync -avz /source/ user@remote_host:/var/backup/
Compruebe que el directorio copiado está en la ruta absoluta /var/backup/source/.
5 Configuración y uso de un servidor de rsync #
Un servidor de rsync permite la sincronización de archivos, copias de seguridad automatizadas y almacenamiento centralizado. Puede ejecutar rsync como un daemon rsyncd que escuche las conexiones entrantes en el puerto predeterminado 873. Este daemon puede recibir copying targets.
El archivo de configuración del daemon de rsync se divide en un archivo principal y varios módulos que contienen su destino de copia de seguridad. Esto hace que sea más fácil añadir destinos adicionales más adelante. Puede almacenar valores globales en archivos /etc/rsyncd.d/*.inc, mientras que sus módulos se colocan en /etc/rsyncd.d/*.conf.
La siguiente descripción explica cómo crear un servidor de rsync con un destino de copia de seguridad. Este destino se puede utilizar para almacenar sus copias de seguridad. Para crear un servidor de rsync, haga lo siguiente:
En su equipo local, cree un directorio
/var/backuppara almacenar todos los archivos de copia de seguridad.>mkdir /var/backupEspecifique la propiedad:
En este ejemplo, el usuario
tuxdel grupouserses propietario del directorio:>chown tux.users /var/backupConfigure el daemon de
rsyncd:Cree un directorio
/etc/rsyncd.d/>mkdir /etc/rsyncd.d/Cree el archivo de configuración
/etc/rsyncd.confprincipal y añada las líneas siguientes:log file = /var/log/rsync.log1 pid file = /var/lock/rsync.lock2 merge /etc/rsyncd.d3 include /etc/rsyncd.d4
/var/log/rsync.loges la ubicación donde rsync escribe los registros./var/lock/rsync.lockes el archivo que contiene el ID de proceso de la instancia del daemon de rsync en ejecución.Fusiona valores globales de los archivos
/etc/rsyncd.d/*.incen el archivo de configuración principal.Carga cualquier módulo (o destino) desde los archivos
/etc/rsyncd.d/*.conf. Estos archivos no deben contener ninguna referencia a valores globales.
Cree su módulo o su destino de copia de seguridad en el archivo
/etc/rsyncd.d/backup.confcon las siguientes líneas:backup.conf: backup module [backup] 1 uid = tux 2 gid = users 3 path = /var/backup 4 auth users = tux 5 secrets file = /etc/rsyncd.secrets 6 comment = Our backup target 7
En este ejemplo:
[backup]es el destino de copia de seguridad. Puede asignar cualquier nombre al destino de copia de seguridad. Puede usar un nombre según su propósito y usar el mismo nombre en su archivo*.conf.uid = tuxespecifica el nombre de usuario o el nombre del grupo que se utiliza cuando se realiza la transferencia de archivos.gid = usersdefine la ruta para almacenar las copias de seguridad (del paso 1).path = /var/backupdefine la ruta para almacenar las copias de seguridad (del paso 1).auth users = tuxespecifica una lista separada por comas de usuarios permitidos. En su forma más simple, contiene los nombres de usuario que pueden conectarse a este módulo. En nuestro caso solo se permite el usuario tux.secrets file = /etc/rsyncd.secretsespecifica la ruta de un archivo que contiene líneas con nombres de usuario y contraseñas simples.Cree el archivo
/etc/rsyncd.secretscon el siguiente contenido y sustituyaPASSPHRASE:# user:passwd tux:PASSPHRASE
Asegúrese de que el archivo solo lo pueda leer el usuario root:
chmod 0600 /etc/rsyncd.secrets
Inicie y habilite el daemon de
rsyncdcon:>systemctl enable rsyncd>systemctl start rsyncdEn el equipo remoto, pruebe el acceso a su servidor de
rsync:>rsync jupiter::Se muestra una respuesta similar a la siguiente:
backup Our backup target
Si la respuesta anterior no aparece, verifique el archivo de configuración, el firewall y la configuración de red.
Los pasos anteriores crean un servidor de
rsyncque puede usarse para almacenar copias de seguridad. El ejemplo también crea un archivo de registro que detalla todas las conexiones. Este archivo se almacena en/var/log/rsyncd.log. Esto resulta útil para depurar sus transferencias.Para mostrar el contenido del destino de copia de seguridad, use el siguiente comando en su equipo local:
>rsync -avz jupiter::backupEste comando muestra todos los archivos presentes en el directorio
/var/backupdel servidor. Esta solicitud también se incluye en el archivo de registro/var/log/rsyncd.log.Para copiar el directorio actual en su servidor de copia de seguridad
rsync, proporcione el directorio de origen. Si el directorio de origen es su directorio actual, utilice.>rsync -avz . jupiter::backupPor defecto,
rsyncno suprime archivos ni directorios cuando se ejecuta. Para habilitar la supresión, debe indicarse la opción adicional--delete. Para asegurarse de que no se suprime ningún archivo reciente en lugar de uno antiguo, puede utilizar la opción--updateen lugar de la anterior. Deberá resolver manualmente cualquier conflicto que se produzca.
6 Supresión y actualización de archivos y directorios con rsync #
Puede copiar y sincronizar archivos dentro del mismo equipo usando rsync si tiene permiso de escritura para la ubicación de destino. También puede suprimir archivos o directorios después de copiarlos.
Para copiar los archivos example1.txt y example2.txt de /source/directory/ en /destination/directory/:
>rsync -av --update /source/directory/ /destination/directory/
El comando rsync actualiza los archivos example1.txt y example2.txt en /destination/directory/ si son más antiguos que los archivos de origen. Si la versión del destino es más reciente, los archivos no se sobrescribirán. Además, todos los demás archivos o directorios nuevos de /source/directory/ se copiarán en /destination/.
Para copiar un archivo existente y suprimir un archivo que no existe en el directorio de destino:
>rsync -av --delete /source/directory/ /destination/directory/
En este caso, tanto el directorio de origen como el de destino contienen example1.txt y example2.txt. El directorio /destination/directory contiene un archivo extra, example3.txt.
El comando rsync copia o actualiza los archivos example1.txt y example2.txt de /source/directory/ en /destination/directory/. El comando también suprime el archivo example3.txt de /destination/directory/, ya que no existe en /source/directory/. Además, la estructura de directorios de /destination/directory/ se limpia para que coincida con la de /source/directory/.
7 Resolución de problemas de rsync #
La copia de archivos o carpetas puede fallar debido a varios motivos. Asegúrese de tener los permisos y recursos necesarios para realizar la copia de archivos.
A continuación se indican posibles métodos para resolver problemas:
Asegúrese de que ha seleccionado la versión más reciente de rsync. Para transferir archivos o directorios de forma remota, asegúrese de que rsync esté instalado tanto en el equipo de origen como en el de destino.
Asegúrese de tener el permiso de acceso a rsync requerido.
Asegúrese de proporcionar el nombre de host correcto para copiar archivos de forma remota.
Asegúrese de que el servicio rsync se esté ejecutando si está usando rsync en modo daemon.
8 Información legal #
Copyright© 2006–2025 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Esta información de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.