Tornar a LockBox

Documentació CLI de LockBox

LockBox CLI és la versió d'automatització només en anglès per a xifrat, extracció, activació, còpies de seguretat xifrades programades i fluxos de treball CI/CD. Utilitza el mateix model de llicència vinculada al dispositiu que l'aplicació d'escriptori.

Inici ràpid

Posau LockBox.Cli.exe en una carpeta inclosa a PATH, o crideu-lo pel camí complet. El marcador --cli és acceptat per compatibilitat però no és necessari en la compilació només CLI.

.\LockBox.Cli.exe --help
.\LockBox.Cli.exe device-id
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen --count 3

Flux mínim de crear i obrir:

$env:LBX_MASTER = "use-a-long-master-password"
$env:LBX_L1 = "layer-1-key"

.\LockBox.Cli.exe create `
  --source "D:\Data" `
  --output "E:\Backups\data.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-128-GCM=LBX_L1

.\LockBox.Cli.exe open `
  --container "E:\Backups\data.lbx" `
  --output "D:\Restore" `
  --master-env LBX_MASTER `
  --key-env LBX_L1

Linux utilitza els mateixos comandos amb camins amb barra i un binari sense el sufix .exe:

chmod +x ./LockBox.Cli
./LockBox.Cli --help
./LockBox.Cli device-id
./LockBox.Cli create \
  --source "/srv/data" \
  --output "/backup/data.lbx" \
  --master-env LBX_MASTER \
  --layer-env AES-128-GCM=LBX_L1

Instal·lar i verificar la CLI

Extraieu el ZIP adequat al sistema i processador. .NET hi va inclòs. Compareu el hash amb SHA256SUMS.txt. Poseu la CLI al camí absolut indicat a continuació i comproveu l’ajuda i la llicència amb el compte de còpies de seguretat.

Linux també necessita dependències natives de la distribució, com ICU i OpenSSL; el .NET inclòs no les proporciona. A Windows, la política d’execució vigent ha de permetre scripts PowerShell.

.NET / Linux · PowerShell / ExecutionPolicy

Expand-Archive -LiteralPath '.\LockBox-Cli-win-x64.zip' -DestinationPath 'C:\Tools\LockBox'
& 'C:\Tools\LockBox\LockBox.Cli.exe' --help
& 'C:\Tools\LockBox\LockBox.Cli.exe' license
Get-FileHash -LiteralPath '.\LockBox-Cli-win-x64.zip' -Algorithm SHA256
uname -m
unzip LockBox-Cli-linux-x64.zip -d ./lockbox-cli
chmod +x ./lockbox-cli/LockBox.Cli
./lockbox-cli/LockBox.Cli --help
./lockbox-cli/LockBox.Cli license
sha256sum LockBox-Cli-linux-x64.zip

SHA256SUMS.txt

Windows x64   -> LockBox-Cli-win-x64.zip
Windows x86   -> LockBox-Cli-win-x86.zip
Windows ARM64 -> LockBox-Cli-win-arm64.zip
Linux x86_64  -> LockBox-Cli-linux-x64.zip
Linux aarch64 -> LockBox-Cli-linux-arm64.zip
Linux armv7l  -> LockBox-Cli-linux-arm.zip

Carpetes, camins i espai

Adapteu els camins. La carpeta d’origen no pot ser buida i el contenidor ha de ser fora. Reutilitzar el nom de sortida substitueix el contenidor anterior i les parts. Reserveu espai temporal al costat del contenidor i una còpia de l’origen per a tasques programades. Les unitats es basen en 1024; el farciment afegeix bytes.

C:\Tools\LockBox\LockBox.Cli.exe     /opt/lockbox/LockBox.Cli
C:\LockBox\secrets\master.txt       /srv/lockbox/secrets/master.txt
C:\LockBox\secrets\layer1.txt       /srv/lockbox/secrets/layer1.txt
C:\LockBox\backup.ps1               /srv/lockbox/backup.sh
D:\Data\report.csv                 /srv/data/report.csv
E:\Backups\20260910-020000\data.lbx  /backup/20260910-020000/data.lbx
D:\Restore\Data\report.csv         /restore/data/report.csv
& 'C:\Tools\LockBox\LockBox.Cli.exe' create --source 'D:\Data' --output 'E:\Backups\data.lbx' --master-file 'C:\LockBox\secrets\master.txt' --layer-file 'AES-128-GCM=C:\LockBox\secrets\layer1.txt'
/opt/lockbox/LockBox.Cli create --source /srv/data --output /backup/data.lbx --master-file /srv/lockbox/secrets/master.txt --layer-file AES-128-GCM=/srv/lockbox/secrets/layer1.txt

Preparar fitxers de secrets

Genereu els secrets una vegada, deseu-ne una còpia protegida i limiteu l’accés als fitxers. Els exemples rebutgen substituir claus existents. Els fitxers UTF-8 conserven espais, però eliminen salts de línia finals. Conserveu les claus originals per a còpies antigues.

