Buenos días, hoy me he encontrado con dificultades de migrar el contenido de un servidor que hacia la labor de almacén de correo en Linux, dicho contenido esta exportado por NFS a través de una cabina de almacenamiento y necesitaba migrarlo a una nueva. Debido a la estructura interna de directorios que tiene el contenido, al tratar de realizar un rsync para la migración el servidor se quedaba sin recursos y me quedaba sin poder acceder a él.

Cuando lanzamos un rsync en Linux, lo primero que realiza es construir una base de datos de los ficheros que va a copiar, por lo que tiene que recorrer cada uno de los directorios del contenido.


Al comprobar que el directorio principal del contenido tenia 247 carpetas hijas, he decidido migrar una a una, automatizando el proceso con el siguiente script, os voy a explicar como lo he hecho.

Lo primero de todo que he realizado es sacar el listado de directorios y guardarlo en un fichero llamado listado.txt teniendo en cuenta de eliminar el carácter / .

ls -p /exports/BuzonCorreo/ | grep '/' | sed -e "s/\///g" > listado.txt

listado de directorio por DBigCloud


Y ahora por cada directorio en el fichero vamos a realizar lo siguiente:

  • Crear la carpeta con el mismo nombre.
  • Proporcionar los permisos de la carpeta
  • Cambiar el grupo y propietario de la carpeta.
  • Realizar la sincronización.
  • Dejamos 5 segundos de pausa entre sincronizaciones.

#!/bin/bash

ORIGEN='/exports/BuzonCorreo/'
DESTINO='/NuevoContenido/BuzonCorreo/'

for p in $(xargs < listado.txt);
do
    mkdir -p ${DESTINO}${p}
    chmod 700 ${DESTINO}${p}
    chown sistemas:dbigcloud ${DESTINO}${p}
    rsync -av --exclude=lost+found --bwlimit=10000 ${ORIGEN}${p} ${DESTINO}${p} > ${DESTINO}'nohups/'${p}'_nohup.txt'
    sleep 5
done

Como podeis observar en el rsync tenemos las opciones:

--exclude=lost+found Con la cual vamos a excluir carpetas en este caso la carpeta lost+found

--bwlimit=10000 Con esta opción voy a limitar el ancho de banda, es un servidor de producción y no puedo permitirme su saturación.

Además por cada rsync que voy a realizar voy a guardar su salida en un fichero para verificar que la migración se va realizando correctamente.

nohup time bash migra.sh > migracion.out &

De esta forma he podido realizar la migración del servidor Linux sin complicaciones. Como siempre digo los scripts son mejorables y se pueden realizar de muchas formas.

 

Quizás te interese las siguientes entradas sobre Linux:

 


Compártelo:

FacebookTwitterDiggGoogle BookmarksLinkedIn

Daniel Romero Sanchez
Author: Daniel Romero SanchezWebsite: https://www.dbigcloud.com
Responsable de sistemas y Arquitecto Cloud - vExpert 2015/19- VCP550-DCV - LPIC-1


Escribir un comentario

Código de seguridad
Refescar

DBigCloud en tu idioma

esenfrdeitpt

Gold Sponsor

 

vExpert 2020

DbigCloud newsletter

Suscribete a nuestra newsletter y recibe cada semana los mejores artículos seleccionados por DBigCLoud.
Email type
Please wait