Ir al contenido

Herramientas de línea de comandos

Todos los programas de NGBackup están en /opt/backup/bin/.

ProgramaFunciónPuerto
backup-dirDirector — agenda y orquesta9101
backup-sdStorage Daemon — lee/escribe volúmenes9103
backup-fdFile Daemon — agente en las máquinas protegidas (por flags)9102
ProgramaPara qué sirveEquivalente Bacula
backup-consoleConsole interactivo (run/restore/status)bconsole
backup-cliDirigir el Director por scripts
backup-copyCopiar/migrar volúmenes entre poolsbcopy
backup-extractExtraer archivos directo de un volumenbextract
backup-lsListar el contenido de un volumenbls
backup-scanReconstruir el catálogo desde volúmenesbscan
backup-dbcheckVerificar y reparar el catálogodbcheck
backup-dirjson · backup-sdjson · backup-fdjson · backup-consjsonVolcar cualquier config a JSON

Dentro de backup-console manejas el Director con los mismos verbos que el bconsole de Bacula, y la salida de texto es idéntica byte a byte a Bacula 15.3 — los runbooks y parsers existentes siguen funcionando.

VerboMuestra
show <kind>[=name]Un recurso configurado (Director / Client / Storage / Pool / Catalog / Content / Schedule / Job / Messages). show job=NAME incluye recursivamente los recursos referenciados; show all vuelca todo en el orden del stock. Forma plana Kind: name=value (con la forma de sub-recurso -->), no la sintaxis .conf.
status dirEstado del Director — encabezado (Jobs: / Crypto: / Heap: / Res:), luego las secciones Scheduled Jobs (N/50) / Running Jobs / Terminated Jobs. status storage=NAME / status client=NAME hacen proxy al SD / FD.
list <kind>Filas del catálogo como tablas con bordes +---+ (list jobs / clients / pools / volumes / `jobmedia [jobid=N
llist jobsLa forma larga / vertical (key: value) de list jobs, con las columnas unidas (clientname, poolname, content, …).
status tenantLista los recursos Tenant {} configurados y sus directivas de cuota — maxclients / maxjobs / maxstorages / maxvolbytes / warnvolbytes / isolated / enabled — o No Tenant resources defined. cuando no hay ninguno configurado. También accesible como el ítem 6 del menú interactivo status.
cancel <jobid=N | all>Cancela un job en ejecución, o todos los jobs en ejecución con cancel all. El cancel solo abre un selector interactivo de jobs en ejecución.
purge <files | jobs | volume=NAME>Elimina registros del catálogo sin tocar los datos del volumen. purge files jobid=N | job=NAME | client=NAME elimina filas de File; purge jobs client=NAME elimina filas de Job; purge volume=NAME hace purge de un volumen. Destructivo — las filas del catálogo se van, pero los bytes del volumen permanecen hasta sobrescribirse.
delete <jobid=N | client=NAME | volume=NAME | pool=NAME>delete client=NAME elimina un cliente y hace cascade a sus filas dependientes del catálogo. delete jobid=N elimina un único registro de job. delete volume=NAME elimina en cascada todos los jobs del volumen y luego el registro del volumen. delete pool=NAME elimina un registro de pool vacío (rechazado mientras aún posea volúmenes). Solo catálogo; no libera espacio del volumen.
update <slots [storage=NAME] | pool=NAME | volume=NAME> …update slots relee el inventario de códigos de barras del autochanger y sincroniza las columnas Slot/InChanger de cada volumen coincidente en el catálogo (los volúmenes que ya no están en el changer se desmarcan; los códigos sin volumen en el catálogo se reportan, nunca se crean automáticamente). update pool=NAME aplica campos de retención/límites en la fila del pool; update volume=NAME edita campos mutables de un volumen (volstatus=, slot=, volretention=, …).
update <client=NAME | storage=NAME> version=X [package=NAME] [phase=all|precheck|stage|install] [downgrade=yes] [ignoreorder=yes]Actualización de flota (NGFLEET): instala un .ngpkg firmado desde la caché del repositorio en el daemon objetivo, dentro de un job Update visible en el catálogo (list jobs tipo W). El valor por defecto phase=all ejecuta precheck → stage (envío firmado, re-verificado en el daemon) → install: la unidad de aplicación root re-verifica la firma, extrae a /opt/backup/releases/<pkg>-<ver>/ y cambia el symlink del binario atómicamente; el daemon se reinicia solo y el Director confirma el banner de la nueva versión en el inventario de flota. Rechaza mientras haya jobs en el objetivo, cuando se rompería el orden director ≥ sd ≥ fd (ignoreorder=yes lo anula) y downgrades sin downgrade=yes. Requiere el paquete en la caché (repo sync / repo import) y las unidades systemd ngbackup-apply-update en el host.

Todo verbo también acepta output=json para un envoltorio legible por máquina (lo que consumen las consolas Web y Desktop). El registro del job (list joblog jobid=N) renderiza el informe de resumen del job en varias líneas de Bacula — Build OS, JobId, Level, Client, FileSet, Pool, Storage, horarios, archivos/bytes escritos, tasa y estado de terminación.

list events lee la tabla de catálogo Events (solo-anexar) — un registro de auditoría que el Director escribe a medida que se ejecutan jobs y comandos del operador. Las filas vuelven de la más nueva a la más antigua (por defecto limit=100, ajusta con limit=N) en una tabla de siete columnas: code, type, time, daemon, source, ref y text. El Director registra DJ0001 cuando un job recibe un JobId y DJ0002 cuando finaliza, así que un único job deja un par claro de inicio/fin:

*list events
+--------+------+---------------------+------------+--------+------------+--------------------------+
| code | type | time | daemon | source | ref | text |
+--------+------+---------------------+------------+--------+------------+--------------------------+
| DJ0002 | job | 2026-06-30 18:21:07 | *Director* | | JobId=1080 | Job 1080 terminated OK |
| DJ0001 | job | 2026-06-30 18:20:55 | *Director* | | JobId=1080 | Job Daily (1080) created |
+--------+------+---------------------+------------+--------+------------+--------------------------+

El texto de terminación incluye el desenlace — terminated OK / with warnings / cancelled / with errors — para que la fila de auditoría muestre el resultado en línea.

output=json devuelve los mismos campos (code / type / time / daemon / source / ref / text) como un envoltorio de lista estable.

El Director mantiene un inventario de versión por daemon (la tabla de catálogo FleetInventory) para que veas de un vistazo qué ejecuta cada FD/SD de la flota:

*version client=NAME # consulta el FD de un cliente y registra versión + plataforma
*version storage=NAME # consulta el SD de un Storage
*version all # consulta todo (y el propio Director)
*list fleet # el inventario registrado; señala daemons nunca vistos

version sin destino sigue imprimiendo el banner del propio Director. Las consultas usan los canales autenticados normales DIR↔FD/DIR↔SD — sin puertos ni agentes extra — y cada despacho de job también actualiza la fila del cliente automáticamente (como máximo una vez por hora por cliente), de modo que list fleet se mantiene al día en un Director ocupado sin consultas manuales. Ambos verbos aceptan output=json (envoltorio de lista kind: "fleet"). Los daemons Bacula stock no implementan la consulta y se reportan como UNREACHABLE/never seen.

Cada build incluye una concesión community firmada (10 objetos / 10 TB, perpetua), así que un Director nuevo queda licenciado sin configuración. El derecho de pago llega de tres formas, resueltas en este orden:

  1. LicenseFile = /path/grant.lic en el recurso Director {} — un único archivo de concesión firmado (heredado, aún soportado y prevalece cuando se define).
  2. Un recurso License {} con OfflineFile = /path/grant.lic — la vía air-gap; la concesión firmada se lee localmente, sin llamada de red.
  3. Un recurso License {} con Serial + ApiUrlactivación en línea: el Director envía (POST) el serial + una huella de la máquina al servidor de licencias, cachea la concesión firmada devuelta y la renueva a diario (el servidor fija la cadencia). Todo fallo de red es fail-open — el daemon conserva la última concesión válida, así que el servidor de licencias inaccesible nunca bloquea los backups.
License {
Name = Acme
Serial = "NGB-XXXX-XXXX-XXXX"
ApiUrl = "https://license.ngbackup.com/"
# OfflineFile = "/opt/backup/etc/grant.lic" # alternativa air-gap
}

La raíz de confianza es el token firmado en los tres casos — el Director verifica cada concesión (archivo o en línea) contra la clave pública embebida, así que el servidor de licencias nunca puede conceder más que el firmante offline. Verbos de la consola:

*license # edición, uso vs límites, expiración, estado y origen
*license activate # fuerza activación/renovación en línea inmediata (tras un nuevo serial)

license añade una línea source (community | offline-file | online:<serial-tail>); ambos aceptan output=json.

Ventana de terminal
backup-dir -t -c /opt/backup/etc/backup-dir.conf
backup-sd -t -c /opt/backup/etc/backup-sd.conf
backup-fd -t -c /opt/backup/etc/backup-fd.conf

-t prueba y sale; combínalo con las herramientas *json para alimentar automatización o el Web Console.