2011/11/25 jmramirez (mas_ke_na) <mas_ke...@hotmail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Buenas a todos
>
>        Estoy haciendo un script para que sincronice dos directorios (un
nas de
> un edificio con otro nas en otro edificio), antes tenia puesto el rsync.
> Pero se agotaba el tiempo de espera y daba muchos fallos ( la conexión
> entre nas'es no es muy buena). Así que decidí copiar archivo por archivo
> ( hago otros backups correctamente de esta forma pero este me da
> problemas (Por los subdirectorios)) y que enviara correo. Así en caso de
> fallos se en que punto se quedo y puedo retomarlo.
>
>        Lo que ocurre es que listo los directorios y los comparo con diff.
Pero
> me he encontrado con muchos subdirectorios y con el modificador -r del
> diff no me funciona como yo espero. Una alternativa "chunga" seria que
> me creara un diff por cada subdirectorio, pero no se si el día de mañana
> habrá nuevos directorios.
>
>        Así que recurro a la lista a ver si alguien puede ayudarme:
>
> #####
> #!/bin/bash
>
> # guardo el listado de los directorios en ficheros.
>
> Navision=`ls -lRth /root/SERVIDORES.54/NAVISION > /tmp/Navision.dir`
> Navisionbak=`ls -lRth  /root/SERVIDORES.61/NAVISION >
/tmp/Navisionbak.dir`
>
> # Comparo con diff y paso al fichero lo que hay que copiar
>
> diff -r /tmp/Navision.dir /tmp/Navisionbak.dir |grep "<"
>/tmp/Navision.txt
>
> # Limpio el listado para dejar solo el nombre a fin de copiarlo
>
> Navisionlimpio=`cat /tmp/Navision.txt | awk {'print $6'} >
> /tmp/Navisionlimpio.txt`
>
> # comparo con diff usando una lista ( lee linea por linea)
> # Por cada linea del fichero, guarda la hora inicio, guarda el tiempo de
> ejecucion del comando
> # copia la cinta correspondiente guardando un log que luego envio por
> correo y guarda la hora de finalizacion
>
> # Navision
> for fichero in $(cat /tmp/Navisionlimpio.txt)
>        do
>                tiempo=`date > /tmp/Navision.log`
>                /usr/bin/time -p -o /tmp/timeNavision.log echo
> /root/SERVIDORES.54/NAVISION/$fichero
> /root/SERVIDORES.61/NAVISION/$fichero > /tmp/Navisioncopias.log
>                tiempo1=`date > /tmp/tiempo1Navision.log`
>                /usr/local/nagios/libexec/correo_entreNASES.pl
> jmrami...@cosmantenimiento.com
>
>        done
>
> # EOF
> #####
>


No se si me he perdido algo pero creo que no lo estas enfocando de la mejor
manera. ¿Que te parece así?

DIR_A_SINCRONIZAR=
INTERVALO_EN_DIAS=1
DIR_DESTINO=

find $DIR_A_SINCRONIZAR -mtime -$INTERVALO_EN_DIAS|while read file; do
   cp -p $file $DIR_DESTINO;
done

lo pones en un cron que se ejecute una vez al día y te copiara solo los
archivos que se hayan modificado/creado des de la última ejecución.
Quedará hacer algo más para asegurar que si un día falla no se queden sin
copiar los cambios de ese día.
-- 
Marc

Responder a