De volta a LockBox

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_L1

Instalar 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 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

Cartafoles, 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.txt

Preparar 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.txt

Estado 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 license

Xestió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ósitoEn liñaVariable de contornoArquivo
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.txt

Algoritmos 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-keys

Crear 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

  • --source ou -s: cartafol de orixe.
  • --output ou -o: saída .lbx camiñ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
extract

Comprobar 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 $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

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.json
source / sourceFolder / sourceFolderPath--sourceCartafol para empaquetar e cifrar.
output / outputContainerPath--outputSaída .lbx ruta.
masterPassword--masterContrasinal mestre en liña.
masterPasswordEnv--master-envLer contrasinal mestre da variable de entorno.
masterPasswordFile--master-fileLer contrasinal mestre dun ficheiro de texto UTF-8.
layers[].algorithm + layers[].key--layerEngadir ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envEngadir ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileEngadir ALGORITHM=FILE.
compression / compress--compressActivar compresión.
padding--paddingEngadir recheo aleatorio cifrado. Unidades: B, KB, MB, GB, TB.
paddingBytes--padding-bytesTamaño do recheo en bytes sen procesar.
split / splitSize--splitDividir saída en .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesTamaño da parte dividida en bytes sen procesar.
destructionPassword--destruction-passwordContrasinal de destrución só Max. Introducíndoo máis tarde como contrasinal mestre sobrescribirá o contedor inmediatamente.
destructionPasswordEnv--destruction-password-envLer o contrasinal de destrución só Max dende unha variable de contorno.
destructionPasswordFile--destruction-password-fileLea o contrasinal de destrución só para Max desde un ficheiro de texto UTF-8.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceEliminar a carpeta de orixe despois da creación manual correcta.
container / containerPath--containerExistente .lbx contenedor.
keys[]--keyChave da capa en liña na orde orixinal.
keyEnvs[]--key-envChave da capa desde a variable de contorno.
keyFiles[]--key-fileChave 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 OK

Windows: 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
$LASTEXITCODE

Linux: 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/reports

Programar 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 -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: 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.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

Referencia de comandos

ComandoPropósitoPseudónimos
helpMostrar axuda da consola.--help, -h, ?
device-idImprimir ID do dispositivo PC para emisión de licenza.deviceid, machine-id
licenseMostrar a edición actual e o camiño da licenza.license-status, status
activateInstalar unha clave de licenza vinculada ao dispositivo.activation
algorithmsListar algoritmos e edicións mínimas.profiles, list-algorithms
keygenXerar claves aleatorias.generate-key, generate-keys
createCrear contedor cifrado.encrypt
openExtraer contedor cifrado.decrypt, extract
scheduleXestionar e executar tarefas programadas.scheduler, scheduled-tasks
scriptExecutar ficheiro de automatización JSON.--script

Crear opcións

--source, -sCartafol para empaquetar e cifrar.
--output, -oSaída .lbx ruta.
--masterContrasinal mestre en liña.
--master-envLer contrasinal mestre da variable de entorno.
--master-fileLer contrasinal mestre dun ficheiro de texto UTF-8.
--layerEngadir ALGORITHM=KEY.
--layer-envEngadir ALGORITHM=ENV.
--layer-fileEngadir ALGORITHM=FILE.
--algorithm, -aForma alternativa de algoritmo emparellada con --key, --key-env, ou --key-file.
--compressActivar compresión.
--no-compressDesactivar compresión se se estableceu antes.
--paddingEngadir recheo aleatorio cifrado. Unidades: B, KB, MB, GB, TB.
--padding-bytesTamaño do recheo en bytes sen procesar.
--splitDividir saída en .lbx, .lbx1, .lbx2.
--split-bytesTamaño da parte dividida en bytes sen procesar.
--no-splitDesactivar división se se estableceu antes.
--destruction-passwordContrasinal de destrución só Max. Introducíndoo máis tarde como contrasinal mestre sobrescribirá o contedor inmediatamente.
--destruction-password-envLer o contrasinal de destrución só Max dende unha variable de contorno.
--destruction-password-fileLea o contrasinal de destrución só para Max desde un ficheiro de texto UTF-8.
--delete-sourceEliminar a carpeta de orixe despois da creación manual correcta.

Abrir opcións

--container, -cExistente .lbx contenedor.
--output, -oCartafol de extracción.
--master, --master-env, --master-fileFonte do contrasinal mestre.
--key, -kChave da capa en liña na orde orixinal.
--key-envChave da capa desde a variable de contorno.
--key-fileChave 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 addEngadir unha tarefa a cifrada .lbxjobs.
schedule listMostrar tarefas gardadas.
schedule runExecutar traballador de longa duración.
schedule run-onceExecutar tarefas vencidas unha vez e saír.
schedule statusLer o arquivo JSON de estado de execución máis recente.
--tasks, --fileCamiño cifrado do arquivo de tarefa.
--password, --password-env, --password-fileContrasinal para o arquivo de tarefa.
--state, --status-fileCamiño do JSON de estado de execución.
--nameNome da tarefa para schedule add.
--frequency, --everyFrecuencia da tarefa.
--start, --start-atData/hora de inicio local.
--delete-source-contentsEliminar contidos da carpeta de orixe orixinal despois dunha execución programada exitosa.
--poll-secondsIntervalo 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 -> Failed

Resolució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.