{"id":6639,"date":"2011-04-05T19:54:52","date_gmt":"2011-04-05T17:54:52","guid":{"rendered":"http:\/\/lacartumba.com\/?p=6639"},"modified":"2020-05-18T03:24:08","modified_gmt":"2020-05-18T01:24:08","slug":"hosting-redcoruna-copias-de-seguridad-automatizadas","status":"publish","type":"post","link":"https:\/\/diego.dehaller.ch\/blog\/2011\/hosting-redcoruna-copias-de-seguridad-automatizadas.html","title":{"rendered":"Hosting Redcoruna: Copias de seguridad automatizadas"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6640\" title=\"CaraSusto\" src=\"https:\/\/i1.wp.com\/diego.dehaller.ch\/blog\/wp-content\/uploads\/2020\/05\/a-scared-face_tt0vsz.jpg?fit=327%2C457&#038;ssl=1\" alt=\"\" width=\"327\" height=\"457\" \/><\/p>\n<p>Esta fue la cara que se me puso el domingo por la noche, cuando accidentalmente borr\u00e9 la carpeta que contiene todos los archivos que se utilizan tanto en este blog como en otros que gestiono. En un segundo, borr\u00e9 m\u00e1s de un gigabyte de datos. Sin vuelta atr\u00e1s. Sin entrar a explicar c\u00f3mo llegu\u00e9 a cometer ese error tan est\u00fapido, ni c\u00f3mo consegu\u00ed recuperarlo todo a pesar de no disponer de un backup muy reciente, he usado esta experiencia para, por fin, poner un script autom\u00e1tico que haga copias de seguridad diarias y mantenga dos d\u00edas de copias, borrando el resto.<\/p>\n<p>Estos scripts que pongo aqu\u00ed, junto con el cron que usaremos para ejecutarlos, aplican sobre todo a un hosting compartido, y he usado el m\u00edo (Redcoruna, muy buenos, por cierto) para probarlo. Y ahora toca le momento disclaimer: pongo los scripts tal cual, sin ninguna garant\u00eda de que funcionen en vuestro hosting (cada uno es un mundo en cuanto a configuraci\u00f3n de permisos). Tambi\u00e9n tened en cuenta que si bien las instrucciones que se usan aqu\u00ed no son muy complejas, requieren cierto conocimiento m\u00ednimo del shell de Linux. Recordad que Google es vuestro amigo para buscar informaci\u00f3n sobre qu\u00e9 hace cada comando. Y por \u00faltimo, no me responsabilizo de lo que pod\u00e1is borrar modificando estos scripts. Tal cual est\u00e1n, funcionan (a falta de cambiar las rutas, usuarios y passwords), pero como nunca se sabe lo que puede pasar&#8230; Ah\u00ed queda dicho.<br \/>\n<!--more--><br \/>\nBien, veamos al tema. Hay dos scripts. Uno que hace copia de seguridad de los archivos y otro que hace copia de la base de datos.<\/p>\n<pre>#!\/bin\/bash\ndata1=`date -u +%Y-%m-%d`;\nmkdir \"backup\/$data1\"\ncd public_html\/\ntar -cvf ~\/backup\/$data1\/$data1.tar * ; gzip ~\/backup\/$data1\/$data1.tar\ndata0=`date -d \"2 days ago\" +%Y-%m-%d`;\nif [ -e ~\/backup\/$data0 ]\n    then\n    rm -r ~\/backup\/$data0\nfi<\/pre>\n<p>Este script lo que hace es crear una carpeta con la fecha, dentro de la carpeta backup. Esa carpeta backup estar\u00e1 en el ra\u00edz de vuestro usuario en Redcoruna, es decir, ser\u00e1 la primera carpeta que ve\u00e1is cuando entr\u00e1is por FTP al servidor. Lo siguiente que hace el script es cambiar a la carpeta public_html (que en mi caso es de la que quiero hacer una copia, ya que contiene TODOS los ficheros que se utilizan para mostrar las p\u00e1ginas. Una vez dentro, ejecutamos tar y gzip, que b\u00e1sicamente viene a copiar todo el contenido de esa carpeta y subcarpetas en un \u00fanico fichero. Y por \u00faltimo, miramos si hay alguna carpeta que sea de hace dos d\u00edas, y de haberla, la borramos. De esta manera s\u00f3lo guardamos las dos \u00faltimas copias diarias. El formato es a\u00f1o-mes-d\u00eda para que salga bien ordenado, pero si quer\u00e9is cambiarlo, adelante.<\/p>\n<pre>#!\/bin\/bash\ndata1=`date -u +%Y-%m-%d`;\nmkdir \"backupBD\/$data1\"\ncd ~\/backupBD\/$data1\/\nmysqldump -u usuarioBBDD -pLaContrase\u00f1a LaBBDD  &gt; ~\/backupBD\/$data1\/LaBBDD.sql\ntar -cvf LaBBDD.sql.$data1.tar *.sql ; gzip ~\/backupBD\/$data1\/LaBBDD.sql.$data1.tar\nrm ~\/backupBD\/$data1\/*.sql\ndata0=`date -d \"2 days ago\" +%Y-%m-%d`;\nif [ -e ~\/backupBD\/$data0 ]\n    then\n    rm -r ~\/backupBD\/$data0\nfi<\/pre>\n<p>En este hacemos algo parecido al anterior, pero copiando el contenido de la BBDD que le decimos, con el USUARIO y la CONTRASE\u00d1A (ojo, dejad la \u00abp\u00bb sin espacio al lado de la contrase\u00f1a) de vuestro servidor. Luego lo comprimimos y buscamos si hay algo que borrar de hace dos d\u00edas.<\/p>\n<p>Con que modifiqu\u00e9is las rutas y usuario y password para la base de datos. Y esto ser\u00eda la primera parte. La segunda parte, es configurar la ejecuci\u00f3n de los script mediante el uso de cron. Siguiendo con la base de Redcoruna, tendr\u00e9is acceso a la configuraci\u00f3n de los cron en la secci\u00f3n avanzada:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6645\" title=\"Cron cPanel\" src=\"https:\/\/i2.wp.com\/diego.dehaller.ch\/blog\/wp-content\/uploads\/2020\/05\/Screen-shot-2011-04-05-at-19.35.41_cgxl4l.png?fit=499%2C173&#038;ssl=1\" alt=\"\" width=\"499\" height=\"173\" \/><br \/>\nY dentro, en la secci\u00f3n de A\u00f1adir nuevo, lo rellen\u00e1is con esto:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6646\" title=\"Nuevo Cron\" src=\"https:\/\/i2.wp.com\/diego.dehaller.ch\/blog\/wp-content\/uploads\/2020\/05\/Screen-shot-2011-04-05-at-19.36.49_wkbya3.png?fit=421%2C317&#038;ssl=1\" alt=\"\" width=\"421\" height=\"317\" \/><br \/>\nLo que le he puesto es que el script (llamado script.sh, pero vosotros habr\u00e9is puesto cualquier otro) se ejecutar\u00e1 a las 2:30 de la madrugada cada d\u00eda. Fijaos en que en la parte del comando a ejecutar le he puesto la ruta del int\u00e9rprete que lo ejecutar\u00e1 (\/bin\/sh) y la ruta en la que se encuentra. El s\u00edmbolo ~(la tilde de la \u00f1) referencia vuestra carpeta \u00abhome\u00bb, que ser\u00e1 vuestra ra\u00edz.<\/p>\n<p>Y ya est\u00e1, eso es todo. El proceso lo tendr\u00e9is que repetir para el segundo script, usando una hora distinta para no sobrecargar demasiado el servidor, y asunto resuelto.<\/p>\n<p>Si ten\u00e9is alguna sugerencia para mejorarlo o lo que sea, no dud\u00e9is en usar los comentarios.<\/p>\n<p>\u00a1Saludos!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta fue la cara que se me puso el domingo por la noche, cuando accidentalmente borr\u00e9 la carpeta que contiene todos los archivos que se utilizan tanto en este blog como en otros que gestiono. En un segundo, borr\u00e9 m\u00e1s de un gigabyte de datos. Sin vuelta atr\u00e1s. Sin entrar a explicar c\u00f3mo llegu\u00e9 a [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[1807,328,385,1759,1808,1809],"class_list":{"0":"post-6639","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog","7":"tag-copia-de-seguridad","8":"tag-hosting","9":"tag-linux","10":"tag-redcoruna","11":"tag-script","12":"tag-servidor-web","13":"czr-hentry"},"_links":{"self":[{"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/posts\/6639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/comments?post=6639"}],"version-history":[{"count":23,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/posts\/6639\/revisions"}],"predecessor-version":[{"id":19540,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/posts\/6639\/revisions\/19540"}],"wp:attachment":[{"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/media?parent=6639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/categories?post=6639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diego.dehaller.ch\/blog\/wp-json\/wp\/v2\/tags?post=6639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}