$ErrorActionPreference = 'Stop'
$cli = 'C:\Tools\LockBox\LockBox.Cli.exe'
$secretDir = 'C:\LockBox\secrets'
New-Item -ItemType Directory -Force -Path $secretDir | Out-Null
$files = @('master.txt', 'layer1.txt')
foreach ($name in $files) {
    if (Test-Path -LiteralPath (Join-Path $secretDir $name)) {
        throw "Secret already exists: $name"
    }
}
foreach ($name in $files) {
    $key = & $cli keygen --count 1
    if ($LASTEXITCODE -ne 0) { throw 'Key generation failed' }
    [IO.File]::WriteAllText((Join-Path $secretDir $name), [string]$key, [Text.UTF8Encoding]::new($false))
}
set -eu
umask 077
mkdir -p /srv/lockbox/secrets
test ! -e /srv/lockbox/secrets/master.txt
test ! -e /srv/lockbox/secrets/layer1.txt
set -C
/opt/lockbox/LockBox.Cli keygen --count 1 > /srv/lockbox/secrets/master.txt
/opt/lockbox/LockBox.Cli keygen --count 1 > /srv/lockbox/secrets/layer1.txt

Activació i estat de la llicència

La clau de llicència està vinculada a l'ID del dispositiu que imprimeix la mateixa compilació de CLI. Si es copia una llicència a un altre PC, LockBox la rebutja i torna a la versió gratuïta.

Windows comprova les ubicacions de dades de l'aplicació LockBox ja existents. Linux desa l'activació a $XDG_CONFIG_HOME/lockbox/.lockbox.license, després ~/.config/lockbox/.lockbox.license, amb ~/.lockbox/.lockbox.license com a reserva.

Obtenir ID del dispositiu

.\LockBox.Cli.exe device-id

Comprovar l'edició actual

.\LockBox.Cli.exe license

Activar des d'un fitxer de llicència

.\LockBox.Cli.exe activate --license-file "C:\Licenses\lockbox-license.txt"

Activar des d'una variable d'entorn

$env:LBX_LICENSE = "LBX-LIC-..."
.\LockBox.Cli.exe activate --license-env LBX_LICENSE

Activar en línia

L'activació en línia funciona, però pot filtrar-se a través de l'historial de la shell o els registres de processos.

.\LockBox.Cli.exe activate --license "LBX-LIC-..."

Activació a Linux

export LBX_LICENSE="LBX-LIC-..."
./LockBox.Cli activate --license-env LBX_LICENSE
./LockBox.Cli license

Gestió de secrets

Prefereix variables d'entorn o fitxers. Els secrets incrustats són útils només per a proves. Les contrasenyes mestres i les claus de capa han de ser preservades: sense elles, el contenidor no es pot obrir.

PropòsitIncrustatEntornFitxer
Contrasenya mestre--master value--master-env ENV--master-file path
Crear clau de capa--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Obrir clau de capa--key value--key-env ENV--key-file path
Contrasenya del fitxer de programació--password value--password-env ENV--password-file path
Contrasenya de destrucció del contenidor--destruction-password value--destruction-password-env ENV--destruction-password-file path
Clau de llicència--license value--license-env ENV--license-file path

Secrets basats en fitxer

Set-Content -Path ".\master.txt" -Value "master-password" -Encoding UTF8
Set-Content -Path ".\layer1.txt" -Value "layer-key-1" -Encoding UTF8

.\LockBox.Cli.exe create `
  -s "D:\Data" `
  -o "E:\Backups\data.lbx" `
  --master-file ".\master.txt" `
  --layer-file AES-128-GCM=.\layer1.txt

Algorismes i generació de claus

Fes servir algorithms per veure tots els perfils compatibles i les edicions mínimes. Fes servir keygen per a claus de capa.

.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen
.\LockBox.Cli.exe keygen --count 9
.\LockBox.Cli.exe generate-keys -n 20

Àlies de comandament compatibles:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Crear contenidors

create empaqueta una carpeta de l'origen, aplica compressió i farciment opcionals, xifra la càrrega útil a través d'una o més capes, i escriu un contenidor .lbx.

Opcions requerides

  • --source o -s: carpeta de l'origen.
  • --output o -o: ruta de sortida de .lbx.
  • --master, --master-env o --master-file.
  • Almenys una capa: --layer, --layer-env o --layer-file.

Contenidor AES mínim

.\LockBox.Cli.exe create `
  -s "D:\Data" `
  -o "E:\Backups\data.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-128-GCM=LBX_L1

Contenidor comprimit

.\LockBox.Cli.exe create `
  --source "D:\Exports" `
  --output "E:\Backups\exports.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --compress

Farciment criptogràfic

.\LockBox.Cli.exe create `
  -s "D:\Contracts" `
  -o "E:\Backups\contracts.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --padding 2GB

Dividir el contenidor en parts

.\LockBox.Cli.exe create `
  -s "D:\Media" `
  -o "E:\Backups\media.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --split 700MB

La primera part conserva .lbx. Les parts addicionals utilitzen .lbx1, .lbx2, i així successivament. Manteniu totes les parts a la mateixa carpeta.

Exemple de 9 capes Max

