[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Una de bash y diff recursivo



El día 25 de noviembre de 2011 13:16, jmramirez (mas_ke_na)
<mas_ke_na@hotmail.com> escribió:
> -----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
> jmramirez@cosmantenimiento.com
>
>        done
>
> # EOF
> #####
>
>        Todo va bien, menos la parte del "diff -r"
>
> Pruebas:
>
>
> srvbacula:~# ls -lRth /root/SERVIDORES.54/NAVISION > /tmp/Navision.dir
>
> srvbacula:~# ls -lRth  /root/SERVIDORES.61/NAVISION > /tmp/Navisionbak.dir
>
> srvbacula:~# diff -r /tmp/Navision.dir /tmp/Navisionbak.dir |grep "<"
>>/tmp/Navision.txt
>
> srvbacula:~# tail -n 10  /tmp/Navision.txt
> < /root/SERVIDORES.54/NAVISION/Licencias Navision:
> < -rwxrwxrwx 1 cos root 19K mar 16  2010 PROD_HASTA_ENE_2012.flf
> < -rwxrwxrwx 1 cos root 24K ene  7  2010 COS_2010_01_07.flf
> < -rwxrwxrwx 1 cos root 12K ene  7  2010 COS_2010_01_07.txt
> < /root/SERVIDORES.54/NAVISION/Plantillas:
> < -rwxrwxrwx 1 cos root  20K may 19  2010 4.DOC
> < -rwxrwxrwx 1 cos root  20K may 19  2010 3.DOC
> < -rwxrwxrwx 1 cos root  40K may 11  2010 2.XLS
> < -rwxrwxrwx 1 cos root 1,5M may 11  2010 1.DOC
> < -rwxrwxrwx 1 cos root 1,2M may 10  2010 1.PDF
>
> Como veis no da la ruta completa, por eso no me va el script.
>
> Ejemplo:
>
> cp /root/SERVIDORES.54/NAVISION/$fichero
> /root/SERVIDORES.61/NAVISION/$fichero
>
> Pero $fichero es:
> $fichero=4.DOC
>
> En lugar de:
> $fichero=Plantillas/4.DOC
>
>
> NOTA: por ahora estoy con echo en lugar de cp, para no romper nada.
>
> Gracias por leerme hasta aquí y espero haberme explicado correctamente.
> No soy programado, como se puede ver XD. Lo mismo hay otra forma mejor
> de hacer lo que quiero, sin usar el rsync.
>
> Un saludo
> - --
> "Si los tontos volaran, el cielo se oscurecería"
>
> No me envié correos en formatos propietarios
> http://www.gnu.org/philosophy/no-word-attachments.es.html
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iQEcBAEBAgAGBQJOz4crAAoJEOWNzQnqy+fzx9MIANlppvSZl78WkV3WP2Tsr+6a
> eVTo4vYsboaLEN5kf3E7N/T0GKDDnSjTI6G76WPy7bmI+xrLf5dMtiTEyNGpA3+Z
> MkM5+foDMQNrZT7ll/CiSHfJtxgLaM36yfG+dB7yQbv0kn7BtEzLNqgc7dVSGnMN
> Df+miqF1d3xuN4/qVUf3gC+bHlCDiWXyInNRvcLe4kwboc+i8YzW55toCExHh+bt
> jHijvI4fjxAEtKvMBb+R2Bo3bEVphAc7bVyF8ttWSM+kkcGTsvIti7oZWZjx5se1
> 5igPbyoTDqRdGOXmjpFx9c/xiwdC4/aR3E8pNe1tUKNuL6ufhP3fzMkNAMS3wDs=
> =sET6
> -----END PGP SIGNATURE-----
>
>
>

Creo que rsync es una buena herramienta, si falla la puedes relanzar
sin problemas....
También tienes unison o algo así que permite sincronizaciones
bidireccionales, a mi me dió un poco de miedo....

Sinceramente, no creo que tu script vaya a superar al rsync....  :-)

S2.


Reply to: