{"id":1935,"date":"2012-01-23T12:00:03","date_gmt":"2012-01-23T11:00:03","guid":{"rendered":"http:\/\/giusseppe.net\/blog\/?p=1935"},"modified":"2012-01-23T12:00:03","modified_gmt":"2012-01-23T11:00:03","slug":"syncronizator-sh","status":"publish","type":"post","link":"https:\/\/www.giusseppe.net\/blog\/archivo\/2012\/01\/23\/syncronizator-sh\/","title":{"rendered":"Syncronizator.sh"},"content":{"rendered":"<p>Pierdo un tiempo bendito en una cosa tan absurda como reinventar la rueda. S\u00e9 que hay muchos programas de realizaci\u00f3n de copias de seguridad, algunos, incluso, de sincronizaci\u00f3n de carpetas que pueden interesarme para calmar mi obsesi\u00f3n de realizar copias y copias para asegurarme de que, en cualquier momento, pase lo que pase, mis archivos estar\u00e1n a salvo y podr\u00e9 trabajar desde cualquier lugar, cualquier ordenador, sin tener que perder un minuto restaurando sistemas&#8230;<\/p>\n<p>Lo borro todo, lo restauro todo de una copia de seguridad, en disco externo. en otro PC, en la nube ser\u00eda ideal, pero hay problemas de espacio que no tengo resueltos&#8230; el servidor con el que llevamos a cabo el hosting es un poco reacio a dejarnos subir cosas (Esto de subir siempre me suena gracioso y me imagino, en la nube blanca, mis archivos colgados como ropa en tendedero). Es normal, en realidad, el servidor que alberga la web de Clave 53, Giusseppe.net (incluyendo este texto que estoy escribiendo en el diario), carmendelarosa.com, lilianflores.com, espacioelmanantial.com y alg\u00fan otro dominio con menos cosas&#8230; no est\u00e1 contratado para ser un servidor de backup, que los hay, ni una carpeta en la nube&#8230; o sea, en Internet.<\/p>\n<p>Pero siempre estoy pensando (y por siempre es, verdaderamente, siempre) en qu\u00e9 ocurrir\u00e1 si mi port\u00e1til deja de funcionar. Es algo que s\u00e9 que pasar\u00e1, ha pasado alguna vez e inevitablemente volver\u00e1 a suceder. As\u00ed que debo estar seguro (y esto s\u00e9 que es imposible) de que todo lo que haga lo tendr\u00e9 en otro PC, en alg\u00fan disco externo&#8230; vamos, que he de tener r\u00e9plicas infinitas pues solo as\u00ed acabar\u00eda por estar convencido de que no hay nada que pueda ocurrir que impidiese restaurar alguna.<\/p>\n<p>Y adem\u00e1s, ahora tengo una paranoia nueva&#8230; <\/p>\n<p>Seg\u00fan termin\u00e9 de programar mi querido Shell Script que sincroniza las carpetas que quiero que sincronice&#8230; me ha dado por pensar que tengo un origen \u00fanico para todas estas cosas, con lo cual, si alguna vez tengo un problema en ese origen tambi\u00e9n lo sincronizar\u00e9, como buen sincronizador que soy, en todas las dem\u00e1s ubicaciones donde quiero clonarlo. As\u00ed que el siguiente paso (que ya hago, pero no tengo bien automatizado) es realizar copias de las copias a carpetas que no toque, que no modifique en adelante o a soportes extra\u00edbles sin permiso de escritura, algunos de los cuales he de retirar de esta casa y llevar lejos, para evitar cualquier posible p\u00e9rdida de datos en el caso de un ataque nuclear o de un terremoto o un incendio en este edificio. Son cosas que pasan. S\u00e9 que esas cosas pasan.<\/p>\n<p>As\u00ed que tengo que pensarlo&#8230; \u00bfo no?<\/p>\n<p>Bueno, de momento, hoy quiero compartir (con la p\u00e9rdida de privacidad consecuente) el archivo que utilizo para realizar mis copias de seguridad desde hoy mismo.<\/p>\n<p>Es divertido darme cuenta de que lo comento tanto que cualquier otra persona podr\u00eda continuar su desarrollo o su mantenimiento en caso de que fuese necesario, como si fuese pensando en un posible backup o reemplazo, incluso, para m\u00ed mismo. Sin pensar si lo que guardo ser\u00e1 lo que interese guardar en un futuro o a alg\u00fan otro que no sea yo.<\/p>\n<p>\u00a1A veces creo que estoy un poco loco!<\/p>\n<p><strong>~\/bin\/sincronizator.sh<\/strong><\/p>\n<p><code><br \/>\n#!\/bin\/sh<\/p>\n<p># DEFINICION de VARIABLES<br \/>\nusername=\"$(whoami)\"<br \/>\nservidor=\"192.168.1.2\"<\/p>\n<p># Vamos a elegir qu\u00e9 cosas sincronizar en estas variables l\u00f3gicas<br \/>\n# Por defecto, sincronizamos todo, local y remoto<br \/>\nSYNC_JMDOMIN=1<br \/>\nSYNC_GIUSSEPPE=1<br \/>\nSYNC_LOCAL=1<br \/>\nSYNC_REMOTE=1<\/p>\n<p>if [ $# -gt 0 ]<br \/>\nthen<br \/>\n  if [ $1 -eq 1 ]<br \/>\n  then<br \/>\n    SYNC_LOCAL=1<br \/>\n    SYNC_REMOTE=0<br \/>\n  elif [ $1 -eq 2 ]<br \/>\n  then<br \/>\n    SYNC_LOCAL=0<br \/>\n    SYNC_REMOTE=1<br \/>\n  else<br \/>\n    echo \"Uso $0 [1=local|2=remote] (por defecto es TOTAL)\"<br \/>\n    exit<br \/>\n  fi<br \/>\nfi<\/p>\n<p># DEFINICION DE FUNCIONES<br \/>\ncabecera () {<br \/>\n  echo \"<br \/>\n___________________________________________________________________<br \/>\n___________________________________________________________________\"<br \/>\n}<br \/>\nsincroniza () {<br \/>\n  cabecera<br \/>\n  echo \"Sincronizando carpeta: $3\"<br \/>\n  echo \"Directorio de Origen: $1\"<br \/>\n  echo \"Directorio de Destino: $2\"<br \/>\n  dirorigen=$1<br \/>\n  dirdestino=$2<br \/>\n  carpeta=$3<br \/>\n  origen=\"$dirorigen\/$carpeta\/\"<br \/>\n  destino=\"$dirdestino\/$carpeta\/\"<br \/>\n  rsync -rtvu --delete $origen $destino<br \/>\n}<\/p>\n<p># Sincronizamos carpetas utilizando la funci\u00f3n sincroniza<br \/>\ncabecera<br \/>\necho \"COMIENZO DE LA SINCRONIZACI\u00d3N CORRESPONDIENTE A LA FECHA:\"<br \/>\ndate<\/p>\n<p># Sincronizando JMDOMIN<br \/>\nif [ $SYNC_JMDOMIN -eq 1 ]<br \/>\nthen<br \/>\n  diskorigen=\"\/media\/GSPDISK\"<br \/>\n  dirbase=\"jmdomin\"<br \/>\n  dirorigen=\"$diskorigen\/$dirbase\"<br \/>\n  subcarpetas=\"FOTOS Archivo Obra Talleres TEXTOS trabajo web-sites\"<br \/>\n  cabecera<br \/>\n  echo \"COMIENZO DE LA SINCRONIZACI\u00d3N DE LAS CARPETAS DE JMDOMIN\"<\/p>\n<p>  # Con destino al disco de DATOS<br \/>\n  if [ $SYNC_LOCAL -eq 1 ]<br \/>\n  then<br \/>\n    diskdestino=\"\/media\/Datos\"<br \/>\n    dirdestino=\"$diskdestino\/$dirbase\"<br \/>\n    cabecera<br \/>\n    echo \"ORIGEN= $dirorigen\"<br \/>\n    echo \"DESTINO= $dirdestino\"<\/p>\n<p>    for subcarpeta in $subcarpetas<br \/>\n    do<br \/>\n      sincroniza $dirorigen $dirdestino $subcarpeta<br \/>\n    done<br \/>\n  fi<\/p>\n<p>  if [ $SYNC_REMOTE -eq 1 ]<br \/>\n  then<br \/>\n    # Con destino al disco de RED de $servidor (TOWI)<br \/>\n    smbclient \/\/$servidor\/$dirbase -N -c pwd<br \/>\n    if [ $? -eq 0 ]<br \/>\n    then<br \/>\n      # Servidor y recurso accesible<br \/>\n      # Primero, montamos y verificamos que el destino est\u00e9 accesible<br \/>\n      echo \"Montando \/mnt\/$dirbase\"<br \/>\n      mount \/mnt\/$dirbase<br \/>\n      estamontado=`mount|grep $servidor|grep $dirbase|wc -l`<br \/>\n      if [ $estamontado -eq 1 ]<br \/>\n      then<br \/>\n        diskdestino=\"\/mnt\"<br \/>\n        dirdestino=\"$diskdestino\/$dirbase\"<br \/>\n        subcarpetas=\"Archivo Obra Talleres TEXTOS trabajo web-sites\"<\/p>\n<p>        # Verificar si se puede escribir<br \/>\n        touch $dirdestino\/kkkkk<br \/>\n        if [ $? -eq 0 ]<br \/>\n        then<br \/>\n\t  rm $dirdestino\/kkkkk # Borrando restos<br \/>\n          cabecera<br \/>\n          echo \"ORIGEN= $dirorigen\"<br \/>\n          echo \"DESTINO= $dirdestino\"<\/p>\n<p>          for subcarpeta in $subcarpetas<br \/>\n          do<br \/>\n            sincroniza $dirorigen $dirdestino $subcarpeta<br \/>\n          done<br \/>\n        else<br \/>\n\t  echo \"No es posible escribir en $dirdestino\"<br \/>\n        fi<br \/>\n      else<br \/>\n        echo \"La carpeta $dirbase del servidor $servidor no est\u00e1 montada\"<br \/>\n      fi<br \/>\n      echo \"DES-Montando \/mnt\/$dirbase\"<br \/>\n      umount \/mnt\/$dirbase<br \/>\n    else<br \/>\n      # Servidor o recurso NO accesible<br \/>\n      echo \"Error de conexi\u00f3n con el servidor $servidor o el recurso $dirbase\"<br \/>\n    fi<br \/>\n  fi # fin de SYNC_REMOTE<br \/>\nelse<br \/>\n  echo \"Evitada la sincronizaci\u00f3n de JMDOMIN\"<br \/>\nfi<\/p>\n<p># Sincronizando GIUSSEPPE<br \/>\nif [ $SYNC_GIUSSEPPE -eq 1 ]<br \/>\nthen<br \/>\n  diskorigen=\"\/home\"<br \/>\n  dirbase=\"giusseppe\"<br \/>\n  dirorigen=\"$diskorigen\/$dirbase\"<br \/>\n  subcarpetas=\"bin cloud Documentos Escritorio EudoraNEW\"<br \/>\n  cabecera<br \/>\n  echo \"COMIENZO DE LA SINCRONIZACI\u00d3N DE LAS CARPETAS DE GIUSSEPPE\"<\/p>\n<p>  # Sincronizaci\u00f3n LOCAL de GIUSSEPPE<br \/>\n  if [ $SYNC_LOCAL -eq 1 ]<br \/>\n  then<br \/>\n    # Con destino al disco de DATOS<br \/>\n    diskdestino=\"\/media\/Datos\"<br \/>\n    dirdestino=\"$diskdestino\/$dirbase\"<br \/>\n    cabecera<br \/>\n    echo \"ORIGEN= $dirorigen\"<br \/>\n    echo \"DESTINO= $dirdestino\"<\/p>\n<p>    for subcarpeta in $subcarpetas<br \/>\n    do<br \/>\n      sincroniza $dirorigen $dirdestino $subcarpeta<br \/>\n    done<\/p>\n<p>    # Con destino al disco de GSPDISK<br \/>\n    diskdestino=\"\/media\/GSPDISK\"<br \/>\n    dirdestino=\"$diskdestino\/$dirbase\"<br \/>\n    cabecera<br \/>\n    echo \"ORIGEN= $dirorigen\"<br \/>\n    echo \"DESTINO= $dirdestino\"<\/p>\n<p>    for subcarpeta in $subcarpetas<br \/>\n    do<br \/>\n      sincroniza $dirorigen $dirdestino $subcarpeta<br \/>\n    done<br \/>\n  fi<br \/>\nelse<br \/>\n  echo \"Evitada la sincronizaci\u00f3n de GIUSSEPPE\"<br \/>\nfi<\/p>\n<p>cabecera<br \/>\necho \"FIN DE LA SINCRONIZACI\u00d3N CORRESPONDIENTE A LA FECHA:\"<br \/>\ndate<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pierdo un tiempo bendito en una cosa tan absurda como reinventar la rueda. S\u00e9 que hay muchos programas de realizaci\u00f3n de copias de seguridad, algunos, incluso, de sincronizaci\u00f3n de carpetas que pueden interesarme para calmar mi obsesi\u00f3n de realizar copias y copias para asegurarme de que, en cualquier momento, pase lo que pase, mis archivos &#8230; <a title=\"Syncronizator.sh\" class=\"read-more\" href=\"https:\/\/www.giusseppe.net\/blog\/archivo\/2012\/01\/23\/syncronizator-sh\/\">Read more<span class=\"screen-reader-text\">Syncronizator.sh<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69,14,110],"tags":[112,76,98,74,105],"class_list":["post-1935","post","type-post","status-publish","format-standard","hentry","category-confidencias","category-opinion","category-tecnologia-opinion","tag-giusseppe","tag-informatica","tag-internet","tag-linux","tag-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/posts\/1935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/comments?post=1935"}],"version-history":[{"count":1,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions"}],"predecessor-version":[{"id":1936,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions\/1936"}],"wp:attachment":[{"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/media?parent=1935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/categories?post=1935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.giusseppe.net\/blog\/wp-json\/wp\/v2\/tags?post=1935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}