{"id":19,"date":"2013-12-16T11:16:13","date_gmt":"2013-12-16T11:16:13","guid":{"rendered":"http:\/\/fidomenal.com\/?p=19"},"modified":"2013-12-16T11:16:13","modified_gmt":"2013-12-16T11:16:13","slug":"bacula-necesaria-introduccion","status":"publish","type":"post","link":"http:\/\/fidomenal.com\/?p=19","title":{"rendered":"Bacula: necesaria introducci\u00f3n"},"content":{"rendered":"<p>Hola a todos.<\/p>\n<p>Quer\u00eda hablaros un poco de bacula, ese programa al que todo el mundo le coge miedo porque se les viene grande y\/o a primera vista parece complicado.<\/p>\n<p>Realmente es un programa grande, pero una vez te explican (a grandes rasgos) su funcionamiento, todo va rodado.<\/p>\n<h3>Introducci\u00f3n<\/h3>\n<p>Bacula es un programa que gestiona backups (copias de respaldo en castellano). Su enorme potencial reside en lo bien que maneja y automatiza las tareas de respaldo, sobre todo en entornos grandes (v\u00e9ase el mantenimiento de varios servidores).<\/p>\n<p>Cierto es que si simplemente quieres hacer backups de tu equipo personal, olv\u00eddate, te llevar\u00e1 demasiado tiempo configurarlo. Pero si te encuentras en la posici\u00f3n de tener que ocuparte de varios equipos\/servidores, Bacula es tu soluci\u00f3n. Al principio tendr\u00e1s que echarle muchas horas, pero una vez que dejes todo configuradito, pueden pasar a\u00f1os sin que tengas que volver a tocarlo; adem\u00e1s una vez que aprendes a usarlo, los cambios que realizar\u00e1s ser\u00e1n peque\u00f1os y f\u00e1ciles.<\/p>\n<h3>Arquitectura<\/h3>\n<p>Lo primero que hay que entender de este programa es su diversificaci\u00f3n: est\u00e1 dividido en varias partes que se interrelacionan entre ellas. Estas partes pueden estar instaladas en diferentes m\u00e1quinas o en la misma, dando la opci\u00f3n de guardar los backups en una m\u00e1quina diferente a la que los gestiona (por ejemplo).<\/p>\n<p>Existen 3 partes principales, cada cual adem\u00e1s es un paquete de instalaci\u00f3n diferente: el Director, el Storage y el File. Como podr\u00e9is deducir, el <strong>File<\/strong> es la m\u00e1quina cliente (la que necesita que se le hagan copias), el <strong>Storage<\/strong> es la m\u00e1quina que guarda dichas copias y el <strong>Director<\/strong> es la m\u00e1quina que orquesta todo el proceso. Por supuesto pueden existir varias m\u00e1quinas cliente (File), varias Storage (por si se quiere separar las copias) y Director (aunque lo l\u00f3gico ser\u00eda una, se pueden especificar varias).<\/p>\n<h3>Archivos, herramientas y demonios<\/h3>\n<p>Si todo esto se automatiza es por el uso de los demonios. Cada parte tiene su propio demonio: bacula-director, bacula-fd (file-daemon) y bacula-sd (storage-daemon). Y cada demonio funciona seg\u00fan la configuraci\u00f3n de su archivo, alojados en <em>\/etc\/bacula<\/em>: bacula-dir.conf, bacula-fd.conf, bacula-sd.conf.<\/p>\n<p>Estos archivos de configuraci\u00f3n son generados autom\u00e1ticamente durante la instalaci\u00f3n, y solo hace falta modificar un par de par\u00e1metros (IP de la m\u00e1quina remota, certificados propios, planificaci\u00f3n de backups autom\u00e1ticos&#8230;). La configuraci\u00f3n del director es la m\u00e1s dif\u00edcil y extensa, ya que es el que se ocupa de todo; normalmente se divide en varios archivos para no romperse uno la cabeza, luego en el archivo principal se unen todos (parecido a los <em>includes<\/em> de Apache2).<\/p>\n<p>Ahora bien, aunque los archivos de configuraci\u00f3n es donde est\u00e1 toda la \u00abchicha\u00bb, bacula nos ofrece varias herramientas para su manejo, puesto que muchas veces habr\u00e1 que realizar tareas \u00aba mano\u00bb. Solamente voy a centrarme en la herramienta de consola <em>bconsole<\/em>, ya que es la m\u00e1s \u00fatil y adem\u00e1s el resto (las gr\u00e1ficas) se basan en ella. Como su propio nombre indica, es un int\u00e9rprete de \u00f3rdenes, que de forma interactiva permite realizar diversos trabajos.<\/p>\n<p>Cabe decir que existen varios servicios web que uno puede instalar el la m\u00e1quina Director para el manejo y la monitorizaci\u00f3n de Bacula. Por ejemplo, Bacula-Web te ofrece con gr\u00e1ficas y tablas informaci\u00f3n sobre el estado de los backups, la ocupaci\u00f3n del Storage&#8230; etc.<\/p>\n<p>Tambi\u00e9n hay que mencionar que el funcionamiento de Bacula se basa en un cat\u00e1logo: una base de datos (a elegir entre MySQL, SQLite y PostgreSQL) donde quedan registrados todos los eventos, vol\u00famenes, clientes&#8230; No se debe tocar a mano esta base de datos, a trav\u00e9s de <em>bconsole <\/em>se ofrecen varios comandos para interactuar con el cat\u00e1logo sin necesidad de usar sint\u00e1xis SQL.<\/p>\n<h3>Seguridad<\/h3>\n<p>Uno de los puntos fuertes de Bacula es la seguridad. Cada Cliente, Storage y el Director tiene su propia clave, y seg\u00fan la conexi\u00f3n \u00e9sta es cifrada con dicha clave. Cada uno puede inventarse esta clave a su gusto, aunque el propio programa te genera una aleatoria de 30 caracteres.<\/p>\n<p>Adem\u00e1s del propio cifrado que ofrece el programa, Bacula acepta conexiones seguras mediante el uso de TLS. Por lo tanto a nuestor anterior cifrado hay que a\u00f1adirle otro cifrado m\u00e1s de certificado y de clave SSL. Si ya nos ponemos m\u00e1s serios, se debe crear un certificado y clave \u00fanicos para cada m\u00e1quina. Esta parte de la configuraci\u00f3n es un poco m\u00e1s compleja.<\/p>\n<h3>Vol\u00famenes<\/h3>\n<p>Voy a hacer un poco de incapi\u00e9 en c\u00f3mo se gestionan las copias a trav\u00e9s del cat\u00e1logo, ya que puede resultar un poco lioso al principio.<\/p>\n<p>Las copias se guardan empaquetadas en vol\u00famenes cifrados, por lo que uno no puede acceder directamente a los archivos. Es una especie de .tar.gz (ya que admite compresi\u00f3n), pero propio; sin el cat\u00e1logo es imposible rescatar los datos a pelo. Existen herramientas avanzadas para ello, pero siempre necesitan alg\u00fan componente de la base de datos, y para el usuario principiante se vuelven muy complejas. Por eso se debe mimar y cuidar el cat\u00e1logo (por defecto Bacula hace un propio backup del cat\u00e1logo despu\u00e9s de completar los trabajos que ten\u00eda planificados).<\/p>\n<p>Para ayudarnos en la organizaci\u00f3n de m\u00faltiples backups, Bacula agrupa los Vol\u00famenes en Pools. Por poner un ejemplo, se define un Pool por cliente, asi todas las copias (Vol\u00famenes) de cada cliente pueden diferenciarse f\u00e1cilmente puesto que pertenecen a diferentes familias (Pools).<\/p>\n<p>Adem\u00e1s Bacula admite reutilizaci\u00f3n\/reciclado de los vol\u00famenes. Por lo que si t\u00fa solamente quieres un Full Backup mensual, pero s\u00f3lo quieres que exista uno, puedes configurar Bacula para que sobreescriba el Volumen que anteriormente conten\u00eda esa copia, as\u00ed te evitas llenar el disco innecesariamente y te olvidas de tener que borrar t\u00fa los datos viejos a mano.<\/p>\n<h3>Nivel de copia y restauraciones<\/h3>\n<p>Uno puede definir diferentes trabajos con sus horarios respectivos. Es decir, si todos los d\u00edas hacemos un Full Backup, nuestras tareas de mantenimiento no ser\u00edan muy eficazes&#8230; pero Bacula nos permite hasta 3 niveles diferentes a la hora de realizar copias de seguridad: Full, Differential e Incremental.<\/p>\n<p>El Full backup es la copia cl\u00e1sica, todo lo que se quiera respaldar es copiado. Mientras que el Differential s\u00f3lo copia los arhivos que hayan cambiado (o los nuevos) desde el \u00faltimo Full. Con las copias Incremental pasa lo mismo pero un nivel por debajo, s\u00f3lo compara los cambios desde el \u00faltimo Differential, o desde el \u00faltimo Full si \u00e9ste es m\u00e1s reciente. Esto es muy c\u00f3modo si se quiere mantener un equilibrio entre optimizaci\u00f3n de recursos y utilidad de los mismos. Con esto podemos conseguir archivos de diferentes fechas sin necesidad de ocupar mucho espacio. Es muy \u00fatil cuando alguien mete la pata y necesita el backup espec\u00edfico de un d\u00eda.<\/p>\n<p>Un ejemplo: planificamos backups Incrementales a diario, Diferenciales cada semana y Full cada mes. Si en alg\u00fan momento necesitamos usar dichas copias (porque alguna de nuestras m\u00e1quinas cliente se ha estropeado), simplemente tenemos que realizar un trabajo de Restore (a trav\u00e9s de <em>bconsole<\/em>) pudiendo especificar la copia mas reciente para determinada fecha, y Bacula solito te monta un \u00e1rbol de directorios bas\u00e1ndose en la concatenaci\u00f3n del \u00faltimo Full con los cambios aportados por los Differential e Incremental.<\/p>\n<h3>Automatizaci\u00f3n<\/h3>\n<p>Aqu\u00ed viene el punto fuerte de Bacula. Todas las tareas de respaldo se planifican en el Director, admitiendo adem\u00e1s niveles de prioridad. Por lo tanto es normal planificar varias tareas para el mismo d\u00eda y la misma hora. Una vez que el Director haya conectado con la m\u00e1quina cliente (con su FileDaemon) \u00e9ste le pone en contacto con el Storage asociado a dicha tarea, prepara la conexi\u00f3n cifrada y los archivos que deben ser copiados.<\/p>\n<p>Adem\u00e1s no solo permite especificar los archivos\/carpetas que deben ser copiados, tambi\u00e9n admite ejecutar comandos\/scripts antes, durante y despu\u00e9s de cada trabajo. Por lo tanto si uno quiere hacer un backup de una base de datos, puedes especificar la ruta del script que te da el dump y posteriormente copiar ese dump. Tambi\u00e9n te permite especificar los archivos a copiar de forma gen\u00e9rica, pudiendo a\u00f1adir archivos m\u00e1s concretos desde la propia m\u00e1quina cliente. Es normal tener un FileSet com\u00fan para todos los sistema UNIX (donde se definen las carpetas a copiar, \/etc, \/usr, \/home \/var&#8230;), y luego cada cliente puede especificar archivos propios que quieran ser copiados.<\/p>\n<p>Bacula tambi\u00e9n admite reutilizaci\u00f3n\/reciclado de los vol\u00famenes. Por lo que si t\u00fa solamente quieres un Full Backup mensual, pero s\u00f3lo quieres que exista uno, puedes configurar Bacula para que sobreescriba el Volumen que anteriormente conten\u00eda esa copia, as\u00ed te evitas llenar el disco innecesariamente y te olvidas de tener que borrar t\u00fa los datos viejos a mano. Un uso muy extendido es el de reutilizar los Pools asignados a copias Incrementales y Diferenciales, ya que simplemente sirven para almacenar los archivos modificados\/nuevos, cada vez que haya un nuevo Full esos vol\u00famenes quedan inservibles, asi que los reutilizas para los nuevos Incrementales\/Diferenciales.<\/p>\n<h3>Y todo esto&#8230; \u00bfc\u00f3mo funciona?<\/h3>\n<p>Despu\u00e9s del ladrillazo que os acabo de soltar, muchos se preguntar\u00e1n como carajos se maneja esto. Pues bien, TODO se especifica en los archivos de configuraci\u00f3n antes mencionados, y todo queda automatizado en ellos. Despu\u00e9s de tirarte varias horas configur\u00e1ndolos, una vez hecho eso te vale para toda la vida, se vuelve incluso aburrido.<\/p>\n<p>Lo \u00fanico que requiere hacerse a mano son las tareas de restauraci\u00f3n, ya que no tendr\u00eda mucho sentido automatizarlas&#8230; aunque se puede hacer. A\u00fan as\u00ed, el hacerlas a mano es bastante sencillo, con la herramienta <em>bconsole<\/em> se ofrecen varias opciones y solamente tienes que ir eligiendo los detalles. Tambi\u00e9n es un uso extendido el de definir los Pools a mano, por lo tanto en los archivos de configuraci\u00f3n s\u00f3lo tienes que decir a qu\u00e9 Pool pertenecen los Volumenes, sin tener que crear una directiva para crearlos\/buscarlos.<\/p>\n<h3>Ep\u00edlogo<\/h3>\n<p>No he entrado en detalles t\u00e9cnicos ya que este post se est\u00e1 volviendo muy extenso, adem\u00e1s quer\u00eda dar una vista global del funcionamiento del programa. Si veo mucho feedback quiz\u00e1s me curre un tutorial.<\/p>\n<p>Espero que os haya gustado y \u00a1hasta la pr\u00f3xima!<\/p>\n<p><em>Originalmente posteado en <a title=\"http:\/\/blog.desdelinux.net\/bacula-el-miedo-a-los-vampiros\/\" href=\"http:\/\/blog.desdelinux.net\/bacula-el-miedo-a-los-vampiros\/\" target=\"_blank\">DesdeLinux<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hola a todos. Quer\u00eda hablaros un poco de bacula, ese programa al que todo el mundo le coge miedo porque se les viene grande y\/o a primera vista parece complicado. Realmente es un programa grande, pero una vez te explican (a grandes rasgos) su funcionamiento, todo va rodado. Introducci\u00f3n Bacula es un programa que gestiona &hellip; <a href=\"http:\/\/fidomenal.com\/?p=19\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Bacula: necesaria introducci\u00f3n<\/span> <span class=\"meta-nav\">&rarr;<\/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":[3],"tags":[8,7,9,6],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-linux","tag-backup","tag-bacula","tag-gnu","tag-linux-2"],"_links":{"self":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19"}],"version-history":[{"count":1,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/19\/revisions"}],"predecessor-version":[{"id":20,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/19\/revisions\/20"}],"wp:attachment":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}