Documentación de LockBox CLI
LockBox CLI é a versión de automatización só en inglés para cifrado scriptado, extracción, activación, copias de seguridade cifradas programadas e fluxos de traballo CI/CD. Emprega o mesmo modelo de licenza vinculada ao dispositivo que a aplicación de escritorio.
Inicio rápido
Poñer LockBox.Cli.exe nun cartafol incluído en PATH, ou chámalo polo camiño completo. O --cli marcador é aceptado por compatibilidade pero non é necesario na versión só CLI.
.\LockBox.Cli.exe --help
.\LockBox.Cli.exe device-id
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen --count 3
Fluxo de traballo mínimo para crear e abrir:
$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 usa os mesmos comandos con rutas con barra e un binario sen o sufixo .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_L1Instalar e comprobar a CLI
Extraia o ZIP axeitado ao sistema e procesador. .NET está incluído. Compare o hash con SHA256SUMS.txt. Coloque a CLI na ruta absoluta indicada abaixo e comprobe a axuda e licenza coa conta de copias de seguridade.
Linux tamén precisa dependencias nativas da distribución, como ICU e OpenSSL; o .NET incluído non as fornece. En Windows, a política de execución vixente debe permitir 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.zipCartafoles, rutas e espazo
Adapte as rutas. O cartafol de orixe non pode estar baleiro e o contedor debe quedar fóra. Reutilizar o nome de saída substitúe o contedor anterior e as partes. Reserve espazo temporal xunto ao contedor e unha copia da orixe para tarefas programadas. As unidades baséanse en 1024; o recheo engade 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 ficheiros de segredos
Xere os segredos unha soa vez, garde unha copia protexida e limite o acceso aos ficheiros. Os exemplos rexeitan substituír claves existentes. Os ficheiros UTF-8 conservan espazos e eliminan saltos de liña finais. Conserve as claves orixinais para copias antigas.
$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.txtEstado de activación e licenza
A chave de licenza está vinculada ao ID do dispositivo impreso polo mesmo compilado de CLI. Se se copia unha licenza a outro PC, LockBox rexeítaa e volve ao estado Gratuito.
Windows comproba as ubicacións existentes dos datos da aplicación LockBox. Linux garda a activación en
$XDG_CONFIG_HOME/lockbox/.lockbox.license, logo en
~/.config/lockbox/.lockbox.license, con ~/.lockbox/.lockbox.license
como opción de reserva.
Obter ID do dispositivo
.\LockBox.Cli.exe device-id
Comprobar a edición actual
.\LockBox.Cli.exe license
Activar desde un ficheiro de licenza
.\LockBox.Cli.exe activate --license-file "C:\Licenses\lockbox-license.txt"
Activar desde unha variable de contorno
$env:LBX_LICENSE = "LBX-LIC-..."
.\LockBox.Cli.exe activate --license-env LBX_LICENSE
Activación en liña
A activación en liña funciona, pero pode filtrarse a través do historial do shell ou dos rexistros de procesos.
.\LockBox.Cli.exe activate --license "LBX-LIC-..."
Activación en Linux
export LBX_LICENSE="LBX-LIC-..."
./LockBox.Cli activate --license-env LBX_LICENSE
./LockBox.Cli licenseXestión de segredos
Prefira variables de contorno ou arquivos. Os segredos en liña son útiles só para probas. As contrasinais mestras e as chaves de capa deben preservarse: sen elas o contedor non pode abrirse.
| Propósito | En liña | Variable de contorno | Arquivo |
|---|---|---|---|
| Contrasinal mestra | --master value | --master-env ENV | --master-file path |
| Crear chave de capa | --layer ALG=KEY | --layer-env ALG=ENV | --layer-file ALG=FILE |
| Abrir chave de capa | --key value | --key-env ENV | --key-file path |
| Contrasinal do ficheiro do axendador | --password value | --password-env ENV | --password-file path |
| Contrasinal de destrución do contedor | --destruction-password value | --destruction-password-env ENV | --destruction-password-file path |
| Chave de licenza | --license value | --license-env ENV | --license-file path |
Segredos baseados en ficheiros
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.txtAlgoritmos e xeración de chaves
Usa algorithms para ver todos os perfís soportados e as edicións mínimas.
Usa keygen para chaves de capa.
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen
.\LockBox.Cli.exe keygen --count 9
.\LockBox.Cli.exe generate-keys -n 20
Aliases de comando soportados:
algorithms
list-algorithms
profiles
keygen
generate-key
generate-keysCrear contedores
create comprime unha carpeta de orixe, aplica compresión e recheo opcionais,
, encripta a carga útil a través dunha ou máis capas, e escribe un .lbx contedor.
Opcións requiridas
--sourceou-s: cartafol de orixe.--outputou-o: saída.lbxcamiño.--master,--master-env, ou--master-file.- Polo menos unha capa:
--layer,--layer-env, ou--layer-file.
Contedor AES mínimo
.\LockBox.Cli.exe create `
-s "D:\Data" `
-o "E:\Backups\data.lbx" `
--master-env LBX_MASTER `
--layer-env AES-128-GCM=LBX_L1
Contedor comprimido
.\LockBox.Cli.exe create `
--source "D:\Exports" `
--output "E:\Backups\exports.lbx" `
--master-env LBX_MASTER `
--layer-env AES-256-GCM=LBX_L1 `
--compress
Relleno criptográfico
.\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 contedor en partes
.\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
A primeira parte conserva .lbx. As partes adicionais usan
.lbx1, .lbx2, e así sucesivamente. Mantéñense todas as partes na mesma carpeta.
Exemplo de Max de nove capas
$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
Sintaxe alternativa de algoritmo/clave
.\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 a orixe despois da creación manual exitosa
.\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 a carpeta de orixe só despois de que o contedor sexa creado correctamente. Scheduler ten unha opción diferente: --delete-source-contents.
Contrasinal de destrucción do contedor
A edición máxima pode engadir un contrasinal de destrucción separado a un contedor. Se ese contrasinal se introduce despois como o contrasinal principal, LockBox sobrescribe inmediatamente o contedor sen confirmación. Isto está pensado para escenarios de presión ou coacción. Mantédeo separado do verdadeiro contrasinal principal.
O comando verifica o espazo libre no disco, encripta os datos do contedor orixinal cun segredo aleatorio novo e AES-256-GCM nun ficheiro temporal, normaliza o resultado ao tamaño exacto orixinal, substitúe o ficheiro orixinal e esquece o segredo aleatorio. Para contedores divididos, cada
.lbx, .lbx1, .lbx2 parte na mesma carpeta é substituída mantendo os tamaños orixinais das partes.
Crear cun contrasinal de destrucción
$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 a destrucción sen chaves de capa
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_DESTROY
Activador en Linux
export LBX_DESTROY="pressure-password"
./LockBox.Cli open \
--container "/backup/data.lbx" \
--output "/restore" \
--master-env LBX_DESTROY
Despois dunha destrución exitosa, o contedor xa non é un ficheiro válido de LockBox. A CLI devolve código de saída 0 porque a acción de destruír solicitada completouse con éxito.
Abrir contedores
open extrae un contedor á carpeta de saída. Para a extracción normal, as claves da capa deben pasarse na mesma orde utilizada durante a creación. Para un fluxo de traballo con contrasinal de destrución, só son necesarios o camiño do contedor, o camiño de saída e o contrasinal de destrución como contrasinal principal.
Abrir un contedor dunha capa
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1
Abrir un contedor dividido
.\LockBox.Cli.exe open `
-c "E:\Backups\data.lbx" `
-o "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1
Abrir un contedor de múltiples capas
.\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
Alias
open
decrypt
extractComprobar unha copia restaurándoa
Cree un pequeno report.csv de proba. Extraia nun cartafol novo, que conserva dentro o nome da orixe. Manteña todas as partes xuntas e compare coa orixe sen cambios. A extracción precisa espazo temporal de escritura xunto ao contedor. Protexa tamén os ficheiros restaurados sen cifrar.
$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
Os comandos do programador están dispoñibles na edición Max. Gardan todos os metadatos da tarefa encriptados .lbxjobs ficheiro, incluíndo ruta de orixe, ruta de saída, contrasinais, contrasinal de destrucción, chaves de capa, compresión, recheo, división e configuración de eliminar contidos da fonte.
Os traballos programados execútanse só mentres LockBox.Cli.exe schedule run está en execución.
Use o Programador de tarefas de Windows, systemd de Linux, cron, un envoltorio de servizo ou unha sesión de consola de longa duración se necesita que o traballador se inicie automaticamente despois de reiniciar.
Valores de frecuencia
once
30m
hourly
2h
3h
6h
9h
12h
18h
daily
2d
3d
5d
weekly
2w
monthly
2mo
3mo
6mo
9mo
yearly
Engadir unha tarefa diaria de copia de seguridade cifrada
$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
Engadir unha tarefa que elimina os contidos da carpeta de orixe despois do éxito
.\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
Engadir un arquivo mensual con recheo e partes divididas
.\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
Listar tarefas gardadas
.\LockBox.Cli.exe schedule list `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD
Executar o traballador do 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
Executar tarefas vencidas unha vez e saír
.\LockBox.Cli.exe schedule run-once `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD `
--state "E:\Backups\jobs.status.json"
Amosar o estado de execución máis recente
.\LockBox.Cli.exe schedule status --state "E:\Backups\jobs.status.json"
Os marcadores de estado son [OK], [RUNNING], e [FAILED].
Unha tarefa fallida inclúe a razón e indica ao usuario que contacte co soporte se o problema se repite.
Scripts JSON
Usar --script cando un fluxo de traballo ten varios pasos. O executor de scripts admite
create, open, keygen, algorithms,
device-id, license, e activate.
Crear e abrir nun 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 despois dun paso fallido
{
"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 desde o script
{
"commands": [
{
"command": "activate",
"licenseKeyFile": "C:\\Licenses\\lockbox-license.txt"
},
{ "command": "license" }
]
}Campos JSON e regras de execución
A táboa relaciona campos create e matrices de claves open coas opcións CLI. As rutas relativas parten do directorio de traballo do proceso; non se substitúen variables nin datas. Use unha fonte de segredo por campo. open le keys, despois keyEnvs e keyFiles. Prefira stopOnError: true; con false, un éxito posterior pode ocultar un erro. Os scripts JSON non admiten ordes do programador.
{
"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 | Cartafol para empaquetar e cifrar. |
output / outputContainerPath | --output | Saída .lbx ruta. |
masterPassword | --master | Contrasinal mestre en liña. |
masterPasswordEnv | --master-env | Ler contrasinal mestre da variable de entorno. |
masterPasswordFile | --master-file | Ler contrasinal mestre dun ficheiro de texto UTF-8. |
layers[].algorithm + layers[].key | --layer | Engadir ALGORITHM=KEY. |
layers[].algorithm + layers[].keyEnv | --layer-env | Engadir ALGORITHM=ENV. |
layers[].algorithm + layers[].keyFile | --layer-file | Engadir ALGORITHM=FILE. |
compression / compress | --compress | Activar compresión. |
padding | --padding | Engadir recheo aleatorio cifrado. Unidades: B, KB, MB, GB, TB. |
paddingBytes | --padding-bytes | Tamaño do recheo en bytes sen procesar. |
split / splitSize | --split | Dividir saída en .lbx, .lbx1, .lbx2. |
splitPartSizeBytes | --split-bytes | Tamaño da parte dividida en bytes sen procesar. |
destructionPassword | --destruction-password | Contrasinal de destrución só Max. Introducíndoo máis tarde como contrasinal mestre sobrescribirá o contedor inmediatamente. |
destructionPasswordEnv | --destruction-password-env | Ler o contrasinal de destrución só Max dende unha variable de contorno. |
destructionPasswordFile | --destruction-password-file | Lea o contrasinal de destrución só para Max desde un ficheiro de texto UTF-8. |
deleteSource / deleteSourceFolderAfterSuccess | --delete-source | Eliminar a carpeta de orixe despois da creación manual correcta. |
container / containerPath | --container | Existente .lbx contenedor. |
keys[] | --key | Chave da capa en liña na orde orixinal. |
keyEnvs[] | --key-env | Chave da capa desde a variable de contorno. |
keyFiles[] | --key-file | Chave da capa desde un ficheiro de texto UTF-8. |
Receitas de automatización
Copia de seguridade encriptada da base de datos
$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ón de artefactos de 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
Transferencia segura a socios
.\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
Arquivo a longo prazo
.\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
Exemplo de ficheiro por lotes
@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 varios cartafoles
Garde o script na ruta indicada. Crea un contedor con nome único e un rexistro por orixe, detense ante erros e conserva o código de saída CLI. AES-128-GCM funciona con Free; compresión e división requiren Pro ou 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: copias sen supervisión
Garde o script Bash con finais de liña LF. Prepare CLI e segredos nas rutas indicadas e pase os cartafoles de orixe como argumentos. Cada execución ten un directorio propio. Os erros deixan un rexistro e devolven un código non nulo; as orixes consérvanse.
/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 co sistema operativo
As tarefas executan os scripts anteriores; este uso de create non require Max. O rexistro Windows só funciona co usuario conectado; configure a execución sen sesión no Programador se cómpre. Engada cron ao crontab da conta de copias tras comprobar flock. Ambos os exemplos execútanse ás 02:00 locais e evitan execucións programadas superpostas. Revise permisos e probe manualmente.
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: administrar o programador
Cree a conta de servizo lockbox cos permisos necesarios, active Max para ela e prepare o ficheiro separado de contrasinal UTF-8 jobs.txt. add engade, non actualiza: úseo unha vez por tarefa. Manteña un proceso por ficheiro de tarefas e reinícieo tras cambios. O JSON de estado non restaura o historial: omite repeticións vencidas, unha tarefa once vencida pode repetirse. Para inicios periódicos do sistema use create en vez de run-once repetido. O programador reutiliza o nome de saída.
/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.jsonReferencia de comandos
| Comando | Propósito | Pseudónimos |
|---|---|---|
help | Mostrar axuda da consola. | --help, -h, ? |
device-id | Imprimir ID do dispositivo PC para emisión de licenza. | deviceid, machine-id |
license | Mostrar a edición actual e o camiño da licenza. | license-status, status |
activate | Instalar unha clave de licenza vinculada ao dispositivo. | activation |
algorithms | Listar algoritmos e edicións mínimas. | profiles, list-algorithms |
keygen | Xerar claves aleatorias. | generate-key, generate-keys |
create | Crear contedor cifrado. | encrypt |
open | Extraer contedor cifrado. | decrypt, extract |
schedule | Xestionar e executar tarefas programadas. | scheduler, scheduled-tasks |
script | Executar ficheiro de automatización JSON. | --script |
Crear opcións
--source, -s | Cartafol para empaquetar e cifrar. |
--output, -o | Saída .lbx ruta. |
--master | Contrasinal mestre en liña. |
--master-env | Ler contrasinal mestre da variable de entorno. |
--master-file | Ler contrasinal mestre dun ficheiro de texto UTF-8. |
--layer | Engadir ALGORITHM=KEY. |
--layer-env | Engadir ALGORITHM=ENV. |
--layer-file | Engadir ALGORITHM=FILE. |
--algorithm, -a | Forma alternativa de algoritmo emparellada con --key, --key-env, ou --key-file. |
--compress | Activar compresión. |
--no-compress | Desactivar compresión se se estableceu antes. |
--padding | Engadir recheo aleatorio cifrado. Unidades: B, KB, MB, GB, TB. |
--padding-bytes | Tamaño do recheo en bytes sen procesar. |
--split | Dividir saída en .lbx, .lbx1, .lbx2. |
--split-bytes | Tamaño da parte dividida en bytes sen procesar. |
--no-split | Desactivar división se se estableceu antes. |
--destruction-password | Contrasinal de destrución só Max. Introducíndoo máis tarde como contrasinal mestre sobrescribirá o contedor inmediatamente. |
--destruction-password-env | Ler o contrasinal de destrución só Max dende unha variable de contorno. |
--destruction-password-file | Lea o contrasinal de destrución só para Max desde un ficheiro de texto UTF-8. |
--delete-source | Eliminar a carpeta de orixe despois da creación manual correcta. |
Abrir opcións
--container, -c | Existente .lbx contenedor. |
--output, -o | Cartafol de extracción. |
--master, --master-env, --master-file | Fonte do contrasinal mestre. |
--key, -k | Chave da capa en liña na orde orixinal. |
--key-env | Chave da capa desde a variable de contorno. |
--key-file | Chave da capa desde un ficheiro de texto UTF-8. |
— | Permitido para fluxos de traballo con contrasinal de destrución. A extracción normal falla despois de ler os metadatos se faltan claves necesarias. |
Opcións do programador
schedule add | Engadir unha tarefa a cifrada .lbxjobs. |
schedule list | Mostrar tarefas gardadas. |
schedule run | Executar traballador de longa duración. |
schedule run-once | Executar tarefas vencidas unha vez e saír. |
schedule status | Ler o arquivo JSON de estado de execución máis recente. |
--tasks, --file | Camiño cifrado do arquivo de tarefa. |
--password, --password-env, --password-file | Contrasinal para o arquivo de tarefa. |
--state, --status-file | Camiño do JSON de estado de execución. |
--name | Nome da tarefa para schedule add. |
--frequency, --every | Frecuencia da tarefa. |
--start, --start-at | Data/hora de inicio local. |
--delete-source-contents | Eliminar contidos da carpeta de orixe orixinal despois dunha execución programada exitosa. |
--poll-seconds | Intervalo de sondeo do traballador para schedule run. |
Use --language ou --lang para escoller o idioma da consola e --quiet para ocultar o progreso habitual; os erros seguen saíndo polo fluxo de erro estándar. Ctrl+C solicita a cancelación e devolve o código 1. O código 2 indica unha sintaxe de orde non válida; o código 3 indica que unha función de creación non está dispoñible na edición actual. O código 0 tamén inclúe a activación intencionada dun contrasinal de destrución, polo que por si só non demostra que se extraesen ficheiros. Comprobe a saída esperada antes dos seguintes pasos de automatización.
Códigos de saída e supervisión
schedule run-once pode devolver cero con tarefas fallidas; schedule status tamén sen estado. Comprobe savedAt, lastSuccessAt e lastError; [OK] pode significar só Ready. O monitor espera copias diarias, consultas cada 30 segundos e un éxito en 26 horas. Adapte os limiares. Os estados JSON son numéricos; --quiet oculta a saída habitual de create/open correctos.
$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ón de problemas
Por que recibo o código de saída 3?
A edición actual non permite a función solicitada: demasiadas capas, compresión, acolchado criptográfico, división, programador ou un algoritmo máis potente.
Por que a extracción falla cun erro de etiqueta de autenticación?
O contrasinal mestre, a chave da capa, a orde das capas ou o ficheiro do contedor son incorrectos. Para contedores divididos, tamén comproba que cada parte estea presente na mesma carpeta.
Por que o programador non se executa despois de pechar a consola?
schedule run é o proceso de traballo. Mantéñeo aberto ou lánzao desde o Programador de tarefas de Windows ou un envoltorio de servizo.
Por que engadir ao programa falla inmediatamente?
O programador valida a licenza, a carpeta de orixe, a ruta de saída, os algoritmos, os contrasinais e o espazo en disco dispoñible antes de gardar a tarefa.
¿Podo almacenar os contrasinais do programador dentro do arquivo .lbxjobs?
Si. O arquivo .lbxjobs está encriptado co contrasinal do arquivo do programador e garda todos os metadatos da tarefa, incluíndo contrasinais de encriptación e chaves de capa.
Que pasa se unha execución programada se solapa coa execución anterior?
O novo evento é ignorado, a tarefa informa un estado de fallo cunha explicación, e as execucións futuras continúan despois de que termine a execución activa.
Como evito segredos no historial do shell?
Usa --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env, e --password-file.