$env:LBX_MASTER = "use-a-long-master-password"
$env:LBX_L1 = "layer-1-key"
$env:LBX_L2 = "layer-2-key"
$env:LBX_L3 = "layer-3-key"
$env:LBX_L4 = "layer-4-key"
$env:LBX_L5 = "layer-5-key"
$env:LBX_L6 = "layer-6-key"
$env:LBX_L7 = "layer-7-key"
$env:LBX_L8 = "layer-8-key"
$env:LBX_L9 = "layer-9-key"

.\LockBox.Cli.exe create `
  --source "D:\Data" `
  --output "E:\Backups\data-max.lbx" `
  --master-env LBX_MASTER `
  --compress `
  --padding 2GB `
  --split 700MB `
  --layer-env AES-256-GCM=LBX_L1 `
  --layer-env CHACHA20-POLY1305=LBX_L2 `
  --layer-env AES-256-CCM=LBX_L3 `
  --layer-env SERPENT-256-CTR-HMACSHA512=LBX_L4 `
  --layer-env TWOFISH-256-CTR-HMACSHA512=LBX_L5 `
  --layer-env CAMELLIA-256-CTR-HMACSHA512=LBX_L6 `
  --layer-env ARIA-256-CTR-HMACSHA512=LBX_L7 `
  --layer-env AES-256-CBC-HMACSHA512=LBX_L8 `
  --layer-env AES-192-OFB-HMACSHA384=LBX_L9

Sintaxi alternativa d'algorisme/clau

.\LockBox.Cli.exe create `
  -s "D:\Data" `
  -o "E:\Backups\data.lbx" `
  --master-env LBX_MASTER `
  --algorithm AES-128-GCM --key-env LBX_L1 `
  --algorithm AES-128-CTR-HMACSHA256 --key-env LBX_L2

Eliminar l'origen després de la creació manual correcta

.\LockBox.Cli.exe create `
  -s "D:\TempToEncrypt" `
  -o "E:\Backups\temp.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --delete-source

--delete-source elimina la carpeta de l'origen només després que el contenidor s'ha creat amb èxit. El programador té una opció diferent: --delete-source-contents.

Contrasenya de destrucció del contenidor

L'edició Max pot afegir una contrasenya de destrucció separada a un contenidor. Si aquesta contrasenya s'introdueix més endavant com a contrasenya mestra, LockBox sobrescriu immediatament el contenidor sense confirmació. Això està pensat per a situacions de pressió o coacció. Mantingueu-la separada de la contrasenya mestra real.

La comanda verifica l'espai lliure del disc, xifra les dades originals del contenidor amb un secret aleatori fresc i AES-256-GCM en un fitxer temporal, normalitza el resultat a la mida exacta original, reemplaça el fitxer original i oblida el secret aleatori. Per a contenidors dividits, cada .lbx, .lbx1, .lbx2 part a la mateixa carpeta és reemplaçada mantenint les mides originals de les parts.

Crear amb una contrasenya de destrucció

$env:LBX_MASTER = "real-master-password"
$env:LBX_L1 = "layer-key-1"
$env:LBX_DESTROY = "pressure-password"

.\LockBox.Cli.exe create `
  --source "D:\Data" `
  --output "E:\Backups\data.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --destruction-password-env LBX_DESTROY

Activar la destrucció sense claus de capa

