{"id":85,"date":"2004-04-26T01:38:16","date_gmt":"2004-04-25T23:38:16","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=85"},"modified":"2012-04-26T19:12:48","modified_gmt":"2012-04-26T17:12:48","slug":"envio-de-backups-por-mail","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=85","title":{"rendered":"Envio de backups por mail"},"content":{"rendered":"<p>Hace mucho que tenia en mente algo interesante para el servidor web donde esta esta web: que me envie de forma periodica un backup de la base de datos por mail. Hoy me he puesto manos a la obra.<\/p>\n<p>Para hacerlo he utilizado un script en perl encontrado en una web que he llamado sendfile.pl:<\/p>\n<pre>\r\n#!\/usr\/bin\/perl\r\n \r\nuse Mail::Sender;\r\n \r\nif (!($ARGV[0])) {\r\n        print \"\\n\\tUsage: $0 <attachfilename> \\n\\n\";\r\n        exit;\r\n}\r\n$file_name    = $ARGV[0];\r\n$smtp_server  = 'localhost';\r\n$sender_mail  = 'Cron <cron @localhost>';\r\n$recipients   = 'Destino <user @destino.com>';\r\n$mail_subject = 'Backup';\r\n$msg_body     = \"\\n\\n Attachment backup\";\r\n \r\n$sender = new Mail::Sender { smtp => $smtp_server ,\r\n                             from => $sender_mail\r\n                           };\r\n$sender->MailFile(\r\n        {to      => $recipients,\r\n         subject => $mail_subject,\r\n         msg     => $msg_body,\r\n         file    => $file_name });\r\n$sender->Close;\r\n<\/user><\/cron><\/attachfilename><\/pre>\n<p>Este script requiere el modulo Mail:Sender de Perl, para instalarlo podemos hacer:<\/p>\n<pre>\r\nperl -MCPAN -e shell\r\ninstall Mail::Sender\r\n<\/pre>\n<p>A continuaci\u00f3n he creado un script en bash llamado sendbackup.sh:<\/p>\n<pre>\r\n#\/bin\/bash\r\nFECHA=`date +%d%m%Y`\r\ntar -jcvf \/home\/user\/bin\/db-backup-$FECHA.tar.bz2 \/var\/lib\/mysql\/user\/\r\n\/home\/user\/bin\/sendfile.pl \/home\/user\/bin\/db-backup-$FECHA.tar.bz2\r\nrm -f \/home\/user\/bin\/db-backup-$FECHA.tar.bz2\r\n<\/pre>\n<p>Como podeis imaginar he guardado ambos scripts en \/home\/user\/bin\/. A continuaci\u00f3n he a\u00f1adido al cron como usuario root (o un usuario que tenga permisos para copiar directamente la base de datos) usando &#8220;crontab -e&#8221;:<\/p>\n<pre>\r\n15 6 * * 6 \/home\/user\/bin\/sendbackup.sh &> \/dev\/null\r\n<\/pre>\n<p>Esto har\u00e1 que 1 vez a la semana a las 6:15 me envie el backup por mail. Lo correcto hubiese sido parar y volver a poner en marcha la mysql antes de hacer el tar, pero para no afectar al resto de procesos que acceden a la BD no lo he hecho ya que me funciona correctamente as\u00ed tambi\u00e9n. Otra cosa a tener en cuenta es que el mail se envia sin ning\u00fan tipo de encriptaci\u00f3n, por tanto estar\u00eda bien a\u00f1adirla utilizando GnuPG aunque en este caso lo he descartado ya que la informaci\u00f3n que envia no es nada confidencial y no puede ocasionar ningun da\u00f1o irreversible la intercepci\u00f3n del mail.<\/p>\n<p><b>Actualizacion<\/b> He mejorado el sistema para que el envio sea encriptado, lo podeis ver en la <a href=\"http:\/\/www.marblestation.com\/blog\/index.php?p=161\">segunda parte del post<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace mucho que tenia en mente algo interesante para el servidor web donde esta esta web: que me envie de forma periodica un backup de la base de datos por mail. Hoy me he puesto manos a la obra. Para hacerlo he utilizado un script en perl encontrado en una web que he llamado sendfile.pl: &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=85\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Envio de backups por mail<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-85","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=85"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":1837,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/85\/revisions\/1837"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}