En este post vamos a mostrar cómo crear un script que sincronice contenido entre servidores linux. La ejecución de este script puede ser automatizada, permitiendo un ahorro de tiempo en la tarea.
Escenario
- Nodo linux origen con ssh instalado y habilitado + comando rsyn instalado
- Nodo linux destino con ssh instalado y habilitado + comando rsyn instalado
Explicación partes script
#!/bin/bash rsync -avz --progress --recursive user@IP-servidor-remoto:/ruta-origen/* /ruta-destino/
#!/bin/bash: menciona la shell que va a ejecutar los comandos que van dentro del script.
rsync: Comando que permite la sincronización de elementos entre el mismo o distintos nodos.
-a: Copia los enlaces simbólicos, conserva los permisos, la información del dueño y el grupo del archivo, además de conservar los archivos de dispositivo y los archivos especiales.
-v: Muestra el progreso del comando.
-z: Los datos que se envían son comprimidos previamente.
–progress: muestra el progreso de sincronización, mostrando un log de los items sincronizados o una barra de progreso.
–recursive: copia de forma recursiva el directorio mencionado en el script.
user@IP-servidor-remoto: en el apartado “user” insertaremos el nombre de usuario con permisos de acceso al nodo remoto y en “IP-servidor-remoto” insertaremos la ip del nodo remoto.
:: separa la ip de la ruta remota.
/ruta-origen/: ruta absoluta de la que queremos obtener los recursos a sincronizar.
/ruta-destino/: ruta local en la que se va a descargar el contenido del nodo origen.
Ejecución script
Para poder ejecutar el script deberemos asignarle los permisos que le permiten realizar dicha acción en el sistema. Podemos hacerlo con el siguiente comando:
chmod +x nombrescript.sh
Ahora ya podemos ejecutar el script de la siguiente forma:
./nombrescript.sh
Al no insertar la contraseña del nodo remoto en el script, este nos la solicitara ahora, según la insertemos comenzara la sincronización, podremos seguir el estado de esta gracias a la inserción del parámetro “–progress”.