GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar Rsync para copiar/sincronizar archivos entre servidores

Introducción

Rsync es una excelente manera de sincronizar archivos entre servidores o simplemente mover archivos entre servidores sin necesidad de FTP. Conecta dos servidores a través del protocolo SSH, lo que permite la transferencia de datos entre ellos. El demonio rsync, que se trata más adelante en este artículo, usa su propio protocolo y se ejecuta en un puerto específico. A continuación repasaremos los conceptos básicos; copiar entre servidores, copiar a/desde demonios rsync y mantener archivos sincronizados entre sí en diferentes servidores.

Requisitos

– 2 servidores Linux que tengan instalado rsync.
– El servidor que inicia la transferencia debe poder acceder al puerto SSH del servidor receptor (o al puerto rsync, si se conecta a un demonio rsync).
– El usuario debe tener permisos para usar rsync (los ejemplos a continuación se ejecutarán como usuario root).

Fundamentos de Rsync

Rsync puede enviar archivos a otro servidor o extraer archivos de otro servidor. La diferencia entre los dos está en la sintaxis. Si especifica primero su archivo local, se iniciará una inserción. Si especifica su host remoto primero, iniciará una extracción. Veamos el tipo exacto de sintaxis a continuación.

rsync [-options] SOURCE [email protected]:DESTINATION

Tirar:

rsync [-options] [email protected]:SOURCE DESTINATION

El [-options] son todas las diferentes opciones que se pueden utilizar. Algunos los mencionaré y explicaré en los ejemplos a continuación. Para obtener una lista completa de todas las opciones, revise la página del manual.

SOURCE representa el /directory/path/to/the/file/or/directory que será copiado.

DESTINATION representa el /directory/path/to/the/new/location en el host receptor.

El [email protected] es el usuario en el host remoto para que rsync se conecte.

x.x.x.x representa la dirección IP del host remoto. También puede ser un nombre de host si tiene DNS configurado.

Ahora, supongamos que necesita especificar un puerto fuera del puerto predeterminado 22 para que rsync se conecte. Harías esto con la opción -e . Vea el ejemplo a continuación (reemplace PORT con el número de puerto al que necesita conectarse).

Empujar:

rsync [-other options] -e 'ssh -p PORT' SOURCE [email protected]:DESTINATION

Tirar:

rsync [-other options] -e 'ssh -p PORT' [email protected]:SOURCE DESTINATION

Ejemplos simples de transferencia de archivos

Primero, iniciaremos una transferencia de un archivo .txt de un servidor a otro.

rsync /home/simple.txt [email protected]:/home

Este comando copiará el archivo simple.txt desde nuestro servidor local, al /home de nuestro servidor remoto directorio.

Transferencia Rsync entre dos servidores.

A la derecha, hicimos un ls antes de rsync y luego nuevamente después de ejecutarlo, para que podamos ver que el archivo fue copiado.

Este es un ejemplo de extracción:

rsync [email protected]:/home/pullme.txt /home

El archivo pullme.txt está en el servidor remoto (x.x.x.x) en /home directorio. Este comando copiará el archivo en el /home del servidor local. directorio.

Puede empujar/tirar de cualquier archivo que especifique utilizando este método. Ahora, entremos en los directorios.

Transferencia de archivos de directorio

Mover un directorio es simple. Agregue el -d opción, y moverá solo el directorio. Si desea mover el directorio y su contenido, use -r en lugar de copiar recursivamente sobre todos los archivos y subcarpetas. Mientras estamos en eso, agreguemos el -t opción. Esta opción copiará la fecha y la hora en que se modificó por última vez el archivo. Usando -t es bueno para mantener registros precisos de cuándo se editó un archivo por última vez. Estas opciones funcionarán empujando o tirando.

En el siguiente ejemplo, he movido el pullme.txt archivo en un /transfer_me directorio. También he creado el directorio /simple (que contiene el archivo simple.txt ) dentro de /transfer_me . Luego presioné el /transfer_me directorio al servidor remoto.

rsync -rt /home/transfer_me [email protected]:/home

