Terug naar LockBox

LockBox CLI-documentatie

LockBox CLI is de Engelstalige automatiseringsversie voor gescripte codering, extractie, activatie, geplande versleutelde back-ups en CI/CD-workflows. Het gebruikt hetzelfde apparaatgebonden licentiemodel als de desktopapp.

Snel aan de slag

Plaats LockBox.Cli.exe in een map die is opgenomen in PATH, of roep het aan via het volledige pad. De --cli marker wordt geaccepteerd voor compatibiliteit maar is niet vereist in de alleen-CLI build.

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

Minimale workflow voor aanmaken en openen:

$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 gebruikt dezelfde opdrachten met schuine-streep paden en een binaire zonder het .exe achtervoegsel:

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

CLI installeren en controleren

Pak het ZIP-bestand voor uw besturingssysteem en processor uit. .NET is inbegrepen. Vergelijk de hash met SHA256SUMS.txt. Plaats de CLI op het hieronder vermelde absolute pad en controleer hulp en licentie onder het back-upaccount.

Linux heeft ook native distributiebibliotheken nodig, waaronder ICU en OpenSSL; het meegeleverde .NET bevat die niet. In Windows moet het geldende uitvoeringsbeleid PowerShell-scripts toestaan.

.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

Mappen, paden en opslagruimte

Pas de paden aan. De bronmap mag niet leeg zijn en de container moet erbuiten staan. Dezelfde uitvoernaam vervangt de vorige container en delen. Reserveer tijdelijke ruimte naast de container en een bronkopie voor geplande taken. Grootte-eenheden gebruiken 1024; opvulling voegt bytes toe.

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

Bestanden met geheimen voorbereiden

Genereer geheimen eenmaal, bewaar een beveiligde kopie en beperk bestandstoegang. De voorbeelden vervangen geen bestaande sleutels. UTF-8-bestanden behouden spaties; afsluitende regeleinden worden verwijderd. Bewaar de oorspronkelijke sleutels voor oudere back-ups.

$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

Activatie en licentiestatus

De licentiesleutel is gebonden aan de apparaat-ID die door dezelfde CLI-build wordt afgedrukt. Als een licentie wordt gekopieerd naar een andere pc, weigert LockBox deze en valt terug op Free.

Windows controleert de bestaande locaties van de LockBox-applicatiegegevens. Linux slaat activatie op in $XDG_CONFIG_HOME/lockbox/.lockbox.license, daarna ~/.config/lockbox/.lockbox.license, met ~/.lockbox/.lockbox.license als alternatief.

Apparaat-ID opvragen

.\LockBox.Cli.exe device-id

Controleer huidige editie

.\LockBox.Cli.exe license

Activeren vanuit een licentiebestand

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

Activeren via een omgevingsvariabele

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

Inline activeren

Inline activering werkt, maar kan lekken via shellgeschiedenis of proceslogboeken.

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

Linux-activatie

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

Geheimenbeheer

Gebruik bij voorkeur omgevingsvariabelen of bestanden. Inline geheimen zijn alleen nuttig voor testen. Hoofdwachtwoorden en laag-sleutels moeten worden bewaard: zonder deze kan de container niet worden geopend.

DoelDirectOmgevingBestand
Hoofdwachtwoord--master value--master-env ENV--master-file path
Laag-sleutel aanmaken--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Laag-sleutel openen--key value--key-env ENV--key-file path
Scheduler-bestandwachtwoord--password value--password-env ENV--password-file path
Container vernietigingswachtwoord--destruction-password value--destruction-password-env ENV--destruction-password-file path
Licentiesleutel--license value--license-env ENV--license-file path

Bestand-gebaseerde geheimen

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

Algoritmen en sleutelgeneratie

Gebruik algorithms om alle ondersteunde profielen en minimale edities te zien. Gebruik keygen voor laag-sleutels.

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

Ondersteunde commando-afkortingen:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Containers maken

create pakt een bronmap, past optionele compressie en opvulling toe, versleutelt de payload via één of meerdere lagen en schrijft een .lbx container.

Vereiste opties

  • --source of -s: bronmap.
  • --output of -o: uitvoer .lbx pad.
  • --master, --master-env of --master-file.
  • Ten minste één laag: --layer, --layer-env of --layer-file.

Minimale AES-container

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

Gecomprimeerde container

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

Crypto-opvulling

.\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

Verdeel container in delen

.\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

Het eerste deel behoudt .lbx. Extra delen gebruiken .lbx1, .lbx2, enzovoort. Bewaar alle delen in dezelfde map.

Voorbeeld van negen-lagen Max

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

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

Alternatieve algoritme-/sleutelsyntaxis

.\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

Verwijder bron na succesvolle handmatige creatie

