Comandos utiles de la consola de bacula (bconsole) y ejemplos de ejecución manual de jobs de respaldo y restauracion Por: Jose Herrera Correo electronico:
[email protected] [email protected] Pagina web: www.solucionesit.com.ve
Administración Para la administración de los servicios de bacula, se utilizan diferentes consolas, bien sea de comandos, grafica o web. Una de las mas utilizadas, es la consola de textos bconsole. Para ejecutarla solo hay que invocarla desde una aplicacion de terminal en el servidor de bacula. A continuacion, se muestran alguno de los subcomandos mas comunes para dicha consola: add [pool= storage= jobid=]
Agrega un volumen a un pool existente. Es decir, crea el nombre del volumen en el catalogo y lo adiciona al pool, dentro del catalogo, sin embargo, no intenta acceder al volumen fisico. Generalmente, el comando label es utilizado en vez de este comando, porque este ultimo etiqueta el medio fisico (tape, disco, DVD, entre otros) y realiza el equivalente al comando add.
automount on/off
Este comando acepta on y off como argumentos, y activa el automontaje del volumen despues de un comando label, segun este habilitado o deshabilitado. Por defecto es on.
cancel [jobid= job= ujobid=]
Este comando es utilizado para cancelar un job y acepta como argumentos el id o el nombre del job. Si no se indica ningun argumento, se muestra un listado con todos los nombres de los jobs activos, para que se pueda seleccionar alguno en particular.
delete [volume= pool= job jobid=id>]
El comando delete se utiliza para borrar registros de volumen, pool o job del catalogo, asi como los registros asociados al volumen que hayan sido creados. Este comando unicamente opera en la base de datos del catalogo y no tiene efecto en la data escrita actualmente en el volumen. Se recomienda no utilizar este comando, debido a que puede ser muy peligroso.
disable job
Este comando permite deshabilitar un job en el scheduling automatico de respaldos. El job tuvo que ser previamente habilitado, bien sea utilizando la directiva Enabled en el recurso de Job o el comando enable en la consola.
enable job
Este comando permite habilitar un job en el scheduling automatico de respaldos. El job se deshabilito previamente, bien sea utlizando la directiva Enabled en el recurso del Job o el comando disable en la consola.
estimate
El uso de este comando permite tener una idea de cuantos archivos seran respaldados o ayudar a determinar los elementos incluidos en el fileset del respaldo, puesto que se permite probar sin realizar el backup actual. Se asume por defecto un nivel de full para la operacion de respaldo. Sin embargo, se puede especificar un nivel, haciendo uso de los opciones level=Incremental o level=Differential, en la linea de comandos. Se pueden indicar mas opciones, tomando en consideracion el siguiente formato: estimate job= listing client= fileset= level=
help
Muestra un listado de ayuda con los comandos disponibles.
label
Comando utilizado para etiquetar volumenes fisicos. La sintaxis general para este comando es: label storage= volume= slot=
list
El comando list se utiliza para listar el contenido del catalog. Los campos que conforman cada registro se muestran en una linea simple. Las formas diversas para este comando pueden ser alguna de las siguientes: list jobs list jobid= list ujobid= list job= list jobmedia list jobmedia jobid= list jobmedia job= list files jobid= list files job= list pools list clients list jobtotals list volumes list volumes jobid= list volumes pool= list volumes job= list volume= list nextvolume job= list nextvol job= list nextvol job= days=nnn
llist
El comando de “listado extendido”, toma los mismos argumentos que el comando list, descrito anteriormente. Sin embargo, la diferencia radica en que este ultimo muestra el contenido completo para cada registro seleccionado de la base de datos de catalogo.
messages
Muestra en consola los mensajes que se encuentran pendientes.
mount
Este comando le indica a bacula que puede leer un volumen en un dispositivo fisico. De esta manera, se senala que se ha montado un tape, y que la aplicacion esta preparada para examinarla.
prune
El comando prune permite remover del catalogo, de manera segura, registros de jobs y volumenes expirados. Trabaja unicamente en la base de datos del catalogo, y no afecta la data escrita en los volumenes. En cualquiera de los casos, este comando aplica los periodos de retencion para los registros indicados. Para que el comando se pueda aplicar, el status del volumen (VolStatus), debe ser Full, Used o Append, en caso contrario la operacion de pruning no se llevara a cabo.
purgue
El comando purge eliminara de la base de datos del catalogo los registros de jobs y volumenes, sin considerar el periodo de retencion. La operacion de purgue trabaja unicamente en el catalogo, sin afectar la data escrita en los volumenes. Este comando puede ser muy danino, puesto que se pueden borrar registros asociados con los respaldos actuales de archivos. Las formas permitidas del comando son las siguientes: purge files jobid= -- job= -client= purge jobs client= (de todos los jobs) purge volume—volume= (de todos los jobs) La data escrita en el volumen no se vera afectada por este comando.
relabel
Este comando es utilizado para etiquetar nuevamente los volumenes fisicos. La forma completa para este comando es:
relabel storage= oldvolume= volume=,newvolume-name> Para realizar esta operacion, el status del volumen debe estar marcado como Purged o Recycle. Esto sucede de manera automatica cuando se aplican los periodos de retencion o se utiliza el comando purge de manera explicita. Una vez que el volumen es reetiquetado, la data escrita con anterioridad es eliminada y no se puede recuperar. release
El uso de este comando permite al storage daemon realizar la operacion de rewind al tape montado actualmente en el drive, y luego releer la etiqueta del volumen la proxima vez que el tape es utilizado. release storage=
Reload
El comando reload provoca que el director lea nuevamente su archivo de configuración y aplique los ajustes realizados. Los nuevos valores tendran de manera inmediata para los nuevos jobs. Sin embargo, si se realizan cambios en el schedule, hay que tener presente que el scheduler, ejecuta una planificacion previa de jobs de hasta dos (2) horas de preparacion, por lo tanto, cualquier cambio que tenga lugar durante las siguientes dos (2) horas se pueden retrasar. Aunque es posible recargar la configuración del director en caliente, mientras se estan ejecuando jobs, sin efectos secundarios, se recomienda que se haga un reinicio del director en una siguiente oportunidad mas adecuada.
restore
El comando restore permite que se puedan seleccionar uno o mas jobs (JobIds) para ser restaurados utilizando varios metodos. El formato general del comando es el siguiente: restore storage= client= where= pool= fileset= restoreclient= select current all done
run
Este comando permite la planificacion de jobs para que se ejecuten de manera inmediata. La sintaxis completa del mismo es la siguiente:
run job= client= fileset= level= storage= where= when= yes Cualquier información que sea necesaria, y no sea indicada, sera listada para su seleccion por parte del usuario, y antes de arrancar el job, se le preguntara si desea aceptar, rechazar o modificar los parametros del mismo, a menos que se haya especificado la opcion de yes, en cuyo caso, el job se enviara inmediatamente al scheduler de respaldo. show
El comando show muestra un listado de los registros de recursos definidos en el director, tal como se encuentran en al archivo de configuración (generalmente, bacula-dir.conf). Las siguientes opciones son permitidas para el show en linea de comandos: catalogs, clients, countes, devices, directors, filesets, jobs, messages, pools, schedules, storages, all, help.
sqlquery
Este comando coloca el programa de consola en modo consultas de SQL, donde cada linea se concatena a la anterior hasta que se presiona el caracter “;”. Esta sentencia se pasa al engine SQL de la base de datos, para su ejecucion respectiva. Para terminar el modo SQL query y retornar al prompt de consola de comandos, se pulsa la tecla “.” en la columna 1.
status
Permite desplegar el status de los jobs planificados para ser ejecutados en las proximas 24 horas, asi como el status de los jobs actualmente en ejecucion. La sintaxis general del comando es la siguiente: status [all –dir= --director – client= --storage= --days=nnn
unmount
Permite senalar al demonio de almacenamiento de bacula (storage daemon) desmontar el dispositivo indicado. Las formas que puede tomar el comando son las mismas de mount: unmount storage= [drive=]
unmount [ jobid= | job= ] Luego de haber desmontado un dispositivo de almacenamiento, bacula no podra utilizarlo hasta que se corra un comando mount para este dispositivo. Si bacula necesita este recurso, el mismo estara bloqueado y se enviaran notificaciones al operador para que lleve a cabo la operacion de montaje respectiva. Si el dispositivo que se esta desmontando es un autochanger (robotica de respaldo), se hara el unload del drive indicado en la linea de comandos. Si no se especifica ninguno, se asume el drive 1. update
Modifica el catalogo para los registros de pools, volumenes o slots en una robotica con capacidad de etiquetado de codigo de barras. En el caso de modificacion de un registro de pool, la nueva información se tomara de manera automatica del recurso de configuración correspondiente en el director. Se puede utilizar para incrementar el numero maximo de volumenes permitidos o establecer un numero maximo de volumenes. Las siguientes opciones pueden ser especificadas: media, volume, pool, slots En el caso de modificar un volumen, se preguntara por el valor que se desea modificar. Los siguientes parametros pueden ser ajustados: Volume Status Volume Retention Period Volume Use Duration Maximum Volume Jobs Maximum Volume Files Maximum Volume Bytes Recycle Flag Recycle Pool Slot Inchanger Flag Pool Volume Files Volume From Pool All Volumes from Pool All Volumes from all Pools Para slots, con la opcion update slots, bacula obtendra
una lista de slots y sus respectivas etiquetas de codigos de barra desde el storage daemon, y para cada codigo de barra encontrado, se modificara automaticamente el slot el registro de Media en el catalogo con el nuevo valor correspondiente. Para la opcion de pool, update pool, bacula movera los registros de volumenes desde el pool existente al pool indicado. Para las opciones Volume from Pool, All Volumes from Pool y All Volumes from all Pools, los valores siguientes son modificados del registro de Pool: Recycle, RecyclePool, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles y MaxVolBytes. La sintaxis completa para la accion update desde la linea de comandos, es la siguiente: update volume=xxx pool=yyy slots volstatus=xxx VolRetention=ddd VolUse=ddd MaxVolJobs=nnn MaxVolBytes=nnn Recycle=yes|no slot=nnn enabled=n recyclepool=zzz use
Este comando permite especificar el catalogo de base de datos a utilizar. Normalmente, se utiliza una unica base de datos. En el caso de utilizar mas de una base de datos, se puede utilizar este comando para cambiarse entre una y la otra: use
var
Este comando toma una cadena de caracteres y realiza una expansion de variables, de la misma manera como es hecha con el string LabelFormat. De esta manera, se puede hacer una prueba con las cadenas para la accion de Label Format. La diferencia entre el comando var y el proceso de Label Format, es que durante el primero no existe ningun job en ejecucion.
version
Imprime la version del director.
quit
Termina el programa de consola, enviando un requerimiento de quit al director, y espera confirmacion por parte de este. Si el director, esta ocupado con un comando previo que no ha terminado de ejecutarse, puede tomar algun tiempo. Se puede salir de la consola
de manera inmediata, ejecutando el comando .quit. query
Este comando lee unas consultas predefinidas de SQL desde un archivo (el nombre y ubicacion del mismo se define en el recurso QueryFile, indicado en el archivo de configuración del director). Cuando se selecciona esta opcion, se solicita al usuario escoger una consulta desde el archivo de querys, y posiblemente ingresar uno o mas parametros, que sera enviada al engine de SQL a la base de datos del catalogo. Las opciones configuradas por defecto para este comando son las siguientes: Available queries: 1: List up to 20 places where a File is saved regardless of the directory 2: List where the most recent copies of a file are saved 3: List last 20 Full Backups for a Client 4: List all backups for a Client after a specified time 5: List all backups for a Client 6: List Volume Attributes for a selected Volume 7: List Volumes used by selected JobId 8: List Volumes to Restore All Files 9: List Pool Attributes for a selected Pool 10: List total files/bytes by Job 11: List total files/bytes by Volume 12: List Files for a selected JobId 13: List Jobs stored on a selected MediaId 14: List Jobs stored for a given Volume name 15: List Volumes Bacula thinks are in changer 16: List Volumes likely to need replacement from age or errors Choose a query (1-16):
exit
Termina el programa de consola.
wait
El comando wait provoca que el director haga una pausa hasta que no haya jobs en ejecucion. Cuenta con las siguientes opciones: wait [jobid=nn] [jobuid=unique jobid] [job=job name] Si se indica un JobId, el comando wait esperara por la terminacion del job en particular para continuar.
Comandos especiales (.) Adicional a los comandos indicados con anterioridad, existen unos comandos especiales, que tiene como prefijo un punto (.), que se utilizan en programas batch o en interfaces de usuario, bien sea graficas o en consola de texto. Los mas utilizados son: .backups job=xxx
Lista los backups para un job especifico.
.clients
Lista todos los nombres de clientes.
.defaults client=xxx fileset=yyy
Muestra los determinado.
.die
Provoca que el director genera un segment fault (para debugging).
.dir
Equivalente al comando dir, pero la salida muestra campos separados por comas en vez de espacios.
.exit
Equivalente al comando quit.
.filesets
Lista todos los nombres de los filesets.
.help
Salida del comando help.
.jobs
Lista todos los nombres de los jobs.
.levels
Muestra todos los niveles de respaldos.
.messages
Muestra un listado de los mensajes.
.msgs
Retorna cualquier mensaje encolado.
.pools
Lista los nombres de los pools.
.quit
Equivalente al comando quit.
.status
Muestra la salida del status.
valores
por
defecto
para
cliente
.storage
Retorna los nombres almacenamiento.
.types
Muestra los tipos de jobs.
de
los
recursos
de
Ejecucion manual de jobs En bacula, los jobs se pueden ejecutar de dos (2) maneras: ● ●
Planificada, de acuerdo al scheduling de backup Manual, indicando la operacion y acciones por linea de comandos de consola
En este punto, se mostraran los pasos para la ejecucion manual por parte del administrador. Cuando se ejecuta el comando “run”, para correr un job, se muestra un listado de los jobs configurados, tal como se observa en el siguiente ejemplo: A job name must be specified. The defined Job resources are: 1: Matou 2: Polymatou 3: Rufus 4: Minimatou 5: Minou 6: PmatouVerify 7: MatouVerify 8: RufusVerify 9: Watchdog Select Job resource (1-9):
Por ejemplo, si se selecciona la opcion cinco (5), se muestra el siguiente menu: Run Backup job JobName: Minou FileSet: Minou Full Set Level: Incremental Client: Minou Storage: DLTDrive Pool: Default When: 2003-04-23 17:08:18 OK to run? (yes/mod/no):
Donde se pide al usuario, confirmar la ejecucion del job o modificar sus opciones.Si se escribe “yes”, se iniciara con la corrida del mismo. Si se ingresa “mod”, se muestra el
siguiente menu de opciones, con los parametros que se pueden modificar para este trabajo: Parameters to modify: 1: Level 2: Storage 3: Job 4: FileSet 5: Client 6: When 7: Pool Select parameter to modify (1-7)
Si se desea iniciar un job en una hora posterior, se configura el valor de “When”, seleccionando la opcion 6 del menu de usuario. Posteriormente, se ingresa la hora deseada, con el formato requerido de YYYY-MM-DD HH:MM:SS. Restauraciones o recuperaciones Una de las operaciones fundamentales en la administración de los respaldos, la representa la recuperacion de datos, en caso que sean necesarios por parte de los usuarios, para alguna actividad en particular. Basicamente, la restauracion se hara desde la consola de administración bconsole, aunque tambien se puede utilizar la consola grafica y web, que permite configurar con mayores especificaciones esta actividad, y para esto se ejecuta el comando restore. El comando restore, se encarga de ubicar el objeto a restaurar, el job que genero la entrada, el volumen donde esta almacenado, la seleccion del (los) objeto(s) por parte del usuario y la recuperacion del mismo. Cuando se invoca el comando restore, se muestra el siguiente submenu: To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Cancel
De las opciones desplegadas, las mas utilizadas se corresponden con la numero 5) y la numero 6). En este caso, se escogio la opcion numero 5), y con esto se muestra la siguiente
información: Select item: (1-12): 5 Automatically selected Client: debian-fd The defined FileSet resources are: 1: Catalog 2: Full Set Select FileSet resource (1-2): 2 +-------+-------+----------+-----------+---------------------+------------+ | JobId | Level | JobFiles | JobBytes | StartTime | VolumeName | +-------+-------+----------+------------+---------------------+------------+ | 27 | F | 2,951 | 19,706,990 | 2009-04-23 20:37:55 | Prueba001 | | 28 | I | 0 | 0 | 2009-04-23 20:39:27 | Prueba001 | | 29 | I | 9 | 635 | 2009-04-25 06:54:27 | Prueba001 | | 30 | I | 2 | 0 | 2009-04-25 06:55:21 | Prueba001 | | 31 | I | 1 | 0 | 2009-04-25 06:56:24 | Prueba001 | | 32 | I | 8 | 635 | 2009-04-25 11:00:13 | Prueba001 | | 34 | I | 9 | 750 | 2009-05-17 22:55:21 | Prueba001 | +-------+-------+----------+------------+---------------------+------------+ You have selected the following JobIds: 27,28,29,30,31,32,34 Building directory tree for JobId +++++++ Building directory tree for JobId Building directory tree for JobId Building directory tree for JobId Building directory tree for JobId Building directory tree for JobId Building directory tree for JobId 7 Jobs, 2,898 files inserted into
27 ...
+++++++++++++++++++++++++++++++++++++++++
28 ... 29 ... 30 ... 31 ... 32 ... 34 ... the tree.
Luego de solicitar el FileSet, que define la información a restaurar, se indica al usuario los volumenes y jobids que seran utilizados en la operacion. Seguidamente, se muestra al usuario un prompt, donde se seleccionaran los ojbetos a restaurar. Para ello, se cuenta con los siguiente comandos: Command Description ======= =========== cd change current directory count count marked files in and below the cd dir long list current directory, wildcards allowed done leave file selection mode estimate estimate restore size exit same as done command find find files, wildcards allowed help print help ls list current directory, wildcards allowed lsmark list the marked files in and below the cd mark mark dir/file to be restored recursively in dirs markdir mark directory name to be restored (no files) pwd print current working directory
unmark unmark dir/file to be restored recursively in dir unmarkdir unmark directory name only no recursion quit quit and do not do restore ? print help
En este, se escogera el archivo /etc/hosts. Para ello el comando ejecutado es: mark /etc/hosts. Una vez realizada la seleccion, se ejecuta el comando done, para finalizar con el proceso de seleccion. A continuación, se muestra al usuario la información de la seleccion: $ done Bootstrap records written to /var/lib/bacula/debian-dir.restore.1.bsr The job will require the following Volume(s) Storage(s) SD Device(s) =========================================================================== Prueba001
File
FileStorage
1 file selected to be restored. Run Restore job JobName: RestoreFiles Bootstrap: /var/lib/bacula/debian-dir.restore.1.bsr Where: /nonexistant/path/to/file/archive/dir/bacula-restores Replace: always FileSet: Full Set Backup Client: debian-fd Restore Client: debian-fd Storage: File When: 2009-05-17 22:56:30 Catalog: MyCatalog Priority: 10 OK to run? (yes/mod/no): mod
En este caso, se modificara el directorio donde se hara la restauracion. Por ello, se teclea mod, en el dialogo de confirmacion que se muestra el usuario, con lo cual se despliega el siguiente submenu: Parameters to modify: 1: Level 2: Storage 3: Job 4: FileSet 5: Restore Client 6: When 7: Priority 8: Bootstrap 9: Where 10: File Relocation 11: Replace 12: JobId
Select parameter to modify (1-12): 9
Tal como se aprecia el parametro a modificar es “9”, que permite configurar el directorio donde se hara la recuperacion. Please enter path prefix for restore (/ for none): /tmp Run Restore job JobName: RestoreFiles Bootstrap: /var/lib/bacula/debian-dir.restore.1.bsr Where: /tmp Replace: always FileSet: Full Set Backup Client: debian-fd Restore Client: debian-fd Storage: File When: 2009-05-17 22:56:30 Catalog: MyCatalog Priority: 10 OK to run? (yes/mod/no): yes
Luego de haber realizado la seleccion respectiva, ya se puede iniciar la operacion de restauracion. Al finalizar el job de restauracion, se muestra un mensaje en la consola, indicando la finalizacion exitosa o no del mismo, que puede tener la siguiente estructura: * * * *mess 17-May 22:56 debian-dir JobId 36: Start Restore Job RestoreFiles. 2009-05-17_22.56.06 17-May 22:56 debian-dir JobId 36: Using Device "FileStorage" 17-May 22:56 debian-sd JobId 36: Ready to read from volume "Prueba001" on device "FileStorage" (/home/bacula). 17-May 22:56 debian-sd JobId 36: Forward spacing Volume "Prueba001" to file:block 0:195. 17-May 22:56 debian-sd JobId 36: End of Volume at file 0 on device "FileStorage" (/home/bacula), Volume "Prueba001" 17-May 22:56 debian-sd JobId 36: End of all volumes. 17-May 22:56 debian-dir JobId 36: Bacula debian-dir 2.2.8 (26Jan08): 17-May-2009 22:56:52 Build OS: i486-pc-linux-gnu debian 4.0 JobId: 36 Job: RestoreFiles.2009-05-17_22.56.06 Restore Client: debian-fd Start time: 17-May-2009 22:56:51 End time: 17-May-2009 22:56:52 Files Expected: 1 Files Restored: 1 Bytes Restored: 245 Rate: 0.2 KB/s FD Errors: 0 FD termination status: OK SD termination status: OK Termination: Restore OK 17-May 22:56 debian-dir JobId 36: Begin pruning Jobs. 17-May 22:56 debian-dir JobId 36: No Jobs found to prune. 17-May 22:56 debian-dir JobId 36: Begin pruning Files.
17-May 22:56 debian-dir JobId 36: No Files found to prune. 17-May 22:56 debian-dir JobId 36: End auto prune.