documentation.suse.com / Copia de archivos y directorios con rsync
SUSE Linux Enterprise Server 16.0

Copia de archivos y directorios con rsync

Fecha de publicación: 04 Nov 2025
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 /directory1 se copia en /destination.

  • > rsync -av /directory1 /destination/

    En el ejemplo anterior, el directorio /directory1 se 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.txt y example2.txt en el directorio de destino.

Los valores más comunes de OPTIONS se indican a continuación:

  • -V

    Activa la salida de texto detallada.

  • -a

    Modo 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.

  • -z

    Comprime los datos transmitidos.

  • -n o --dry-run

    Realiza una prueba sin realizar cambios.

  • -r

    Se repite en los directorios.

  • --progress

    Muestra el progreso durante la transferencia.

  • -b

    Realiza una copia de seguridad durante la sincronización de los datos.

  • -h

    Muestra los números en el resultado con un formato legible para humanos.

  • -e

    Para transferencias remotas, indica a rsync que utilice el protocolo SSH.

  • -q or --quiet

    Silencia el comando rsync y el resultado de la opción.

  • --version

    Muestra 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.txt a 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/
Nota
Nota: barra diagonal final

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.

Procedimiento 1: Configuración de un servidor de rsync

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:

  1. En su equipo local, cree un directorio /var/backup para almacenar todos los archivos de copia de seguridad.

    > mkdir /var/backup
  2. Especifique la propiedad:

    En este ejemplo, el usuario tux del grupo users es propietario del directorio:

    > chown tux.users /var/backup
  3. Configure el daemon de rsyncd:

    1. Cree un directorio /etc/rsyncd.d/

      > mkdir /etc/rsyncd.d/
    2. Cree el archivo de configuración /etc/rsyncd.conf principal 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

      1

      /var/log/rsync.log es la ubicación donde rsync escribe los registros.

      2

      /var/lock/rsync.lock es el archivo que contiene el ID de proceso de la instancia del daemon de rsync en ejecución.

      3

      Fusiona valores globales de los archivos /etc/rsyncd.d/*.inc en el archivo de configuración principal.

      4

      Carga cualquier módulo (o destino) desde los archivos /etc/rsyncd.d/*.conf. Estos archivos no deben contener ninguna referencia a valores globales.

  4. Cree su módulo o su destino de copia de seguridad en el archivo /etc/rsyncd.d/backup.conf con 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:

    1

    [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.

    2

    uid = tux especifica el nombre de usuario o el nombre del grupo que se utiliza cuando se realiza la transferencia de archivos.

    3

    gid = users define la ruta para almacenar las copias de seguridad (del paso 1).

    4

    path = /var/backup define la ruta para almacenar las copias de seguridad (del paso 1).

    5

    auth users = tux especifica 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.

    6

    secrets file = /etc/rsyncd.secrets especifica la ruta de un archivo que contiene líneas con nombres de usuario y contraseñas simples.

  5. Cree el archivo /etc/rsyncd.secrets con el siguiente contenido y sustituya PASSPHRASE:

    # user:passwd
    tux:PASSPHRASE
  6. Asegúrese de que el archivo solo lo pueda leer el usuario root:

    chmod 0600 /etc/rsyncd.secrets
  7. Inicie y habilite el daemon de rsyncd con:

    > systemctl enable rsyncd
    > systemctl start rsyncd
  8. En 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 rsync que 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.

  9. Para mostrar el contenido del destino de copia de seguridad, use el siguiente comando en su equipo local:

    > rsync -avz jupiter::backup

    Este comando muestra todos los archivos presentes en el directorio /var/backup del servidor. Esta solicitud también se incluye en el archivo de registro /var/log/rsyncd.log.

  10. 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::backup

    Por defecto, rsync no 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 --update en 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.