GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo sincronizar directorios locales y remotos en Linux

Este tutorial describe cómo sincronizar directorios locales y remotos en Linux usando Lsyncd (Demonio de sincronización en vivo). Usando Lsyncd, podemos duplicar directorios locales a locales o directorios locales a remotos. Resulta útil cuando desea sincronizar datos entre directorios que se actualizan con frecuencia con nuevos contenidos. Lsyncd está diseñado para sincronizar un árbol de directorios local con un perfil bajo de cambios esperados en un espejo remoto. Es especialmente útil para sincronizar datos de un área segura a un área no tan segura.

Instalar Lsyncd en Linux

En Debian y sus derivados como Ubuntu, Linux Mint ejecuta el siguiente comando para instalar Lsyncd:

$ sudo apt-get install lsyncd

En RHEL, CentOS, primero debe habilitar el repositorio EPEL.

$ sudo yum install epel-release

Luego, instale Lsyncd usando el comando:

$ sudo yum install lsyncd

Configuración de Lsyncd en Debian y Ubuntu y derivados

Lsyncd no proporciona ningún archivo de configuración predeterminado en los sistemas basados ​​en DEB. Necesitamos crearlo manualmente. Sin embargo, Lsyncd incluye algunos archivos de configuración de muestra que son útiles para tener una idea básica de qué/cómo realiza la sincronización. Los archivos de configuración de ejemplo se encontrarán en "/usr/share/doc/lsyncd-*/examples" directorio.

$ ls /usr/share/doc/lsyncd/examples/

Salida de muestra:

lbash.lua lgforce.lua lpostcmd.lua lrsyncssh.lua
lecho.lua limagemagic.lua lrsync.lua

Como puede ver en el resultado anterior, cada archivo de configuración termina con .lua extensión. Es porque el archivo de configuración de lsync está escrito usando lenguaje de programación Lua . Echemos un vistazo a un archivo de configuración de muestra.

$ cat /usr/share/doc/lsyncd/examples/lrsync.lua

Así es como se ve el archivo de configuración de Lrsync:

----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings = {
 statusFile = "/tmp/lsyncd.stat",
 statusInterval = 1,
}

sync{
 default.rsync,
 source="src",
 target="trg",
}

Configuración de Lsyncd en RHEL y CentOS

En los sistemas RHEL y CentOS, el archivo de configuración Lsyncd se creará automáticamente. Puede ver el contenido de este archivo usando el comando:

$ cat /etc/lsyncd.conf

Y los archivos de configuración de ejemplo están disponibles en la siguiente ubicación.

$ ls /usr/share/doc/lsyncd-2.1.5/examples/

Sincronice directorios locales y remotos en Linux usando Lsyncd

Como ya se indicó, Lyncd puede sincronizar el contenido de dos directorios locales y un directorio local con un directorio remoto. Primero, veremos cómo sincronizar directorios locales.

1. Sincronizar directorios locales en Debian, Ubuntu

Ahora sincronizaremos dos directorios locales.

Vamos a crear dos directorios con algunos contenidos de ejemplo.

$ sudo mkdir source_dir
$ sudo mkdir dest_dir

Cree algunos archivos aleatorios en el directorio source_dir:

$ sudo touch source_dir/file{1..10}

Opcionalmente, puede crear algunos archivos de registro para Lysyncd. Esto es solo opcional. Si no desea archivos de registro, omita este paso.

$ sudo mkdir /var/log/lsyncd
$ sudo touch /var/log/lsyncd/lsyncd.{log,status}

A continuación, cree un archivo de configuración para Lsyncd:

$ sudo mkdir /etc/lsyncd
$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Edite/modifique las siguientes líneas:

settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
        default.rsync,
        source = "/home/sk/source_dir",
        target = "/home/sk/dest_dir",
}

Reemplace la ruta de los directorios de origen y destino con sus propios valores. Guarde y cierre el archivo.

Habilite e inicie o reinicie el servicio Lsyncd usando los comandos:

$ sudo systemctl enable lsyncd
$ sudo systemctl restart lsyncd

Ahora, verifique el contenido de los directorios source_dir y dest_dir.

$ ls source_dir/

Salida de muestra:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Compruebe el contenido de dest_dir:

$ ls dest_dir/

Salida de muestra:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

¿Ver? Hemos creado archivos en el directorio source_dir únicamente y el contenido de este directorio se ha sincronizado automáticamente con el directorio dest_dir.

Además, puede revisar los archivos de registro para verificar si la replicación se completó o no.

$ tail -10 /var/log/lsyncd/lsyncd.log

Salida de muestra:

Sat Apr 15 17:07:34 2017 Normal: recursive startup rsync: /home/sk/source_dir/ -> /home/sk/dest_dir/
Sat Apr 15 17:07:34 2017 Normal: Startup of "/home/sk/source_dir/" finished.

Compruebe el archivo de estado de Lsyncd:

$ more /var/log/lsyncd/lsyncd.status

Salida de muestra:

Lsyncd status report at Sat Apr 15 17:07:44 2017

Sync1 source=/home/sk/source_dir/
There are 0 delays
Excluding:
 nothing.


Inotify watching 1 directories
 1: /home/sk/source_dir/
