Copiando archivos en red ahorrando tráfico y tiempo

Hace poco he empezado a hacer el ciclo de sistemas, para compensar mi falta de titulación oficial en este aspecto, y me encontré con una situación que seguro que en más de una ocasión os habréis encontrado. Los apuntes se cuelgan en una unidad en red (y el acceso de Dropbox o Ubunte One está bloqueado por el proxy). Así pues, la solución más comoda es, evidentemente copiar dichos apuntes en un pendrive. Podía copiar la carpeta donde cuelgan dichos apuntes pero en dicha carpeta cuelgan apuntes de otras asignaturas en las que no estoy matriculado, siendo más o menos esta la estructura de la unidad en red
R-IANA

ASIGNATURA1

ASIGNATURA2

ASIGNATURA3

etc.

Para esto el comando cp (o su equivalente en el entorno gráfico) nos funciona perfectamente… el primer día…o la primera semana, pero después no pasaremos un tiempo precioso (sobre todo si la copia la haces a última hora como yo) copiando archivos que realmente ya tienes y no han sido modificados.

Y entonces me acordé de rsync que permite analizar previa a la copia si los archivos han sido modificados (basándose en la fecha de modificación del archivo y en su tamaño) y copiar solo aquellos que hayan cambiado.

Para ello me generé un script con un comando por línea para cada carpeta de la asignatura que me interesaba :

rsync -riav /media/ATEIS/iana/FH/ /media/Novo\ volume/apuntes/

y asi con cada una. El porqué de cada opción es sencillo: -r hace que copie recursivamente, -i me muestra un pequeño resumen, -a mantiene losé atributos del fichero y -v para que me vaya dando algo más información (realmente el -i y el -v no son imprescindibles)

Pero me encontré que algunos profesores habían colgado en sus carpetas algún software que se usaría en sus asignaturas, así que añadí el parámetro –exclude-from=/home/xavy/scripts/excludeapuntes , que apunta al archivo exclude apuntes donde incluí líneas que comenzaban por – (para excluir archivos de ese tipo) y un patrón de los archivos que no deseaba (en este caso *.iso, *.deb y *,exe)

Ahora ya todo funcionaba perfectamente, pero se me ocurrió rizar el rizo: rsync incluye, un algoritmo que analiza el interior del fichero, y pensé, por qué no hacer que copie solo la modificación de ese archivo (en lugar de copiar enteros los archivos que hayan sido cambiado). Asi pues le añadí el parámetro –no-whole-file, ya que por defecto rsync incluye aunque no se especifique la opción -W que hace precisamente lo contrario de lo que queria, es decir, hace que trate los ficheros como unidades indivisibles.

Ahora ya tenia la copia de solo lo que quería y de solo los trozos que se habían cambiado, pero seguí rizando el rizo rizado, y recordé que rsync además tiene una función de compresión, así que, ¿por qué no usarla? pues dicho y hecho, parámetro -z añadido.

Realmente podría haber rizado más la cosa y añadido la opción -c para que en lugar de fiarse de la fecha y tamaño del archivo para ver si este había cambiado, pasase un checksum para tener 100% seguro si había habido cambios, pero personalmente ya lo consideré excesivo… no creéis?

Espero que este caso práctico os haya dado una pista de las grandes bondades de rsync, y os haya aclarado alguna de sus opciones más frecuentes

2 comments for “Copiando archivos en red ahorrando tráfico y tiempo

  1. 21/10/2012 at 18:24

    With havin so much written content do you ever run into any problems of plagorism or copyright infringement? My blog has a lot of exclusive content I’ve either authored myself or outsourced but it appears a lot of it is popping it up all over the web without my authorization. Do you know any methods to help reduce content from being stolen? I’d genuinely appreciate it.

    • 22/10/2012 at 17:54

      HI Vitaly:

      I actually don’t really care much about being plagiarized, being the contents of this littñe blog licensed on CC . So I am afraid I cannot be of much help in this aspect, but if you look for scripts for wordpress you can find codes that help to avoid being copied.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.