Bacula, permite poder copiar directorios compartidos en red en Windows.
Todos sabemos que el SO, Windows, permite conectarse a lo que Microsoft llama "carpeta en red" otros lo llaman "unidades mapeadas".
Bacula y su Agente Bacula es capaz de hacer copias de estas, (llamemoslas), unidades en red. Podria parecer algo tribial, pero no lo es, la unidades compartidas, se comparten para un usuario, y solo para este usuario, en una maquina Windows puede tener numerosos usuarios, y cada uno, hacer uso o no de ese recurso, y disponer de el, en distintos sitios (puntos de montaje??).
Esto hace que cada usuario tenga que autenticarse ante este recurso compartido, y solo se mantiene "activo" mientras el usuario está aunteticado en el sistema.
¿Como solucionamos estas peculariedades?
En la documentación de Bacula, se aportan ideas, de como acometer esta tarea, pero no es suficiente, añado unos enlaces para que nos demos cuenta del problema.
Documentación relacionada de Microsoft
Documentación en la Wiki de Bacula
Enlace a los problemas antes mencionados.
La mejor forma de afrontar este problema, es:
- hacer que el "demonio" bacula-fd (Agente Bacula) se ejecute como un usuario que está en el grupo de Administradores de la maquina. (esto nos permite asegurarnos que podremos hacer copias del resto de cosas)
- Que el recurso compartido coincida con el mismo usuario (username:password) que está en el equipo que va a mapear la unidad en red.
- Que Bacula-Director, "monte" por si mismo la unidad mapeada.
Con estos tres pasos poderemos hacer copias de los recursos locales no mapeados, dado que es un usuario del grupo administradores, de los recursos mapeados ( se tiene que definir) puesto que el usuario que corre el demonio es el mismo al que pertenece el recurso compartido.
Un ejemplo practico.
SRVFiles, pone como directorio compartido DIRTEM el Propietario de este recurso es Pepe que pertenece al grupo de Administradores de SRVFiles. Este Recurso lo usara el equipo que incorpora el Agente Bacula (bacula-fd) como unidad Z: y ha de ser respaldada.
Lo primero de todo, coincidencia de usuarios, si se tiene que crear pues se crea, que no nos cuesta nada. En la maquina que va a correr el agente bacula, se crea un usuario que coincida con el nombre y contraseña del propietario del recurso en red o unidad mapeada. (se entiende que es SRVFiles) Si se van a respaldar directorios locales, se le tendra que meter en el grupo de Administradores, de lo contrario no podra "ver" el resto de directorios que no pertenezcan a este usuario.
Despues hacemos que el servicio bacula-fd se le asigne a este usuario, esto lo hacemos en, Panel de control, -> Tareas administrativas -> Servicios.
Localizamos el servicio llamado "Bacula File Backup Service" y con botón derecho, "Propiedades", en la segunda pestaña llamada "Iniciar de Sesión" en vez de dejarlo en "Cuenta del sistema local", selecionamos "Esta cuenta" y selecionamos el usuario creado a proposito. La contraseña tendra que coincidir con la cuenta local y evidentemente tendra que ser la misma que la del equipo del recurso compartido ( en nuestro ejemplo SRVFiles)
Ya solo nos queda que Bacula Director pueda llamar a un pequeño .bat que haga el "desmontado" "montado" de la unidad o recurso en red.
El contenido del bat, es muy muy simple:
net use Z: /delete (Se elimina una posible asignación de "Z")
net use Z: \\SRVFiles\DIRTEM (Se asigna la unidad Z: a un recurso compartido del equipo SRVFiles y se asigna a Z el contenido de "DIRTEM" Tambien se puede poner en vez de un nombre de host una IP.
El nombre del fichero puede ser uno cualquiera, pero tendra que ser el que se incorpore a fichero de configuración de Bacula-Dir.conf en la definición del trabajo (Job) que toque, para el cliente que tiene la unidad mapeada a respaldar, veamos como. Esta linea se tendra que añadir a nuestro "JOB"
ClientRunBeforeJob = "c:/bacula-mapeadas.bat"
Podemos poner el fichero donde queramos, pero en C: es un muy buen sitio. Y el contenido el que ya hemos mencionado.
Con todo esto ya podremos poner en el FileSet una asignación tipo:
File = "Z:/"
Para el cliente dado, y podran empezar a copiarse los contenidos de la unidad Z: que contendra, lo que almacene el equipo SRVFiles en el directorio DIRTEM.( perteneciente al usuario Pepe puede tener un Rol de Administrador)