Descargar - Libro electrónico gratuito:"La administración avanzada de GNU/Linux"

2. Sincronice directorios locales en RHEL, CentOS

Editar archivo de configuración de Lsyncd:

$ sudo nano /etc/lsyncd.conf

Edite y modifique las siguientes líneas:

----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
-- For more examples, see /usr/share/doc/lsyncd*/examples/
-- 
settings {
 logfile = "/var/log/lsyncd.log",
 statusFile = "/var/log/lsyncd.status"
}

sync {
 default.rsync,
 source = "/root/source_dir",
 target = "/root/dest_dir",

Reemplace la ruta de los directorios de origen y destino con sus propios valores. Guarde y cierre el archivo.

Habilite e inicie el servicio Lsyncd usando los comandos:

$ sudo systemctl enable lsyncd
$ sudo systemctl start lsyncd

Ahora, verifique el contenido de los directorios source_dir y dest_dir.

$ ls source_dir/

Salida de muestra:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Compruebe el contenido de dest_dir:

$ ls dest_dir/

Salida de muestra:

file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

¡Felicitaciones! El contenido de source_dir se ha sincronizado correctamente con el directorio dest_dir.

Además, puede revisar los archivos de registro para verificar si la replicación se completó o no.

$ tail -10 /var/log/lsyncd.log

Compruebe el archivo de estado de Lsyncd:

$ more /var/log/lsyncd.status

3. Sincronice directorios remotos en sistemas Debian, Ubuntu

Necesitamos configurar SSH sin contraseña acceso. Esto se debe a que Lsyncd replicará automáticamente el contenido del directorio local en un directorio remoto sin la intervención del usuario.

$ sudo su
# ssh-keygen -t rsa

No ingrese ninguna frase de contraseña. Simplemente presione ENTER para aceptar los valores predeterminados.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/home/sk/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:dHc2aKk5F2wBq7CIc5sVHJwYNjoPdwgxDKb1KuBBkgs [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|o*=.++.. ... |
|E..*.+o. o + |
|+o+ + = . o O + |
|+ .B o = o * + . |
|..+ + o S + . |
| . o + o |
| o |
| |
| |
+----[SHA256]-----+

Ahora, copie la clave pública SSH a su sistema remoto:

# ssh-copy-id [email protected]

Salida de muestra:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.43.150 (192.168.43.150)' can't be established.
ECDSA key fingerprint is SHA256:U7I0O1OOzzbHFlhIG0HoGDr1usHzLBju6Jmr6bUB9Es.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Aquí, 192.168.43.150 es la dirección IP del sistema remoto.

Ahora, podrá conectarse mediante SSH a su sistema remoto sin tener que ingresar la contraseña:

# ssh [email protected]

Cree un directorio de destino en el sistema remoto con el comando:

# mkdir remotesync

Salir del sistema remoto:

# exit

A continuación, edite el archivo de configuración de Lsyncd en la máquina de origen:

$ sudo nano /etc/lsyncd/lsyncd.conf.lua

Edite/modifique las siguientes líneas:

settings {
 logfile = "/var/log/lsyncd/lsyncd.log",
 statusFile = "/var/log/lsyncd/lsyncd.status"
}

sync {
 default.rsync,
 source = "/home/sk/source_dir",
 host = "192.168.43.150",
 targetdir = "/root/remotesync",
}

Aquí, 192.168.43.150 es la dirección IP de mi host remoto. Y, /root/remotesync/ es el directorio de destino en mi sistema remoto. Reemplace los valores con los suyos propios. Guarde y cierre el archivo.

Reinicie el servicio Lsyncd para replicar el contenido del directorio de origen al destino.

$ sudo systemctl restart lsyncd

Ahora, SSH a su sistema remoto:

$ ssh [email protected]

Y verifique el contenido del directorio de destino (es decir, /root/remotesync/ en nuestro caso). Verá que todos los archivos del directorio de origen del sistema local se han replicado en el directorio de destino en el sistema de destino.

[email protected] ~]# ls remotesync/
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

Este procedimiento es el mismo para los sistemas RHEL y CentOS. Configure el inicio de sesión SSH sin contraseña y asegúrese de haber modificado las rutas de origen y destino correctas en el archivo de configuración principal de Lsyncd (/etc/lsyncd.conf) en su sistema RHEL o CentOS, y el resto de los pasos son los mismos.

Descargar - Guía gratuita:"10 formas sencillas de restaurar su sistema Linux"

Sabes cómo sincronizar directorios locales y remotos en Linux usando Lsyncd. Como puede ver, este es un método muy fácil y directo.

Espero que esto ayude.


Linux
  1. Cómo buscar y eliminar directorios recursivamente en Linux

  2. Cómo sincronizar directorios usando Lsyncd en Ubuntu 20.04

  3. Cómo cambiar el nombre de Git Branch Local y Remote

  4. Cómo encontrar y eliminar directorios y archivos vacíos en Linux

  5. Linux:sincronice archivos continuamente, de una manera

Cómo sincronizar archivos y directorios usando Zaloha.sh

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo encontrar y eliminar directorios vacíos en Linux

Lsyncd:sincroniza directorios locales con Linux remoto

Cómo copiar archivos y directorios en la terminal de Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux