Documentação LockBox CLI
O LockBox CLI é a versão de automação apenas em inglês para criptografia scriptada, extração, ativação, backups criptografados agendados e fluxos de trabalho CI/CD. Ele utiliza o mesmo modelo de licença vinculada ao dispositivo do aplicativo desktop.
Início rápido
Coloque LockBox.Cli.exe em uma pasta incluída em PATH,
ou chame-o pelo caminho completo. O marcador --cli é aceito por compatibilidade
mas não é necessário na versão apenas CLI.
.\LockBox.Cli.exe --help
.\LockBox.Cli.exe device-id
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen --count 3
Fluxo de trabalho mínimo para criar 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
O Linux usa os mesmos comandos com caminhos com barra e um binário sem 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 verificar a CLI
Extraia o ZIP adequado ao sistema e processador. O .NET está incluído. Compare o hash com SHA256SUMS.txt. Coloque a CLI no caminho absoluto indicado abaixo e verifique a ajuda e licença com a conta de cópias de segurança.
Linux também exige dependências nativas da distribuição, incluindo ICU e OpenSSL; o .NET incluído não as fornece. No Windows, a política de execução em vigor deve 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.zipPastas, caminhos e espaço
Adapte os caminhos. A pasta de origem não pode estar vazia e o contentor deve ficar fora dela. Reutilizar o nome substitui o contentor e as suas partes. Reserve espaço temporário junto do contentor e uma cópia da origem para tarefas agendadas. As unidades baseiam-se em 1024; o preenchimento acrescenta 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
Gere os segredos uma única vez, guarde uma cópia protegida e restrinja o acesso aos ficheiros. Os exemplos impedem a substituição de chaves existentes. Os ficheiros UTF-8 preservam espaços e removem quebras de linha finais. Guarde as chaves originais para abrir cópias 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.txtAtivação e status da licença
A chave de licença está vinculada à ID do dispositivo impressa pela mesma versão CLI. Se uma licença for copiada para outro PC, o LockBox a rejeita e reverte para Free.
O Windows verifica os locais existentes de dados da aplicação LockBox. O Linux armazena a ativação em
$XDG_CONFIG_HOME/lockbox/.lockbox.license, depois
~/.config/lockbox/.lockbox.license, usando ~/.lockbox/.lockbox.license
como reserva.
Obter ID do dispositivo
.\LockBox.Cli.exe device-id
Verificar edição atual
.\LockBox.Cli.exe license
Ativar a partir de um arquivo de licença
.\LockBox.Cli.exe activate --license-file "C:\Licenses\lockbox-license.txt"
Ativar a partir de uma variável de ambiente
$env:LBX_LICENSE = "LBX-LIC-..."
.\LockBox.Cli.exe activate --license-env LBX_LICENSE
Ativação inline
A ativação inline funciona, mas pode vazar através do histórico do shell ou logs de processo.
.\LockBox.Cli.exe activate --license "LBX-LIC-..."
Ativação no Linux
export LBX_LICENSE="LBX-LIC-..."
./LockBox.Cli activate --license-env LBX_LICENSE
./LockBox.Cli licenseManipulação de segredos
Prefira variáveis de ambiente ou arquivos. Segredos embutidos são úteis apenas para testes. Senhas mestres e chaves de camada devem ser preservadas: sem elas, o contêiner não pode ser aberto.
| Propósito | Em linha | Ambiente | Arquivo |
|---|---|---|---|
| Senha mestre | --master value | --master-env ENV | --master-file path |
| Criar chave de camada | --layer ALG=KEY | --layer-env ALG=ENV | --layer-file ALG=FILE |
| Abrir chave de camada | --key value | --key-env ENV | --key-file path |
| Senha do arquivo do agendador | --password value | --password-env ENV | --password-file path |
| Senha de destruição do contêiner | --destruction-password value | --destruction-password-env ENV | --destruction-password-file path |
| Chave de licença | --license value | --license-env ENV | --license-file path |
Segredos baseados em arquivo
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 geração de chaves
Use algorithms para ver todos os perfis suportados e edições mínimas.
Use keygen para chaves de camada.
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen
.\LockBox.Cli.exe keygen --count 9
.\LockBox.Cli.exe generate-keys -n 20
Aliases de comandos suportados:
algorithms
list-algorithms
profiles
keygen
generate-key
generate-keysCriar contêineres
create empacota uma pasta de origem, aplica compressão e preenchimento opcionais,
criptografa o payload através de uma ou mais camadas e escreve um contêiner .lbx.
Opções obrigatórias
--sourceou-s: pasta de origem.--outputou-o: caminho de saída.lbx.--master,--master-envou--master-file.- Pelo menos uma camada:
--layer,--layer-envou--layer-file.
Contêiner 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
Contêiner 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
Preenchimento 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 contêiner em 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 mantém .lbx. Partes adicionais usam
.lbx1, .lbx2 e assim por diante. Mantenha todas as partes na mesma pasta.
Exemplo Max com nove camadas
$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/chave
.\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
Excluir origem após criação manual bem-sucedida
.\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 exclui a pasta de origem apenas após o contêiner ser criado com sucesso.
O agendador tem uma opção diferente: --delete-source-contents.
Senha de destruição do contêiner
O Max edition pode adicionar uma senha de destruição separada a um contêiner. Se essa senha for inserida posteriormente como a senha mestre, o LockBox sobrescreve imediatamente o contêiner sem confirmação. Isto é destinado a cenários de pressão coercitiva. Mantenha-a separada da senha mestre real.
O comando verifica o espaço livre no disco, criptografa os dados originais do contêiner com um segredo aleatório novo e AES-256-GCM em um arquivo temporário, normaliza o resultado para o tamanho exato original, substitui o arquivo original e esquece o segredo aleatório. Para contêineres divididos, cada parte .lbx, .lbx1, .lbx2 na mesma pasta é substituída, preservando os tamanhos originais das partes.
Criar com uma senha de destruição
$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_DESTROYAcionar destruição sem chaves de camada
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_DESTROYAcionamento no Linux
export LBX_DESTROY="pressure-password"
./LockBox.Cli open \
--container "/backup/data.lbx" \
--output "/restore" \
--master-env LBX_DESTROYApós a destruição bem-sucedida, o contêiner não é mais um arquivo válido do LockBox. O CLI retorna o código de saída 0 porque a ação de destruição solicitada foi concluída com sucesso.
Abrir contêineres
open extrai um contêiner para a pasta de saída. Para a extração normal, as chaves de camada devem ser fornecidas na mesma ordem usada durante a criação. Para um fluxo de trabalho com senha de destruição, apenas o caminho do contêiner, o caminho de saída e a senha de destruição como senha mestre são necessários.
Abrir um contêiner de uma camada
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1Abrir um contêiner dividido
.\LockBox.Cli.exe open `
-c "E:\Backups\data.lbx" `
-o "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1Abrir um contêiner de múltiplas camadas
.\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_L9Apelidos
open
decrypt
extractVerificar uma cópia por restauro
Crie um pequeno report.csv para testar. Extraia para uma pasta nova, que preserva dentro dela o nome da pasta de origem. Mantenha todas as partes juntas e compare com a origem inalterada. A extração exige espaço temporário gravável junto do contentor. Proteja também os ficheiros restaurados sem cifragem.
$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"Agendador
Os comandos do agendador estão disponíveis na edição Max. Eles armazenam todos os metadados da tarefa
em um arquivo .lbxjobs criptografado, incluindo o caminho da origem, caminho de saída,
senhas, senha de destruição, chaves de camada, compressão, preenchimento, divisão e a configuração de
excluir-conteúdos-da-origem.
Os trabalhos agendados são executados apenas enquanto LockBox.Cli.exe schedule run estiver em execução.
Use o Agendador de Tarefas do Windows, systemd do Linux, cron, um wrapper de serviço ou uma sessão de console de longa duração
se você precisar que o trabalhador inicie automaticamente após a reinicialização.
Valores de frequência
once
30m
hourly
2h
3h
6h
9h
12h
18h
daily
2d
3d
5d
weekly
2w
monthly
2mo
3mo
6mo
9mo
yearly
Adicionar uma tarefa diária de backup criptografado
$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
Adicionar uma tarefa que exclui o conteúdo da pasta de origem após o sucesso
.\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
Adicionar um arquivo mensal com preenchimento 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 salvas
.\LockBox.Cli.exe schedule list `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD
Executar o trabalhador do agendador
.\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 pendentes uma vez e sair
.\LockBox.Cli.exe schedule run-once `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD `
--state "E:\Backups\jobs.status.json"
Mostrar o status de execução mais recente
.\LockBox.Cli.exe schedule status --state "E:\Backups\jobs.status.json"
Os marcadores de status são [OK], [RUNNING] e [FAILED].
Uma tarefa que falhou inclui o motivo e avisa ao usuário para entrar em contato com o suporte se o problema se repetir.
Scripts JSON
Use --script quando um fluxo de trabalho tiver várias etapas. O executor de scripts oferece suporte a
create, open, keygen, algorithms,
device-id, license e activate.
Criar e abrir em um único 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 após uma etapa com falha
{
"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" }
]
}
]
}
Ativar a partir do script
{
"commands": [
{
"command": "activate",
"licenseKeyFile": "C:\\Licenses\\lockbox-license.txt"
},
{ "command": "license" }
]
}Campos JSON e regras de execução
A tabela associa campos create e listas de chaves open às opções CLI. Caminhos relativos partem do diretório de trabalho do processo; variáveis e datas não são substituídas. Use uma origem de segredo por campo. open lê keys, depois keyEnvs e keyFiles. Prefira stopOnError: true; com false, um sucesso posterior pode ocultar uma falha. Scripts JSON não suportam comandos do agendador.
{
"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 | Pasta a ser empacotada e criptografada. |
output / outputContainerPath | --output | Caminho de saída .lbx. |
masterPassword | --master | Senha mestra inline. |
masterPasswordEnv | --master-env | Ler senha mestra de variável de ambiente. |
masterPasswordFile | --master-file | Ler senha mestra de arquivo de texto UTF-8. |
layers[].algorithm + layers[].key | --layer | Adicionar ALGORITHM=KEY. |
layers[].algorithm + layers[].keyEnv | --layer-env | Adicionar ALGORITHM=ENV. |
layers[].algorithm + layers[].keyFile | --layer-file | Adicionar ALGORITHM=FILE. |
compression / compress | --compress | Habilitar compressão. |
padding | --padding | Adicionar preenchimento aleatório criptografado. Unidades: B, KB, MB, GB, TB. |
paddingBytes | --padding-bytes | Tamanho do preenchimento em bytes brutos. |
split / splitSize | --split | Dividir saída em .lbx, .lbx1, .lbx2. |
splitPartSizeBytes | --split-bytes | Tamanho de cada parte em bytes brutos. |
destructionPassword | --destruction-password | Senha de destruição inline somente para Max. Inserir esta senha depois como senha mestra sobrescreve o container imediatamente. |
destructionPasswordEnv | --destruction-password-env | Ler a senha de destruição somente para Max a partir de uma variável de ambiente. |
destructionPasswordFile | --destruction-password-file | Ler a senha de destruição somente para Max a partir de um arquivo de texto UTF-8. |
deleteSource / deleteSourceFolderAfterSuccess | --delete-source | Excluir a pasta de origem após a criação manual bem-sucedida. |
container / containerPath | --container | Contêiner .lbx existente. |
keys[] | --key | Chave de camada inline na ordem original. |
keyEnvs[] | --key-env | Chave de camada a partir de variável de ambiente. |
keyFiles[] | --key-file | Chave de camada a partir de arquivo de texto UTF-8. |
Receitas de automação
Backup de dump de banco de dados criptografado
$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
Proteção de artefatos 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 para parceiros
.\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 de 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 arquivo em lote
@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 várias pastas
Guarde o script no caminho indicado. Cria um contentor com nome único e um registo por origem, para perante erros e preserva o código de saída CLI. AES-128-GCM funciona com Free; compressão e divisão exigem 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: cópias sem intervenção
Guarde o script Bash com finais de linha LF. Prepare a CLI e os segredos nos caminhos indicados e passe as pastas de origem como argumentos. Cada execução recebe um diretório próprio. Os erros deixam um registo e devolvem um código diferente de zero; as origens mantêm-se.
/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/reportsAgendar através do sistema operativo
Estas tarefas executam os scripts anteriores; este uso de create não exige Max. O registo Windows requer uma sessão iniciada; configure a execução sem sessão no Agendador, se necessário. Acrescente cron ao crontab do utilizador das cópias após verificar flock. Ambos os exemplos executam às 02:00 locais e evitam execuções agendadas sobrepostas. Verifique permissões e teste 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: gerir o agendador
Crie a conta de serviço lockbox com as permissões necessárias, ative Max para essa conta e prepare o ficheiro UTF-8 separado jobs.txt com a palavra-passe. add acrescenta, não atualiza: use uma vez por tarefa. Mantenha um processo por ficheiro de tarefas e reinicie após alterações. O JSON de estado não repõe o histórico: ocorrências periódicas vencidas são ignoradas, uma tarefa once vencida pode repetir-se. Para arranques periódicos do sistema use create em vez de repetir run-once. O agendador 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.jsonReferência de comandos
| Comando | Propósito | Apelidos |
|---|---|---|
help | Mostrar ajuda do console. | --help, -h, ? |
device-id | Exibir ID do dispositivo PC para emissão de licença. | deviceid, machine-id |
license | Mostrar edição atual e caminho da licença. | license-status, status |
activate | Instalar uma chave de licença vinculada ao dispositivo. | activation |
algorithms | Listar algoritmos e edições mínimas. | profiles, list-algorithms |
keygen | Gerar chaves aleatórias. | generate-key, generate-keys |
create | Criar contêiner criptografado. | encrypt |
open | Extrair contêiner criptografado. | decrypt, extract |
schedule | Gerenciar e executar tarefas agendadas. | scheduler, scheduled-tasks |
script | Executar arquivo de automação JSON. | --script |
Criar opções
--source, -s | Pasta a ser empacotada e criptografada. |
--output, -o | Caminho de saída .lbx. |
--master | Senha mestra inline. |
--master-env | Ler senha mestra de variável de ambiente. |
--master-file | Ler senha mestra de arquivo de texto UTF-8. |
--layer | Adicionar ALGORITHM=KEY. |
--layer-env | Adicionar ALGORITHM=ENV. |
--layer-file | Adicionar ALGORITHM=FILE. |
--algorithm, -a | Forma de algoritmo alternativa emparelhada com --key, --key-env ou --key-file. |
--compress | Habilitar compressão. |
--no-compress | Desabilitar compressão se configurada anteriormente. |
--padding | Adicionar preenchimento aleatório criptografado. Unidades: B, KB, MB, GB, TB. |
--padding-bytes | Tamanho do preenchimento em bytes brutos. |
--split | Dividir saída em .lbx, .lbx1, .lbx2. |
--split-bytes | Tamanho de cada parte em bytes brutos. |
--no-split | Desabilitar divisão se configurada anteriormente. |
--destruction-password | Senha de destruição inline somente para Max. Inserir esta senha depois como senha mestra sobrescreve o container imediatamente. |
--destruction-password-env | Ler a senha de destruição somente para Max a partir de uma variável de ambiente. |
--destruction-password-file | Ler a senha de destruição somente para Max a partir de um arquivo de texto UTF-8. |
--delete-source | Excluir a pasta de origem após a criação manual bem-sucedida. |
Opções de abertura
--container, -c | Contêiner .lbx existente. |
--output, -o | Pasta de extração. |
--master, --master-env, --master-file | Fonte da senha mestre. |
--key, -k | Chave de camada inline na ordem original. |
--key-env | Chave de camada a partir de variável de ambiente. |
--key-file | Chave de camada a partir de arquivo de texto UTF-8. |
— | Permitido para fluxos de trabalho de senha de destruição. A extração normal falha após a leitura dos metadados se as chaves necessárias estiverem ausentes. |
Opções do agendador
schedule add | Adicionar uma tarefa ao .lbxjobs criptografado. |
schedule list | Mostrar tarefas salvas. |
schedule run | Executar trabalhador de longa duração. |
schedule run-once | Executar tarefas devidas uma vez e sair. |
schedule status | Ler o JSON de status de tempo de execução mais recente. |
--tasks, --file | Caminho do arquivo de tarefa criptografado. |
--password, --password-env, --password-file | Senha para o arquivo de tarefa. |
--state, --status-file | Caminho do JSON de status de tempo de execução. |
--name | Nome da tarefa para schedule add. |
--frequency, --every | Frequência da tarefa. |
--start, --start-at | Data/hora de início local. |
--delete-source-contents | Excluir o conteúdo da pasta de origem original após execução agendada bem-sucedida. |
--poll-seconds | Intervalo de polling do trabalhador para schedule run. |
Use --language ou --lang para escolher o idioma da console e --quiet para ocultar o progresso habitual; os erros continuam na saída de erro padrão. Ctrl+C solicita cancelamento e retorna 1. O código 2 indica sintaxe inválida e 3 indica uma função de criação indisponível na edição atual. O código 0 também é retornado ao acionar intencionalmente a senha de destruição, portanto não comprova sozinho a extração de arquivos. Verifique o resultado esperado antes dos próximos passos de automação.
Códigos de saída e monitorização
schedule run-once pode devolver zero com tarefas falhadas; schedule status também sem estado. Verifique savedAt, lastSuccessAt e lastError; [OK] pode significar apenas Ready. Este monitor espera cópias diárias, consultas a cada 30 segundos e um sucesso nas últimas 26 horas. Ajuste os limites. Os estados JSON são numéricos; --quiet suprime a saída habitual de create/open bem-sucedidos.
$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 -> FailedResolução de Problemas
Por que recebo o código de saída 3?
A edição atual não permite o recurso solicitado: muitas camadas, compressão, preenchimento criptográfico, divisão, agendador ou um algoritmo mais forte.
Por que a extração falha com um erro de tag de autenticação?
A senha mestre, a chave da camada, a ordem da camada ou o arquivo do contêiner está incorreto. Para contêineres divididos, verifique também se todas as partes estão presentes na mesma pasta.
Por que o agendador não é executado depois que fecho o console?
schedule run é o processo worker. Mantenha-o aberto ou inicie-o pelo Agendador de Tarefas do Windows ou por um wrapper de serviço.
Por que o comando schedule add falha imediatamente?
O agendador valida licença, pasta de origem, caminho de saída, algoritmos, senhas e espaço em disco disponível antes de salvar a tarefa.
Posso armazenar senhas do agendador dentro do arquivo .lbxjobs?
Sim. O arquivo .lbxjobs é criptografado com a senha do arquivo do agendador e armazena os metadados completos da tarefa, incluindo senhas de criptografia e chaves de camada.
O que acontece se uma execução agendada se sobrepõe à execução anterior?
O novo evento é ignorado, a tarefa reporta um status falho com uma explicação, e execuções futuras continuam após a conclusão da execução ativa.
Como evitar que segredos fiquem no histórico do shell?
Use --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env e --password-file.