.\LockBox.Cli.exe open `
  --container "E:\Backups\data.lbx" `
  --output "D:\Restore" `
  --master-env LBX_DESTROY

Activació a Linux

export LBX_DESTROY="pressure-password"
./LockBox.Cli open \
  --container "/backup/data.lbx" \
  --output "/restore" \
  --master-env LBX_DESTROY

Després d'una destrucció exitosa, el contenidor ja no és un fitxer vàlid de LockBox. El CLI retorna el codi de sortida 0 perquè l'acció de destrucció sol·licitada s'ha completat amb èxit.

Obrir contenidors

open extreu un contenidor a la carpeta de sortida. Per a una extracció normal, les claus de capa han de passar-se en el mateix ordre utilitzat durant la creació. Per a un flux de treball amb contrasenya de destrucció, només cal la ruta del contenidor, la ruta de sortida i la contrasenya de destrucció com a contrasenya mestra.

Obrir un contenidor d'una capa

.\LockBox.Cli.exe open `
  --container "E:\Backups\data.lbx" `
  --output "D:\Restore" `
  --master-env LBX_MASTER `
  --key-env LBX_L1

Obrir un contenidor dividit

.\LockBox.Cli.exe open `
  -c "E:\Backups\data.lbx" `
  -o "D:\Restore" `
  --master-env LBX_MASTER `
  --key-env LBX_L1

Obrir un contenidor multi-capa

.\LockBox.Cli.exe open `
  -c "E:\Backups\data-max.lbx" `
  -o "D:\Restore" `
  --master-env LBX_MASTER `
  --key-env LBX_L1 `
  --key-env LBX_L2 `
  --key-env LBX_L3 `
  --key-env LBX_L4 `
  --key-env LBX_L5 `
  --key-env LBX_L6 `
  --key-env LBX_L7 `
  --key-env LBX_L8 `
  --key-env LBX_L9

Àlies

open
decrypt
extract

Verificar una còpia restaurant-la

Creeu un petit report.csv de prova. Extraieu en una carpeta nova, que conserva dins el nom de la carpeta original. Manteniu totes les parts juntes i compareu amb l’origen sense canvis. L’extracció necessita espai temporal d’escriptura al costat del contenidor. Protegiu també els fitxers restaurats sense xifrar.

$ErrorActionPreference = 'Stop'
$cli = 'C:\Tools\LockBox\LockBox.Cli.exe'
$container = 'E:\Backups\data.lbx'
$restore = Join-Path 'D:\RestoreChecks' ([guid]::NewGuid().ToString('N'))
& $cli open --container $container --output $restore --master-file 'C:\LockBox\secrets\master.txt' --key-file 'C:\LockBox\secrets\layer1.txt'
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$original = (Get-FileHash -LiteralPath 'D:\Data\report.csv' -Algorithm SHA256).Hash
$restored = (Get-FileHash -LiteralPath (Join-Path $restore 'Data\report.csv') -Algorithm SHA256).Hash
if ($original -ne $restored) { throw 'SHA256 mismatch' }
Write-Output $restore
set -eu
umask 077
mkdir -p /restore
restore=$(mktemp -d /restore/check-XXXXXX)
/opt/lockbox/LockBox.Cli open --container /backup/data.lbx --output "$restore" --master-file /srv/lockbox/secrets/master.txt --key-file /srv/lockbox/secrets/layer1.txt
cmp /srv/data/report.csv "$restore/data/report.csv"
sha256sum /srv/data/report.csv "$restore/data/report.csv"

Programador

Els comandaments del programador estan disponibles a l'edició Max. Emmagatzemen totes les metadades de la tasca en un fitxer .lbxjobs xifrat, incloent-hi la ruta de la font, la ruta de sortida, contrasenyes, contrasenya de destrucció, claus de capes, compressió, farciment, divisió i configuració d'eliminació del contingut de la font.

Les tasques programades s'executen només mentre LockBox.Cli.exe schedule run estigui en execució. Feu servir el Programador de Tasques de Windows, systemd de Linux, cron, un envolcall de servei o una sessió de consola de llarga durada si necessiteu que el treballador s'iniciï automàticament després del reinici.

Valors de freqüència

once
30m
hourly
2h
3h
6h
9h
12h
18h
daily
2d
3d
5d
weekly
2w
monthly
2mo
3mo
6mo
9mo
yearly

Afegeix una tasca de còpia de seguretat diària xifrada

$env:LBX_JOBS_PASSWORD = "jobs-file-password"
$env:LBX_MASTER = "master-password"
$env:LBX_L1 = "layer-key-1"
$env:LBX_DESTROY = "pressure-password"

.\LockBox.Cli.exe schedule add `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD `
  --name "Nightly data backup" `
  --frequency daily `
  --start ((Get-Date).AddDays(1).ToString("o")) `
  --source "D:\Data" `
  --output "E:\Backups\nightly-data.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --destruction-password-env LBX_DESTROY `
  --compress

Afegeix una tasca que elimina el contingut de la carpeta de la font després d'un èxit

.\LockBox.Cli.exe schedule add `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD `
  --name "Encrypt outgoing folder" `
  --frequency 30m `
  --start ((Get-Date).AddDays(1).ToString("o")) `
  --source "D:\Outgoing" `
  --output "E:\Backups\outgoing.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --delete-source-contents

Afegeix un arxiu mensual amb farciment i parts dividides

.\LockBox.Cli.exe schedule add `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD `
  --name "Monthly legal archive" `
  --frequency monthly `
  --start ((Get-Date).AddDays(1).ToString("o")) `
  --source "D:\Legal" `
  --output "E:\Archives\legal-monthly.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --compress `
  --padding 4GB `
  --split 2GB

Llista de tasques guardades

.\LockBox.Cli.exe schedule list `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD

Executa el treballador del programador

.\LockBox.Cli.exe schedule run `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD `
  --state "E:\Backups\jobs.status.json" `
  --poll-seconds 30

Executa les tasques programades una vegada i surt

.\LockBox.Cli.exe schedule run-once `
  --tasks "E:\Backups\jobs.lbxjobs" `
  --password-env LBX_JOBS_PASSWORD `
  --state "E:\Backups\jobs.status.json"

Mostra l'últim estat d'execució

.\LockBox.Cli.exe schedule status --state "E:\Backups\jobs.status.json"

Els marcadors d'estat són [OK], [RUNNING] i [FAILED]. Una tasca fallida inclou el motiu i indica a l'usuari que contacti amb el suport si el problema es repeteix.

Scripts JSON

Utilitzeu --script quan un flux de treball té diversos passos. L'executor d'scripts admet create, open, keygen, algorithms, device-id, license i activate.

Crear i obrir en un sol script

{
  "stopOnError": true,
  "commands": [
    {
      "command": "create",
      "source": "D:\\Data",
      "output": "E:\\Backups\\data.lbx",
      "masterPasswordEnv": "LBX_MASTER",
      "destructionPasswordEnv": "LBX_DESTROY",
      "compression": true,
      "padding": "512MB",
      "split": "700MB",
      "layers": [
        { "algorithm": "AES-256-GCM", "keyEnv": "LBX_L1" },
        { "algorithm": "CHACHA20-POLY1305", "keyEnv": "LBX_L2" }
      ]
    },
    {
      "command": "open",
      "container": "E:\\Backups\\data.lbx",
      "output": "D:\\Restore",
      "masterPasswordEnv": "LBX_MASTER",
      "keyEnvs": [ "LBX_L1", "LBX_L2" ]
    }
  ]
}
.\LockBox.Cli.exe --script ".\backup.lockbox.json"

Continuar després d'un pas fallit

{
  "stopOnError": false,
  "commands": [
    { "command": "license" },
    { "command": "algorithms" },
    {
      "command": "create",
      "source": "D:\\BuildOutput",
      "output": "E:\\Artifacts\\build.lbx",
      "masterPasswordEnv": "LBX_MASTER",
      "layers": [
        { "algorithm": "AES-128-GCM", "keyEnv": "LBX_L1" }
      ]
    }
  ]
}

Activar des de l'script

{
  "commands": [
    {
      "command": "activate",
      "licenseKeyFile": "C:\\Licenses\\lockbox-license.txt"
    },
    { "command": "license" }
  ]
}

Camps JSON i regles d’execució

La taula relaciona camps create i matrius de claus open amb les opcions CLI. Els camins relatius parteixen del directori de treball del procés; no se substitueixen variables ni dates. Useu una font de secret per camp. open llegeix keys, després keyEnvs i keyFiles. Preferiu stopOnError: true; amb false, un èxit posterior pot amagar un error. Els scripts JSON no admeten ordres del planificador.

{
  "stopOnError": true,
  "commands": [
    {
      "command": "create",
      "source": "/srv/data",
      "output": "/backup/data.lbx",
      "masterPasswordFile": "/srv/lockbox/secrets/master.txt",
      "layers": [
        { "algorithm": "AES-128-GCM", "keyFile": "/srv/lockbox/secrets/layer1.txt" }
      ]
    },
    {
      "command": "open",
      "container": "/backup/data.lbx",
      "output": "/restore/check",
      "masterPasswordFile": "/srv/lockbox/secrets/master.txt",
      "keyFiles": ["/srv/lockbox/secrets/layer1.txt"]
    }
  ]
}
/opt/lockbox/LockBox.Cli --quiet script /srv/lockbox/backup.lockbox.json
source / sourceFolder / sourceFolderPath--sourceCarpeta per empaquetar i xifrar.
output / outputContainerPath--outputRuta de sortida .lbx.
masterPassword--masterContrasenya maestra en línia.
masterPasswordEnv--master-envLlegir la contrasenya maestra de la variable d'entorn.
masterPasswordFile--master-fileLlegir la contrasenya maestra des d'un fitxer de text UTF-8.
layers[].algorithm + layers[].key--layerAfegir ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envAfegir ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileAfegir ALGORITHM=FILE.
compression / compress--compressHabilitar compressió.
padding--paddingAfegir farciment aleatori xifrat. Unitats: B, KB, MB, GB, TB.
paddingBytes--padding-bytesMida del farciment en bytes bruts.
split / splitSize--splitDividir la sortida en .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesMida de la part dividida en bytes bruts.
destructionPassword--destruction-passwordContrasenya de destrucció només de màxim en línia. Introduir-la més endavant com a contrasenya maestra sobrescriu immediatament el contenidor.
destructionPasswordEnv--destruction-password-envLlegir la contrasenya de destrucció només de màxim des d'una variable d'entorn.
destructionPasswordFile--destruction-password-fileLlegir la contrasenya de destrucció només de màxim des d'un fitxer de text UTF-8.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceEliminar la carpeta d'origen després de la creació manual exitosa.
container / containerPath--containerContenidor .lbx existent.
keys[]--keyClau de capa en línia en l'ordre original.
keyEnvs[]--key-envClau de capa des de la variable d'entorn.
keyFiles[]--key-fileClau de capa des d'un fitxer de text UTF-8.

Receptes d'automatització

Còpia de seguretat de base de dades xifrada

$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
$dump = "D:\DbDumps\$stamp"
New-Item -ItemType Directory -Path $dump | Out-Null

Copy-Item "D:\DatabaseExports\*" $dump -Recurse

.\LockBox.Cli.exe create `
  -s $dump `
  -o "E:\Backups\db-$stamp.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --compress `
  --padding 512MB

Protecció d'artifacts CI

.\LockBox.Cli.exe create `
  --source "$env:BUILD_ARTIFACTSTAGINGDIRECTORY" `
  --output "$env:AGENT_TEMPDIRECTORY\protected-artifacts.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-128-GCM=LBX_L1

Transferència segura a socis

.\LockBox.Cli.exe create `
  -s "D:\PartnerPackage" `
  -o "E:\Transfer\partner-package.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-256-GCM=LBX_L1 `
  --layer-env CHACHA20-POLY1305=LBX_L2 `
  --compress `
  --split 1GB

Arxiu de llarga durada

.\LockBox.Cli.exe create `
  -s "D:\Records\2026" `
  -o "E:\ColdStorage\records-2026.lbx" `
  --master-file "C:\Secrets\records-master.txt" `
  --layer-file AES-256-GCM=C:\Secrets\records-layer1.txt `
  --layer-file SERPENT-256-CTR-HMACSHA512=C:\Secrets\records-layer2.txt `
  --compress `
  --padding 8GB `
  --split 4GB

Exemple de fitxer per lots

@echo off
set LBX_MASTER=master-password
set LBX_L1=layer-key-1

LockBox.Cli.exe create ^
  --source "D:\Data" ^
  --output "E:\Backups\data.lbx" ^
  --master-env LBX_MASTER ^
  --layer-env AES-128-GCM=LBX_L1

if errorlevel 1 exit /b %errorlevel%
echo OK

Windows: copiar diverses carpetes

Deseu l’script al camí indicat. Crea un contenidor amb nom únic i un registre per origen, s’atura si hi ha errors i conserva el codi de sortida CLI. AES-128-GCM funciona amb Free; compressió i divisió requereixen Pro o Max.

C:\LockBox\backup.ps1

param(
    [string[]]$Source = @('D:\Data'),
    [string]$Destination = 'E:\Backups'
)
$ErrorActionPreference = 'Stop'
$cli = 'C:\Tools\LockBox\LockBox.Cli.exe'
$secretDir = 'C:\LockBox\secrets'
try {
    foreach ($folder in $Source) {
        $sourcePath = (Resolve-Path -LiteralPath $folder).Path
        $stamp = (Get-Date).ToUniversalTime().ToString('yyyyMMdd-HHmmss-fff')
        $runId = [guid]::NewGuid().ToString('N')
        $runDir = Join-Path $Destination "$stamp-$runId"
        New-Item -ItemType Directory -Path $runDir | Out-Null
        $container = Join-Path $runDir 'data.lbx'
        $log = Join-Path $runDir 'create.log'
        $cliArgs = @(
            '--quiet', 'create', '--source', $sourcePath, '--output', $container,
            '--master-file', (Join-Path $secretDir 'master.txt'),
            '--layer-file', ('AES-128-GCM=' + (Join-Path $secretDir 'layer1.txt'))
        )
        $ErrorActionPreference = 'Continue'
        & $cli @cliArgs > $log 2>&1
        $result = $LASTEXITCODE
        $ErrorActionPreference = 'Stop'
        if ($result -ne 0) {
            Get-Content -LiteralPath $log
            exit $result
        }
        if (-not (Test-Path -LiteralPath $container -PathType Leaf)) {
            throw "Container missing: $container"
        }
        Write-Output $container
    }
    exit 0
} catch {
    Write-Error $_ -ErrorAction Continue
    exit 1
}
& 'C:\LockBox\backup.ps1' -Source 'D:\Data', 'D:\Reports' -Destination 'E:\Backups'
# 0 = success; 1 = runtime error; 2 = usage error; 3 = edition restriction
$LASTEXITCODE

Linux: còpies sense supervisió

Deseu l’script Bash amb finals de línia LF. Prepareu CLI i secrets als camins indicats i passeu les carpetes d’origen com a arguments. Cada execució té un directori propi. Els errors deixen un registre i retornen un codi no nul; els originals es conserven.

/srv/lockbox/backup.sh

#!/bin/bash
set -eu
umask 077
cli=/opt/lockbox/LockBox.Cli
secret_dir=/srv/lockbox/secrets
backup_root=/backup
mkdir -p "$backup_root"
if [ "$#" -eq 0 ]; then
    set -- /srv/data
fi
for source in "$@"; do
    run_dir=$(mktemp -d "$backup_root/$(date -u +%Y%m%d-%H%M%S)-XXXXXX")
    container="$run_dir/data.lbx"
    log="$run_dir/create.log"
    "$cli" --quiet create \
        --source "$source" \
        --output "$container" \
        --master-file "$secret_dir/master.txt" \
        --layer-file "AES-128-GCM=$secret_dir/layer1.txt" > "$log" 2>&1 || {
        result=$?
        cat "$log" >&2
        exit "$result"
    }
    test -s "$container"
    printf '%s\n' "$container"
done
/bin/bash /srv/lockbox/backup.sh /srv/data /srv/reports

Programar amb el sistema operatiu

Les tasques executen els scripts anteriors; aquest ús de create no requereix Max. El registre Windows només funciona amb l’usuari connectat; configureu l’execució sense sessió al Planificador si cal. Afegiu cron al crontab del compte de còpies després de comprovar flock. Tots dos exemples s’executen a les 02:00 locals i eviten execucions programades superposades. Reviseu permisos i proveu manualment.

Windows

