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