.\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 verwijdert de bronmap pas nadat de container succesvol is aangemaakt. Planner heeft een andere optie: --delete-source-contents.

Container vernietigingswachtwoord

Max-editie kan een afzonderlijk vernietigingswachtwoord aan een container toevoegen. Als dat wachtwoord later wordt ingevoerd als het hoofdwachtwoord, overschrijft LockBox onmiddellijk de container zonder bevestiging. Dit is bedoeld voor scenario's met dwang-druk. Houd het gescheiden van het echte hoofdwachtwoord.

De opdracht controleert de vrije schijfruimte, versleutelt de originele containergegevens met een nieuw willekeurig geheim en AES-256-GCM in een tijdelijk bestand, normaliseert het resultaat naar de exacte originele grootte, vervangt het originele bestand en vergeet het willekeurige geheim. Voor gesplitste containers wordt elk .lbx, .lbx1, .lbx2 deel in dezelfde map vervangen terwijl de originele deelgroottes behouden blijven.

Aanmaken met een vernietigingswachtwoord

$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

Vernietiging activeren zonder laagsleutels

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

Linux-activering

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

Na succesvolle vernietiging is de container geen geldig LockBox-bestand meer. De CLI geeft exitcode 0 omdat de gevraagde vernietigingsactie succesvol is voltooid.

Containers openen

open extraheert een container naar de uitvoermap. Voor normale extractie moeten laagsleutels in dezelfde volgorde worden doorgegeven als tijdens de creatie. Voor een workflow met vernietigingswachtwoord zijn alleen het contPad, uitvoerpad en het vernietigingswachtwoord als hoofdwachtwoord vereist.

Een eendelige container openen

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

Een gesplitste container openen

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

Een meerlagige container openen

.\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

Aliassen

open
decrypt
extract

Een back-up door herstel controleren

Maak een klein report.csv-bestand als test. Pak uit naar een nieuwe map; de bronmapnaam blijft daarbinnen behouden. Bewaar alle delen samen en vergelijk met ongewijzigde bronnen. Uitpakken vereist beschrijfbare tijdelijke ruimte naast de container. Bescherm ook herstelde onversleutelde bestanden.

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

Planner

Planner-commando's zijn beschikbaar in de Max-editie. Ze slaan volledige taakmetadata op in een versleuteld .lbxjobs bestand, inclusief bronpad, uitvoerpad, wachtwoorden, vernietigingswachtwoord, laagsleutels, compressie, padding, splitsing en instelling voor het verwijderen van broninhoud.

Geplande taken draaien alleen terwijl LockBox.Cli.exe schedule run actief is. Gebruik Windows Taakplanner, Linux systemd, cron, een service-wrapper of een langdurige console sessie als u wilt dat de worker automatisch start na een herstart.

Frequentiewaarden

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

Voeg een dagelijkse versleutelde back-uptaak toe

$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

Voeg een taak toe die de inhoud van de bronmap verwijdert na succes

.\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

Voeg een maandelijkse archiefopslag toe met padding en gesplitste delen

.\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

Lijst van opgeslagen taken

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

Start de planner-worker

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

Voer de verschuldigde taken één keer uit en sluit af

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

Toon de laatste runtime-status

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

Statusmarkeringen zijn [OK], [RUNNING], en [FAILED]. Een mislukte taak bevat de reden en vertelt de gebruiker contact op te nemen met de ondersteuning als het probleem zich herhaalt.

JSON-scripts

Gebruik --script wanneer een workflow meerdere stappen bevat. De script-runner ondersteunt create, open, keygen, algorithms, device-id, license, en activate.

Aanmaken en openen in één 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"

Doorgaan na een mislukte stap

{
  "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" }
      ]
    }
  ]
}

Activeren vanuit script

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

JSON-velden en uitvoeringsregels

De tabel koppelt create-velden en open-sleutellijsten aan CLI-opties. Relatieve paden beginnen in de werkmap van het proces; variabelen en datums worden niet vervangen. Gebruik één geheimbron per veld. open leest keys, daarna keyEnvs en keyFiles. Gebruik bij voorkeur stopOnError: true; bij false kan later succes een eerdere fout verbergen. Planneropdrachten worden niet ondersteund in JSON-scripts.

