{"id":491,"date":"2012-10-13T07:39:39","date_gmt":"2012-10-13T06:39:39","guid":{"rendered":"http:\/\/www.jbahillo.com\/?p=491"},"modified":"2012-10-13T07:39:39","modified_gmt":"2012-10-13T06:39:39","slug":"copiando-archivos-en-red-ahorrando-trafico-y-tiempo","status":"publish","type":"post","link":"https:\/\/www.jbahillo.com\/?p=491","title":{"rendered":"Copiando archivos en red ahorrando tr\u00e1fico y tiempo"},"content":{"rendered":"<p>Hace poco he empezado a hacer el ciclo de sistemas, para compensar mi falta de titulaci\u00f3n oficial en este aspecto, y me encontr\u00e9 con una situaci\u00f3n que seguro que en m\u00e1s de una ocasi\u00f3n os habr\u00e9is encontrado. Los apuntes se cuelgan en una unidad en red (y el acceso de Dropbox o Ubunte One est\u00e1 bloqueado por el proxy). As\u00ed pues, la soluci\u00f3n m\u00e1s comoda es, evidentemente copiar dichos apuntes en un pendrive. Pod\u00eda copiar la carpeta donde cuelgan dichos apuntes pero en dicha carpeta cuelgan apuntes de otras asignaturas en las que no estoy matriculado, siendo m\u00e1s o menos esta la estructura de la unidad en red<br \/>\nR-IANA<\/p>\n<p style=\"padding-left: 30px;\">ASIGNATURA1<\/p>\n<p style=\"padding-left: 30px;\">ASIGNATURA2<\/p>\n<p style=\"padding-left: 30px;\">ASIGNATURA3<\/p>\n<p>etc.<\/p>\n<p>Para esto el comando cp (o su equivalente en el entorno gr\u00e1fico) nos funciona perfectamente&#8230; el primer d\u00eda&#8230;o la primera semana, pero despu\u00e9s no pasaremos un tiempo precioso (sobre todo si la copia la haces a \u00faltima hora como yo) copiando archivos que realmente ya tienes y no han sido modificados.<\/p>\n<p>Y entonces me acord\u00e9 de rsync que permite analizar previa a la copia si los archivos han sido modificados (bas\u00e1ndose en la fecha de modificaci\u00f3n del archivo y en su tama\u00f1o) y copiar solo aquellos que hayan cambiado.<\/p>\n<p>Para ello me gener\u00e9 un script con un comando por l\u00ednea para cada carpeta de la asignatura que me interesaba :<\/p>\n<p>rsync -riav   \/media\/ATEIS\/iana\/FH\/ \/media\/Novo\\ volume\/apuntes\/<\/p>\n<p>y asi con cada una. El porqu\u00e9 de cada opci\u00f3n es sencillo: -r hace que copie recursivamente, -i me muestra un peque\u00f1o resumen, -a mantiene los\u00e9 atributos del fichero y -v para que me vaya dando algo m\u00e1s informaci\u00f3n (realmente el -i y el -v no son imprescindibles)<\/p>\n<p>Pero me encontr\u00e9 que algunos profesores hab\u00edan colgado en sus carpetas alg\u00fan software que se usar\u00eda en sus asignaturas, as\u00ed que a\u00f1ad\u00ed el par\u00e1metro &#8211;exclude-from=\/home\/xavy\/scripts\/excludeapuntes , que apunta al archivo exclude apuntes donde inclu\u00ed l\u00edneas que comenzaban por &#8211; (para excluir archivos de ese tipo) y un patr\u00f3n de los archivos que no deseaba (en este caso *.iso, *.deb y *,exe)<\/p>\n<p>Ahora ya todo funcionaba perfectamente, pero se me ocurri\u00f3 rizar el rizo: rsync incluye, un algoritmo que analiza el interior del fichero, y pens\u00e9, por qu\u00e9 no hacer que copie solo la modificaci\u00f3n de ese archivo (en lugar de copiar enteros los archivos que hayan sido cambiado). Asi pues le a\u00f1ad\u00ed el par\u00e1metro &#8211;no-whole-file, ya que por defecto rsync incluye aunque no se especifique la opci\u00f3n -W que hace precisamente lo contrario de lo que queria, es decir, hace que trate los ficheros como unidades indivisibles.<\/p>\n<p>Ahora ya tenia la copia de solo lo que quer\u00eda y de solo los trozos que se hab\u00edan cambiado, pero segu\u00ed rizando el rizo rizado, y record\u00e9 que rsync adem\u00e1s tiene una funci\u00f3n de compresi\u00f3n, as\u00ed que, \u00bfpor qu\u00e9 no usarla? pues dicho y hecho, par\u00e1metro -z a\u00f1adido.<\/p>\n<p>Realmente podr\u00eda haber rizado m\u00e1s la cosa y a\u00f1adido la opci\u00f3n -c para que en lugar de fiarse de la fecha y tama\u00f1o del archivo para ver si este hab\u00eda cambiado, pasase un checksum para tener 100% seguro si hab\u00eda habido cambios, pero personalmente ya lo consider\u00e9 excesivo&#8230; no cre\u00e9is?<\/p>\n<p>Espero que este caso pr\u00e1ctico os haya dado una pista de las grandes bondades de rsync, y os haya aclarado alguna de sus opciones m\u00e1s frecuentes<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace poco he empezado a hacer el ciclo de sistemas, para compensar mi falta de titulaci\u00f3n oficial en este aspecto, y me encontr\u00e9 con una situaci\u00f3n que seguro que en m\u00e1s de una ocasi\u00f3n os habr\u00e9is encontrado. Los apuntes se&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/www.jbahillo.com\/?p=491\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":21,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[10],"tags":[95,94],"class_list":["post-491","post","type-post","status-publish","format-standard","hentry","category-gnulinux","tag-compresion","tag-rsync"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74T96-7V","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/posts\/491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=491"}],"version-history":[{"count":1,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/posts\/491\/revisions"}],"predecessor-version":[{"id":492,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=\/wp\/v2\/posts\/491\/revisions\/492"}],"wp:attachment":[{"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jbahillo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}