directorio Rsync

Como puede ver, la carpeta en el servidor remoto (receptor) contiene todos los subdirectorios y archivos que tenía la carpeta local en el servidor de inicio.

Conexión a un demonio Rsync

Esta sección requiere un servidor que ejecute un demonio rsync. Para probar estas instrucciones, consulte nuestro artículo sobre cómo configurar un demonio rsync.

Ahora que hemos repasado la transferencia básica de archivos/directorios con rsync, podemos repasar la conexión a un demonio rsync. Un daemon rsync se ejecuta constantemente en un servidor, por lo que puede enviar y/o extraer del directorio de daemon rsync asignado de ese servidor en cualquier momento. Hay dos formatos para tirar y empujar a un demonio rsync.

Tirar:

rsync [-options] rsync://[email protected][:PORT]SOURCE DESTINATION

Tire (tenga en cuenta los dos puntos dobles después de la dirección IP/nombre de host):

rsync [-options] [email protected]::SOURCE DESTINATION

Empujar:

rsync [-options] SOURCE rsync://[email protected][:PORT]DESTINATION

Presione (tenga en cuenta los dos puntos dobles después de la dirección IP/nombre de host):

rsync [-options] SOURCE [email protected]::DESTINATION

Vea a continuación cómo extraje el demonio rsync (el uso del número de puerto 873 a continuación es redundante, ya que ese es el puerto de conexión predeterminado del demonio rsync; lo incluyo para demostrar cómo formatearía el comando si hubiera configurado un puerto no predeterminado en su demonio rsync):

rsync -rt rsync://[email protected]:873/files/ /home/pulledfromdaemon

Extracción del demonio Rsync

Aquí, files es el nombre del módulo. Ya que estamos extrayendo todo en ese directorio (pullme.txt y simple.txt ) simplemente lo dejamos en el nombre del módulo para la fuente.

Sincronización de archivos con Rsync

Ahora discutiremos cómo sincronizar archivos. Puede realizar una sincronización con un solo comando rsync, con las opciones correctas. Puede poner este comando en un script o trabajo cron para que se ejecute bajo demanda o automáticamente. El comando varía si está empujando, tirando o usando el daemon, pero las opciones siguen siendo las mismas.

rsync -rtu --delete SOURCE [email protected]:/DESTINATION

En este ejemplo, preste atención a -rtu --delete opciones Ya hemos discutido el -r y -t opciones:copia recursiva y copia de marca de tiempo. El -u La opción le dice a rsync que actualice solo archivos diferentes/modificados/agregados desde SOURCE al DESTINATION . La opción --delete eliminará todos los archivos del DESTINATION que la SOURCE puede que ya no tenga. Con esto (y otras opciones, como -l para enlaces simbólicos) puede mantener directorios en múltiples ubicaciones actualizados con la fuente.

Ahora puede rsync archivos entre servidores, rsync daemons y mantener los archivos sincronizados entre sí con facilidad. ¡Gracias por seguir este tutorial! Vuelva a consultar aquí para obtener más actualizaciones o eche un vistazo a los muchos servicios que ofrecemos, incluido el alojamiento de VPS.

Obtenga más información sobre nuestros servicios de alojamiento VPS y servidores privados virtuales.


Linux
  1. Cómo usar Rsync para sincronizar archivos nuevos o cambiados/modificados en Linux

  2. Cómo usar rsyslog para crear un servidor de agregación de registros de Linux

  3. ¿Cómo usar el comando Rsync en Linux?

  4. Cómo copiar directorios recursivamente usando rsync mientras se excluyen archivos específicos

  5. ¿Cómo usar rsync desde una PC con Windows a un servidor Linux remoto?

Cómo usar el comando rsync para copiar datos localmente y a través de SSH

Cómo Rsync archivos entre dos servidores Linux automáticamente

Cómo sincronizar dos servidores web en Linux automáticamente

Cómo usar FTP para mover archivos entre su computadora y su dispositivo Android

Cómo usar Docker Cp para copiar archivos entre el host y los contenedores

Usar NTP para sincronizar la hora