{
  "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--sourceMap om te verpakken en te versleutelen.
output / outputContainerPath--outputUitvoer .lbx pad.
masterPassword--masterInline hoofdwachtwoord.
masterPasswordEnv--master-envLees hoofdwachtwoord uit omgevingsvariabele.
masterPasswordFile--master-fileLees hoofdwachtwoord uit UTF-8 tekstbestand.
layers[].algorithm + layers[].key--layerVoeg ALGORITHM=KEY toe.
layers[].algorithm + layers[].keyEnv--layer-envVoeg ALGORITHM=ENV toe.
layers[].algorithm + layers[].keyFile--layer-fileVoeg ALGORITHM=FILE toe.
compression / compress--compressComprimering inschakelen.
padding--paddingVersleutelde willekeurige opvulling toevoegen. Eenheden: B, KB, MB, GB, TB.
paddingBytes--padding-bytesOpvulgrootte in ruwe bytes.
split / splitSize--splitSplits uitvoer in .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesGrootte van de split-deel in ruwe bytes.
destructionPassword--destruction-passwordMax-only inline vernietigingswachtwoord. Het later invoeren als hoofdwachtwoord overschrijft de container onmiddellijk.
destructionPasswordEnv--destruction-password-envLees het Max-only vernietigingswachtwoord uit een omgevingsvariabele.
destructionPasswordFile--destruction-password-fileLees het Max-only vernietigingswachtwoord uit een UTF-8 tekstbestand.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceVerwijder bronmap na succesvolle handmatige aanmaak.
container / containerPath--containerBestaande .lbx container.
keys[]--keyInline laag-sleutel in de oorspronkelijke volgorde.
keyEnvs[]--key-envLaag-sleutel van omgevingsvariabele.
keyFiles[]--key-fileLaag-sleutel uit UTF-8-tekstbestand.

Automatiseringsrecepten

Versleutelde database dump-back-up

$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

CI-artifactbescherming

.\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

Veilige partneroverdracht

.\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

Langetermijnarchief

.\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

Batchbestandvoorbeeld

@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: meerdere mappen kopiëren

Sla het script op het aangegeven pad op. Het maakt per bron een uniek benoemde container en logbestand, stopt bij fouten en bewaart de CLI-afsluitcode. AES-128-GCM werkt met Free; compressie en splitsen vereisen Pro of 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: onbeheerde back-ups

Sla het Bash-script op met LF-regeleinden. Bereid CLI en geheimen op de aangegeven paden voor en geef bronmappen als argumenten door. Elke uitvoering krijgt een eigen map. Fouten leveren een log en een niet-nulcode op; bronbestanden blijven behouden.

/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

Plannen via het besturingssysteem

Deze taken starten bovenstaande scripts; dit gebruik van create vereist geen Max. De Windows-registratie werkt alleen bij een aangemelde gebruiker; stel zo nodig uitvoering zonder aanmelding in Taakplanner in. Voeg cron toe aan de crontab van het back-upaccount en controleer flock. Beide voorbeelden starten om 02:00 lokale tijd en voorkomen overlappende geplande uitvoeringen. Controleer rechten en test handmatig.

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: de planner beheren

Maak het serviceaccount lockbox met benodigde rechten, activeer Max voor dat account en bereid het aparte UTF-8-wachtwoordbestand jobs.txt voor. add voegt toe en werkt niet bij: gebruik het eenmaal per taak. Gebruik één proces per takenbestand en herstart na wijzigingen. Status-JSON herstelt geen geschiedenis: verlopen herhalingen worden overgeslagen, een verlopen once-taak kan opnieuw lopen. Gebruik create voor periodieke OS-starts in plaats van herhaald run-once. De planner hergebruikt de uitvoernaam.

/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

Comandoreferentie

CommandoDoelAlias
helpToon console-help.--help, -h, ?
device-idPrint PC-apparaat-ID voor licentie-uitgifte.deviceid, machine-id
licenseToon huidige editie en licentiepad.license-status, status
activateInstalleer een apparaatgebonden licentiesleutel.activation
algorithmsLijst algoritmen en minimaal vereiste edities.profiles, list-algorithms
keygenGenereer willekeurige sleutels.generate-key, generate-keys
createMaak een versleutelde container.encrypt
openExtraheer versleutelde container.decrypt, extract
scheduleBeheer en voer geplande taken uit.scheduler, scheduled-tasks
scriptVoer JSON-automatiseringsbestand uit.--script

Maak opties aan

--source, -sMap om te verpakken en te versleutelen.
--output, -oUitvoer .lbx pad.
--masterInline hoofdwachtwoord.
--master-envLees hoofdwachtwoord uit omgevingsvariabele.
--master-fileLees hoofdwachtwoord uit UTF-8 tekstbestand.
--layerVoeg ALGORITHM=KEY toe.
--layer-envVoeg ALGORITHM=ENV toe.
--layer-fileVoeg ALGORITHM=FILE toe.
--algorithm, -aAlternatieve algoritmevorm gekoppeld aan --key, --key-env, of --key-file.
--compressComprimering inschakelen.
--no-compressComprimering uitschakelen als deze eerder is ingesteld.
--paddingVersleutelde willekeurige opvulling toevoegen. Eenheden: B, KB, MB, GB, TB.
--padding-bytesOpvulgrootte in ruwe bytes.
--splitSplits uitvoer in .lbx, .lbx1, .lbx2.
--split-bytesGrootte van de split-deel in ruwe bytes.
--no-splitSplitsen uitschakelen als dit eerder is ingesteld.
--destruction-passwordMax-only inline vernietigingswachtwoord. Het later invoeren als hoofdwachtwoord overschrijft de container onmiddellijk.
--destruction-password-envLees het Max-only vernietigingswachtwoord uit een omgevingsvariabele.
--destruction-password-fileLees het Max-only vernietigingswachtwoord uit een UTF-8 tekstbestand.
--delete-sourceVerwijder bronmap na succesvolle handmatige aanmaak.

Open opties

--container, -cBestaande .lbx container.
--output, -oUittrekmappen.
--master, --master-env, --master-fileBron van het hoofdwachtwoord.
--key, -kInline laag-sleutel in de oorspronkelijke volgorde.
--key-envLaag-sleutel van omgevingsvariabele.
--key-fileLaag-sleutel uit UTF-8-tekstbestand.
Toegestaan voor workflows met vernietigingswachtwoord. Normale extractie mislukt na het lezen van metadata als vereiste sleutels ontbreken.

Scheduler-opties

schedule addVoeg een taak toe aan versleutelde .lbxjobs.
schedule listToon opgeslagen taken.
schedule runVoer langdurige worker uit.
schedule run-onceVoer openstaande taken één keer uit en sluit af.
schedule statusLees laatste runtime-status JSON.
--tasks, --fileVersleuteld taakbestandspad.
--password, --password-env, --password-fileWachtwoord voor taakbestand.
--state, --status-fileRuntime-status JSON pad.
--nameTaaknaam voor schedule add.
--frequency, --everyTaakfrequentie.
--start, --start-atLokaal startdatum/tijd.
--delete-source-contentsVerwijder originele bronmapinhoud na succesvolle geplande uitvoering.
--poll-secondsWorker polling-interval voor schedule run.

Met --language of --lang kiest u de consoletaal; --quiet verbergt gewone voortgangsmeldingen, maar fouten blijven op de standaardfoutuitvoer verschijnen. Ctrl+C vraagt annulering aan en retourneert 1. Code 2 betekent ongeldige opdrachtsyntaxis en code 3 een aanmaakfunctie die de huidige editie niet ondersteunt. Ook het bewust activeren van het vernietigingswachtwoord retourneert 0; die code bewijst dus niet dat bestanden zijn uitgepakt. Controleer de verwachte uitvoer voordat u volgende automatiseringsstappen uitvoert.

Afsluitcodes en bewaking

schedule run-once kan nul teruggeven ondanks mislukte taken; schedule status ook zonder status. Controleer savedAt, lastSuccessAt en lastError; [OK] kan alleen Ready betekenen. Deze monitor verwacht dagelijkse back-ups, controles elke 30 seconden en succes binnen 26 uur. Pas de drempels aan. JSON-statussen zijn numeriek; --quiet onderdrukt gewone succesuitvoer van create/open.

$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

Probleemoplossing

Waarom krijg ik exitcode 3?

De huidige editie staat de gevraagde functie niet toe: te veel lagen, compressie, crypto-padding, splitsing, planner, of een sterker algoritme.

Waarom mislukt extractie met een authentication tag-fout?

Het hoofdwachtwoord, lagsleutel, laagsvolgorde of containerbestand is verkeerd. Voor gesplitste containers, verifieer ook dat elk deel aanwezig is in dezelfde map.

Waarom draait de planner niet nadat ik de console sluit?

schedule run is het werkproces. Houd het geopend, of start het vanuit Windows Taakplanner of een service-wrapper.

Waarom faalt schedule add onmiddellijk?

De planner valideert licentie, bronmap, uitvoerpad, algoritmen, wachtwoorden en beschikbare schijfruimte voordat de taak wordt opgeslagen.

Kan ik planningswachtwoorden opslaan in het .lbxjobs-bestand?

Ja. Het .lbxjobs-bestand is versleuteld met het planningsbestand-wachtwoord en slaat volledige taakmetadata op, inclusief encryptiewachtwoorden en laagsleutels.

Wat gebeurt er als een geplande run overlapt met de vorige run?

Het nieuwe evenement wordt overgeslagen, de taak meldt een mislukte status met uitleg, en toekomstige runs gaan door nadat de actieve run is voltooid.

Hoe voorkom ik geheimen in de shellgeschiedenis?

Gebruik --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env, en --password-file.