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_L1Instal·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 SHA256uname -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.zipWindows 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.zipCarpetes, 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.txtPreparar 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.txtActivació 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 licenseGestió 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òsit | Incrustat | Entorn | Fitxer |
|---|---|---|---|
| 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.txtAlgorismes 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-keysCrear 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
--sourceo-s: carpeta de l'origen.--outputo-o: ruta de sortida de.lbx.--master,--master-envo--master-file.- Almenys una capa:
--layer,--layer-envo--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
extractVerificar 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 $restoreset -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.jsonsource / sourceFolder / sourceFolderPath | --source | Carpeta per empaquetar i xifrar. |
output / outputContainerPath | --output | Ruta de sortida .lbx. |
masterPassword | --master | Contrasenya maestra en línia. |
masterPasswordEnv | --master-env | Llegir la contrasenya maestra de la variable d'entorn. |
masterPasswordFile | --master-file | Llegir la contrasenya maestra des d'un fitxer de text UTF-8. |
layers[].algorithm + layers[].key | --layer | Afegir ALGORITHM=KEY. |
layers[].algorithm + layers[].keyEnv | --layer-env | Afegir ALGORITHM=ENV. |
layers[].algorithm + layers[].keyFile | --layer-file | Afegir ALGORITHM=FILE. |
compression / compress | --compress | Habilitar compressió. |
padding | --padding | Afegir farciment aleatori xifrat. Unitats: B, KB, MB, GB, TB. |
paddingBytes | --padding-bytes | Mida del farciment en bytes bruts. |
split / splitSize | --split | Dividir la sortida en .lbx, .lbx1, .lbx2. |
splitPartSizeBytes | --split-bytes | Mida de la part dividida en bytes bruts. |
destructionPassword | --destruction-password | Contrasenya 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-env | Llegir la contrasenya de destrucció només de màxim des d'una variable d'entorn. |
destructionPasswordFile | --destruction-password-file | Llegir la contrasenya de destrucció només de màxim des d'un fitxer de text UTF-8. |
deleteSource / deleteSourceFolderAfterSuccess | --delete-source | Eliminar la carpeta d'origen després de la creació manual exitosa. |
container / containerPath | --container | Contenidor .lbx existent. |
keys[] | --key | Clau de capa en línia en l'ordre original. |
keyEnvs[] | --key-env | Clau de capa des de la variable d'entorn. |
keyFiles[] | --key-file | Clau 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 OKWindows: 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
$LASTEXITCODELinux: 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/reportsProgramar 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 -e0 2 * * * /usr/bin/flock -n /srv/lockbox/backup.lock /bin/bash /srv/lockbox/backup.sh >> /srv/lockbox/cron.log 2>&1Max: 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.targetsudo 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.jsonReferència de comandaments
| Comandament | Propòsit | Àlies |
|---|---|---|
help | Mostra l'ajuda de la consola. | --help, -h, ? |
device-id | Imprimeix l'identificador del dispositiu PC per a l'emissió de llicència. | deviceid, machine-id |
license | Mostra l'edició actual i el camí de la llicència. | license-status, status |
activate | Instal·la una clau de llicència vinculada al dispositiu. | activation |
algorithms | Llista els algoritmes i les edicions mínimes. | profiles, list-algorithms |
keygen | Genera claus aleatòries. | generate-key, generate-keys |
create | Crea un contenidor xifrat. | encrypt |
open | Extreu un contenidor xifrat. | decrypt, extract |
schedule | Gestiona i executa tasques programades. | scheduler, scheduled-tasks |
script | Executa un fitxer d'automatització JSON. | --script |
Opcions de creació
--source, -s | Carpeta per empaquetar i xifrar. |
--output, -o | Ruta de sortida .lbx. |
--master | Contrasenya maestra en línia. |
--master-env | Llegir la contrasenya maestra de la variable d'entorn. |
--master-file | Llegir la contrasenya maestra des d'un fitxer de text UTF-8. |
--layer | Afegir ALGORITHM=KEY. |
--layer-env | Afegir ALGORITHM=ENV. |
--layer-file | Afegir ALGORITHM=FILE. |
--algorithm, -a | Algorisme alternatiu emparellat amb --key, --key-env o --key-file. |
--compress | Habilitar compressió. |
--no-compress | Deshabilitar la compressió si s'ha establert abans. |
--padding | Afegir farciment aleatori xifrat. Unitats: B, KB, MB, GB, TB. |
--padding-bytes | Mida del farciment en bytes bruts. |
--split | Dividir la sortida en .lbx, .lbx1, .lbx2. |
--split-bytes | Mida de la part dividida en bytes bruts. |
--no-split | Deshabilitar la divisió si s'ha establert abans. |
--destruction-password | Contrasenya 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-env | Llegir la contrasenya de destrucció només de màxim des d'una variable d'entorn. |
--destruction-password-file | Llegir la contrasenya de destrucció només de màxim des d'un fitxer de text UTF-8. |
--delete-source | Eliminar la carpeta d'origen després de la creació manual exitosa. |
Opcions d'obertura
--container, -c | Contenidor .lbx existent. |
--output, -o | Carpeta d'extracció. |
--master, --master-env, --master-file | Font de la contrasenya mestra. |
--key, -k | Clau de capa en línia en l'ordre original. |
--key-env | Clau de capa des de la variable d'entorn. |
--key-file | Clau 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 add | Afegeix una tasca a .lbxjobs xifrat. |
schedule list | Mostra les tasques desades. |
schedule run | Executa el treballador de durada llarga. |
schedule run-once | Executa les tasques pendents una vegada i surt. |
schedule status | Llegeix l'últim JSON d'estat d'execució. |
--tasks, --file | Ruta del fitxer de tasca xifrat. |
--password, --password-env, --password-file | Contrasenya per al fitxer de tasca. |
--state, --status-file | Ruta del JSON d'estat d'execució. |
--name | Nom de la tasca per a schedule add. |
--frequency, --every | Freqüència de la tasca. |
--start, --start-at | Data/hora d'inici local. |
--delete-source-contents | Esborra el contingut de la carpeta d'origen original després d'una execució programada exitosa. |
--poll-seconds | Interval 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 -> FailedResolució 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.