$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -NonInteractive -File "C:\LockBox\backup.ps1"' -WorkingDirectory 'C:\LockBox'
$trigger = New-ScheduledTaskTrigger -Daily -At '02:00'
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -MultipleInstances IgnoreNew -ExecutionTimeLimit ([TimeSpan]::Zero)
$principal = New-ScheduledTaskPrincipal -UserId ([Security.Principal.WindowsIdentity]::GetCurrent().Name) -LogonType Interactive
Register-ScheduledTask -TaskName 'LockBox backup' -Action $action -Trigger $trigger -Settings $settings -Principal $principal
Start-ScheduledTask -TaskName 'LockBox backup'
Get-ScheduledTaskInfo -TaskName 'LockBox backup'

New-ScheduledTaskSettingsSet · New-ScheduledTaskPrincipal

Linux: cron

crontab -e
0 2 * * * /usr/bin/flock -n /srv/lockbox/backup.lock /bin/bash /srv/lockbox/backup.sh >> /srv/lockbox/cron.log 2>&1

crontab(5)

Max: gestionar el planificador

Creeu el compte de servei lockbox amb els permisos necessaris, activeu-hi Max i prepareu el fitxer de contrasenya UTF-8 separat jobs.txt. add afegeix, no actualitza: feu-lo servir una vegada per tasca. Manteniu un procés per fitxer de tasques i reinicieu-lo després de canvis. El JSON d’estat no restaura l’historial: les repeticions vençudes se salten, una tasca once vençuda pot repetir-se. Per a inicis periòdics del sistema feu servir create en lloc de run-once repetit. El planificador reutilitza el nom de sortida.

/opt/lockbox/LockBox.Cli schedule add \
  --tasks /srv/lockbox/jobs.lbxjobs \
  --password-file /srv/lockbox/secrets/jobs.txt \
  --name nightly-data --frequency daily \
  --start "$(date -d 'tomorrow 02:00' --iso-8601=seconds)" \
  --source /srv/data --output /backup/nightly-data.lbx \
  --master-file /srv/lockbox/secrets/master.txt \
  --layer-file AES-128-GCM=/srv/lockbox/secrets/layer1.txt

/opt/lockbox/LockBox.Cli schedule list --tasks /srv/lockbox/jobs.lbxjobs --password-file /srv/lockbox/secrets/jobs.txt

/etc/systemd/system/lockbox-scheduler.service

[Unit]
Description=LockBox scheduler
After=local-fs.target
RequiresMountsFor=/srv/data /srv/lockbox /backup

[Service]
Type=simple
User=lockbox
WorkingDirectory=/srv/lockbox
UMask=0077
ExecStart=/opt/lockbox/LockBox.Cli schedule run --tasks /srv/lockbox/jobs.lbxjobs --password-file /srv/lockbox/secrets/jobs.txt --state /srv/lockbox/jobs.status.json --poll-seconds 30
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now lockbox-scheduler.service
systemctl status lockbox-scheduler.service
journalctl -u lockbox-scheduler.service -n 50 --no-pager
/opt/lockbox/LockBox.Cli schedule status --state /srv/lockbox/jobs.status.json

systemd.service

Referència de comandaments

ComandamentPropòsitÀlies
helpMostra l'ajuda de la consola.--help, -h, ?
device-idImprimeix l'identificador del dispositiu PC per a l'emissió de llicència.deviceid, machine-id
licenseMostra l'edició actual i el camí de la llicència.license-status, status
activateInstal·la una clau de llicència vinculada al dispositiu.activation
algorithmsLlista els algoritmes i les edicions mínimes.profiles, list-algorithms
keygenGenera claus aleatòries.generate-key, generate-keys
createCrea un contenidor xifrat.encrypt
openExtreu un contenidor xifrat.decrypt, extract
scheduleGestiona i executa tasques programades.scheduler, scheduled-tasks
scriptExecuta un fitxer d'automatització JSON.--script

Opcions de creació

--source, -sCarpeta per empaquetar i xifrar.
--output, -oRuta de sortida .lbx.
--masterContrasenya maestra en línia.
--master-envLlegir la contrasenya maestra de la variable d'entorn.
--master-fileLlegir la contrasenya maestra des d'un fitxer de text UTF-8.
--layerAfegir ALGORITHM=KEY.
--layer-envAfegir ALGORITHM=ENV.
--layer-fileAfegir ALGORITHM=FILE.
--algorithm, -aAlgorisme alternatiu emparellat amb --key, --key-env o --key-file.
--compressHabilitar compressió.
--no-compressDeshabilitar la compressió si s'ha establert abans.
--paddingAfegir farciment aleatori xifrat. Unitats: B, KB, MB, GB, TB.
--padding-bytesMida del farciment en bytes bruts.
--splitDividir la sortida en .lbx, .lbx1, .lbx2.
--split-bytesMida de la part dividida en bytes bruts.
--no-splitDeshabilitar la divisió si s'ha establert abans.
--destruction-passwordContrasenya de destrucció només de màxim en línia. Introduir-la més endavant com a contrasenya maestra sobrescriu immediatament el contenidor.
--destruction-password-envLlegir la contrasenya de destrucció només de màxim des d'una variable d'entorn.
--destruction-password-fileLlegir la contrasenya de destrucció només de màxim des d'un fitxer de text UTF-8.
--delete-sourceEliminar la carpeta d'origen després de la creació manual exitosa.

