Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
bacula el vampiro (II)

Documentación
Por amphora
departamento ¿Eso que tienes ahí es un chupetón? , Sección Software Libre
Puesto a las Thu May 6th, 2004 at 05:24:09 PM CET

Continuamos con la serie. Esta vez hablamos como prometí de los diferentes ficheros de configuración de este estupendo vampiro

 


Los ficheros de configuración de bacula

Continuamos con la serie. Esta vez hablamos como prometí de los diferentes ficheros de configuración de este estupendo vampiro.

Vamos a ir de los más fáciles a los más dificiles:

  • /etc/console.conf
  • La consola de bacula es el medio por el cual nos vamos a comunicar con el sistema director. Su fichero de configuración es este:

    gandalf:/etc/bacula# cat console.conf
    #
    # Bacula User Agent (or Console) Configuration File
    #
     
    Director {
      Name = maquinadirectora-dir
      DIRport = 9101
      address = maquinadirectora.x.com
      Password = "clave"
    }
    

    El nombre ha de ser el mismo que más tarde definiremos en el fichero de configuración del director. Lo siguiente es el puerto donde escucha el director. El FQDN o bien su dirección IP. Y finalmente la password que se necesita para conectar al director.

  • /etc/bacula-fd.conf
  • El fichero de configuración de los clientes

    gandalf:/etc/bacula# cat bacula-fd.conf
    #
    # List Directors who are permitted to contact this File daemon
    #
    Director {
      Name = maquinadirectora-dir
      Password = "clave"
    }
     
    #
    # "Global" File daemon configuration specifications
    #
    FileDaemon {                          # this is me
      Name = gandalf-fd
      FDport = 9102                  # where we listen for the director
      WorkingDirectory = /var/lib/bacula
      Pid Directory = /var/run/bacula
    }
     
    # Send all messages except skipped files back to Director
    Messages {
      Name = Standard
      director = maquinadirectora-dir = all, !skipped
    }
    

    Los comentarios del fichero aunque estén en ingles, son bastante aclaratorios, así que no voy a entrar en detalles. Basicamente, se autoriza al director a conectar con nosotros por el puerto 9102.Definimos el nombre de nuestro cliente, y se definen el tipo de mensajes que queremos hacer llegar al director.

  • /etc/bacula-sd.conf
  • El demonio encargado de escribir en los dispositivos de cinta tiene su propio fichero:

    maquinadirectora:/etc/bacula# cat bacula-sd.conf
    # You may need to change the name of your tape drive
    #   on the "Archive Device" directive in the Device
    #   resource.  If you change the Name and/or the
    #   "Media Type" in the Device resource, please ensure
    #   that dird.conf has corresponding changes.
    #
     
    Storage {                             # definition of myself
      Name = maquinadirectora-sd
      SDPort = 9103                  # Director's port
      WorkingDirectory = "/var/lib/bacula"
      Pid Directory = "/var/run/bacula"
    }
     
    #
    # List Directors who are permitted to contact Storage daemon
    #
    Director {
      Name = maquinadirectora-dir
      Password = "clave"
    }
     
    #
    # Devices supported by this Storage daemon
    # To connect, the Director's bacula-dir.conf must have the
    #  same Name and MediaType.
    #
     
    Device {
      Name = DLT4-0
      Media Type = DLT4
      Archive Device = /dev/nst0
      LabelMedia = Yes;                   # lets Bacula label unlabeled media
      RandomAccess = yes;
      AutomaticMount = yes;               # when device opened, read it
      RemovableMedia = yes;
      AlwaysOpen = no;
    }
     
    Device {
      Name = DLT4-1                        #
      Media Type = DLT4
      Archive Device = /dev/nst1
      AutomaticMount = yes;     # when device opened, read it
      LabelMedia = Yes;
      AlwaysOpen = no;
      RemovableMedia = yes;
      RandomAccess = yes;
    }
     
    #
    # Send all messages to the Director,
    # mount messages also are sent to the email address
    #
    Messages {
      Name = Standard
      director = maquinadirectora-dir = all
    }
    

    Esto se va complicando un poquillo ;-P. En este fichero se definen varios recursos:

    1. Storage
    2. Definimos el nombre del demonio y el puerto de escucha

    3. Director
    4. Al igual que en los otros, el nombre del director que se nos va a conectar, con su password.

    5. Devices
    6. Definimos los dispositivos físicos de escritura. En este caso los de cinta. Sé que se pueden definir otro tipo de dispositivos, pero como es algo que no uso, no me he molestado en averiguar. Ya sabeis, RTFM. En este recurso vemos que le damos un nombre al dispositivo, indicamos el tipo de medio, y el nombre físico del cacharro tal y como se ve desde el sistema de ficheros. Lo demás son diferentes opciones, como que se monten automaticamente las cintas o que se permitan etiquetar. Hay un montón de ellas que conviene revisar en la documentación para escojer las que másnos convengan. En este ejemplo, yo defino 2 dispositivos, correspondientes a las dos bocas de mi unidad de cintas.

    7. Messages
    8. El tipo de mensajes que queramos recibir.

  • /etc/bacula-dir
  • Ya comenté que este fichero es excesivamenta largo, por lo que no voy a poner el mio entero, iré comentando sus secciones por orden y le vais añadiendo lo que necesiteis.

    #Definición del director
                                                                                    
    Director {                            # define myself
      Name = maquinadirectora-dir
      DIRport = 9101                # where we listen for UA connections
      QueryFile = "/etc/bacula/scripts/query.sql"
      WorkingDirectory = "/var/lib/bacula"
      PidDirectory = "/var/run/bacula"
      Maximum Concurrent Jobs = 1
      Password = "clave"         # Console p$  Messages = Standard
    }
    

    Definimos el nombre del director, su puerto de escucha y la clave. Además vemos una opción que permite fijar cuantos trabajos se realizarán simultaneamente. En la documentación se recomienda poner a 1. Vosotros vereis.

    Job {
            Name = cliente1-diaria
            Client = cliente1-fd
            Type = backup
            Level = Incremental
            FileSet = Diaria
            Schedule = Diaria
            Messages = Standard
            Pool = Diaria
    
            Storage = tape1
           # JobDefs = "Diaria"
    }
    

    Comenzamos con lo realmente interesante. Esto de arriba es una definición completa de un trabajo.En donde definimos su nombre, el nombre del cliente, el tipo de trabajo, su nivel, los ficheros a los que se accede,el calendario, los mensajes que manda, el pool a utilizar y el dispositivo de escritura. La mayoría de estos campos los definiremos en este mismo fichero más adelante, no os preocupeis. Pero lo realmente lastimoso es que hay que escribir esta definición por cada tipo de trabajo y cliente. Os comenté que en versiones recientes se había simplificado mucho este problema al permitir definir un modelo de trabajo que luego se utilizaba en todas las definiciones. Si os daís cuenta, tengo ese campo comentado, porque tras escribir el fichero de configuración de esa manera, pude comprobar como la versión instalada en el servidor no permitía esas definiciones. Para los que dispongais de una versión más reciente con que hagais esto os valdría:

    #Backup diario
    JobDefs {
           Name = Diaria
           Type = Backup
           Level = Incremental
           FileSet = Diaria
           Schedule = Diaria
           Messages = Standard
           Pool = Diaria
           Storage = tape0
    }
    

    Haceis una sola definición por cada tipo de trabajo y despues:

    Job {
            Client = dell1-fd
            JobDefs = "Diaria"
    }
    

    Se simplifica ¿verdad? Cuando solo tienes un par de máquinas, no hay problema, pero cuando llegas a la treintena te puedes acordar de la madre del programador que no pensó en ello antes. Pasamos al siguiente recurso

    FileSet {
            Name = "Diaria"
            Include = signature=MD5 {
                    /var
                    /etc
                    /root
                    /home
            }
                                                                                    
            Exclude = { /proc /tmp /.journal /.fsck /var/run }
    }
    

    Fácil ¿no?. Le decimos que directorios o ficheros queremos que nos respalde, incluyendo una suma md5 y cuales queremos excluir. Y por supuesto le damos un nombre que lo identifique en los trabajos

    Schedule {
            Name = "Diaria"
            Run = Incremental mon-sat at 20:00
    }
    

    Los calendarios de los trabajos y su tipo, aunque no es necesario indicarlo porque ya lo tengo definido en los trabajos. Se pueden hacer un montón de diabluras con las fechas y las horas, que ejecute un trabajo el tercer jueves de cada mes, el último domingo de Mayo, etc. En el ejemplo realiza un trabajo de lunes a sábado a las 20:00 horas

    Client {
            name = cliente1-fd
            Address = cliente1.x.com
            FDPort = 9102
            Catalog = MyCatalog
            Password = "clave"
            File Retention = 30 days            # 30 days
            Job Retention = 6 months            # six months
            AutoPrune = yes                     # Prune expired Jobs/Files
    }
    

    Pasamos a la definición de los clientes, se necesita una de estas por cada uno de ellos. Le ponemos un nombre, que será obligatoriamente el que ya pusimos en el demonio que se ejecuta en la máquina a respaldar, su dirección en la red, el puerto donde escucha, el catálogo (la base de datos), su clave, el tiempo que retendrá los ficheros salvados, el tiempo que quedará registrado el trabajo en la base de datos, y si queremos que se borren automaticamente los registros de la base de datos pasado el tiempo definido.

    Storage {
      Name = tape0
      Address = maquinadirectora                # N.B. Use a fully qualified name here
      SDPort = 9103
      Password = "clave"
      Device = DLT4-0
      Media Type = DLT4
    }
    

    En esta parte nombramos los recursos para conectar con el demonio de almacenamiento. Le damos un nombre, su dirección en la red, el puerto de escucha y su clave de acceso. Además le indicamos el dispositivo y tipo de medio.

    Catalog {
      Name = MyCatalog
      User = bacula
      dbname = bacula
      password = "clave"
    }
    

    El recurso relacionado con la base de datos que creamos previamente a la instalación de bacula. El nombre, el usuario permitido en la base, la base misma y el password.

    Messages {
      Name = Standard
      mailcommand = "/usr/lib/bacula/smtp -h localhost -f \"\(Bacula\) %r\" -s 
    \"Ba$ operatorcommand = "/usr/lib/bacula/smtp -h localhost -f \"\(Bacula\)
    %r\" -s $ mail = root@localhost = all, !skipped operator = root@localhost = mount console = all, !skipped, !saved append = "/var/lib/bacula/log" = all, !skipped }

    Todos los mensajes que genera el director y a donde mandarlos, se configuran aquí. Tal y como está puesto, genera bastante ruido (un mensaje por trabajo), pero a mi particularmente me gusta enterarme de todo.

    Pool {
      Name = Diaria
      Pool Type = Backup
      Recycle = yes                       # Bacula can automatically recycle Volumes  
      AutoPrune = yes                     # Prune expired volumes
      Volume Retention = 100 days         
      Accept Any Volume = yes             # write on any volume in the pool
    }
    

    Definiciones de los pools. En mi caso tengo, un pool para las copias diarias, otro para las semanales y otro para las mensuales, cada uno con sus cintas diferentes.

Y esto es todo de momento, seguiremos proximamente con el manejo de bacula desde la consola.

< Bacula el vampiro (I) (1 comments) | Bacula el vampiro (y III) (1 comments) >
Enlaces Relacionados
· More on Documentación
· Also by amphora

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
bacula el vampiro (II) | 3 comentarios ( temáticos, 3 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda