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.