Opcions d'obertura

--container, -cContenidor .lbx existent.
--output, -oCarpeta d'extracció.
--master, --master-env, --master-fileFont de la contrasenya mestra.
--key, -kClau de capa en línia en l'ordre original.
--key-envClau de capa des de la variable d'entorn.
--key-fileClau de capa des d'un fitxer de text UTF-8.
Permès per fluxos de treball amb contrasenya de destrucció. L'extracció normal falla després de llegir les metadades si falten claus requerides.

Opcions de planificador

schedule addAfegeix una tasca a .lbxjobs xifrat.
schedule listMostra les tasques desades.
schedule runExecuta el treballador de durada llarga.
schedule run-onceExecuta les tasques pendents una vegada i surt.
schedule statusLlegeix l'últim JSON d'estat d'execució.
--tasks, --fileRuta del fitxer de tasca xifrat.
--password, --password-env, --password-fileContrasenya per al fitxer de tasca.
--state, --status-fileRuta del JSON d'estat d'execució.
--nameNom de la tasca per a schedule add.
--frequency, --everyFreqüència de la tasca.
--start, --start-atData/hora d'inici local.
--delete-source-contentsEsborra el contingut de la carpeta d'origen original després d'una execució programada exitosa.
--poll-secondsInterval de sondeig del treballador per a schedule run.

Utilitzeu --language o --lang per triar l’idioma de la consola i --quiet per ocultar el progrés habitual; els errors continuen anant al flux d’error estàndard. Ctrl+C sol·licita la cancel·lació i retorna el codi 1. El codi 2 indica una sintaxi d’ordre no vàlida; el codi 3 indica que una funció de creació no està disponible a l’edició actual. El codi 0 també inclou l’activació intencionada d’una contrasenya de destrucció, de manera que per si sol no demostra que s’hagin extret fitxers. Comproveu la sortida esperada abans dels passos d’automatització següents.

Codis de sortida i supervisió

schedule run-once pot retornar zero amb tasques fallides; schedule status també sense estat. Comproveu savedAt, lastSuccessAt i lastError; [OK] pot significar només Ready. El monitor espera còpies diàries, consultes cada 30 segons i un èxit en 26 hores. Adapteu els llindars. Els estats JSON són numèrics; --quiet amaga la sortida habitual de create/open correctes.

$ErrorActionPreference = 'Stop'
try {
    $status = Get-Content -LiteralPath 'E:\Backups\jobs.status.json' -Raw | ConvertFrom-Json
    if (@($status.tasks).Count -eq 0) { throw 'No tasks in status file' }
    if ([DateTimeOffset]$status.savedAt -lt [DateTimeOffset]::Now.AddMinutes(-2)) {
        throw 'Worker status is stale'
    }
    foreach ($task in $status.tasks) {
        if ($task.state -eq 3 -or $task.lastError) { throw "Task failed: $($task.name)" }
        if (-not $task.lastSuccessAt -or [DateTimeOffset]$task.lastSuccessAt -lt [DateTimeOffset]::Now.AddHours(-26)) {
            throw "No recent successful backup: $($task.name)"
        }
    }
    exit 0
} catch {
    Write-Error $_ -ErrorAction Continue
    exit 1
}
0 -> Ready
1 -> Running
2 -> Completed
3 -> Failed

Resolució de problemes

Per què obtinc el codi de sortida 3?

L'edició actual no permet la funció sol·licitada: massa capes, compressió, farciment de xifrat, divisió, programador o un algoritme més fort.

Per què falla l'extracció amb un error d'etiqueta d'autenticació?

La contrasenya mestra, la clau de la capa, l'ordre de les capes o el fitxer del contenidor són incorrectes. Per a contenidors dividits, també cal verificar que cada part estigui present a la mateixa carpeta.

Per què el programador no s'executa després de tancar la consola?

schedule run és el procés treballador. Mantingueu-lo obert, o executeu-lo des del Programador de tasques de Windows o un envolcall de servei.

Per què la funció de programació afegir falla immediatament?

El programador valida la llicència, la carpeta d'origen, la ruta de sortida, els algoritmes, les contrasenyes i l'espai de disc disponible abans de desar la tasca.

Puc emmagatzemar les contrasenyes del programador dins del fitxer .lbxjobs?

Sí. El fitxer .lbxjobs està xifrat amb la contrasenya del fitxer del programador i emmagatzema tota la metainformació de la tasca, incloses les contrasenyes de xifrat i les claus de les capes.

Què passa si una execució programada se superposa amb l'execució anterior?

L'esdeveniment nou s'omet, la tasca informa d'un estat fallit amb una explicació, i les execucions futures continuen després que l'execució activa finalitzi.

Com evitar secrets en l'historial del shell?

Utilitzeu --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env i --password-file.