Tilbake til LockBox

LockBox CLI-dokumentasjon

LockBox CLI er den engelskspråklige automatiseringsutgaven for skripting av kryptering, utpakking, aktivering, planlagte krypterte sikkerhetskopier og CI/CD-arbeidsflyter. Den bruker samme enhetsbundne lisensmodell som skrivebordsappen.

Kom i gang

Plasser LockBox.Cli.exe i en mappe inkludert i PATH, eller kall det ved full bane. --cli-markøren godtas for kompatibilitet men er ikke nødvendig i kun CLI-versjonen.

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

Minimal arbeidsflyt for opprettelse og åpning:

$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 bruker de samme kommandoene med skråstrekbaner og en binær uten .exe-suffix:

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

Installer og kontroller CLI

Pakk ut ZIP-filen for systemet og prosessoren din. .NET følger med. Sammenlign hashverdien med SHA256SUMS.txt. Plasser CLI på den absolutte stien nedenfor, og kontroller hjelp og lisens med sikkerhetskopieringskontoen.

Linux trenger også distribusjonens systembiblioteker, inkludert ICU og OpenSSL; medfølgende .NET leverer dem ikke. I Windows må gjeldende kjøringspolicy tillate PowerShell-skript.

.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

Mapper, stier og plass

Tilpass stiene. Kildemappen må være ikke-tom, og beholderen må ligge utenfor. Samme målnavn erstatter forrige beholder og deler. Sett av midlertidig plass ved beholderen og en kildekopi for planlagte oppgaver. Størrelsesenheter bruker 1024; utfylling legger til byte.

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

Forbered filer med hemmeligheter

Generer hemmeligheter én gang, lagre en beskyttet kopi og begrens filtilgangen. Eksemplene nekter å erstatte eksisterende nøkler. UTF-8-filer beholder mellomrom, men fjerner avsluttende linjeskift. Bevar originalnøklene for eldre kopier.

$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

Aktivering og lisensstatus

Lisensnøkkelen er knyttet til enhets-IDen som skrives ut av samme CLI-versjon. Hvis en lisens kopieres til en annen PC, avviser LockBox den og går tilbake til Gratis.

Windows sjekker de eksisterende LockBox-applikasjonsdataplasseringene. Linux lagrer aktivering i $XDG_CONFIG_HOME/lockbox/.lockbox.license, så ~/.config/lockbox/.lockbox.license, med ~/.lockbox/.lockbox.license som reserve.

Få enhets-ID

.\LockBox.Cli.exe device-id

Sjekk nåværende utgave

.\LockBox.Cli.exe license

Aktiver fra en lisensfil

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

Aktiver fra en miljøvariabel

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

Inline-aktivering

Inline-aktivering fungerer, men det kan lekke gjennom shell-historikk eller prosesslogger.

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

Linux-aktivering

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

Håndtering av hemmeligheter

Foretrekk miljøvariabler eller filer. Inline-hemmeligheter er kun nyttige for testing. Hovedpassord og lagnøkler må bevares: uten dem kan ikke containeren åpnes.

FormålDirekteMiljøFil
Hovedpassord--master value--master-env ENV--master-file path
Opprett lagnøkkel--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Åpne lagnøkkel--key value--key-env ENV--key-file path
Passord for planleggerfil--password value--password-env ENV--password-file path
Passord for ødeleggelse av container--destruction-password value--destruction-password-env ENV--destruction-password-file path
Lisensnøkkel--license value--license-env ENV--license-file path

Fil-baserte hemmeligheter

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

Algoritmer og nøkkelgenerering

Bruk algorithms for å se alle støttede profiler og minimumsutgaver. Bruk keygen for lag-nøkler.

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

Støttede kommandoaliaser:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Opprett containere

create pakker en kilde-map, bruker valgfri komprimering og utfylling, krypterer nyttelasten gjennom ett eller flere lag, og skriver en .lbx container.

Påkrevde alternativer

  • --source eller -s: kilde-mappe.
  • --output eller -o: utdata .lbx-bane.
  • --master, --master-env, eller --master-file.
  • Minst ett lag: --layer, --layer-env, eller --layer-file.

Minimal 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

Komprimert 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

Krypto-fylling

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

Del container i deler

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

Den første delen beholder .lbx. Ytterligere deler bruker .lbx1, .lbx2, og så videre. Hold alle deler i samme mappe.

Ni-lags Max-eksempel

$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

Alternativ algoritme/nøkkel-syntaks

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

Slett kilde etter vellykket manuell opprettelse

.\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 sletter kun kilde-mappen etter at containeren er opprettet vellykket. Planleggeren har et annet alternativ: --delete-source-contents.

Containernedbrytingspassord

Max-utgaven kan legge til et separat nedbrytingspassord for en container. Hvis dette passordet senere tastes inn som hovedpassord, overskriver LockBox umiddelbart containeren uten bekreftelse. Dette er ment for scenarier med tvangspress. Hold det separat fra det virkelige hovedpassordet.

Kommandoen verifiserer ledig diskplass, krypterer de opprinnelige containerdataene med en ny tilfeldig hemmelighet og AES-256-GCM til en midlertidig fil, normaliserer resultatet til nøyaktig samme størrelse som originalen, erstatter den opprinnelige filen, og glemmer den tilfeldige hemmeligheten. For delte containere blir hver .lbx, .lbx1, .lbx2 del i samme mappe erstattet samtidig som de opprinnelige delstørrelsene bevares.

Opprett med et nedbrytingspassord

$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

Utløs nedbryting uten lagernøkler

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

Linux-utløser

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

Etter vellykket nedbryting er containeren ikke lenger en gyldig LockBox-fil. CLI returnerer avslutningskode 0 fordi den forespurte nedbrytingshandlingen ble fullført.

Åpne containere

open pakker ut en container til utdata-mappen. For normal utpakking må lagernøklene overleveres i samme rekkefølge som under opprettelsen. For en arbeidsflyt med nedbrytingspassord kreves kun containersti, utdata-sti, og nedbrytingspassord som hovedpassord.

Åpne en ett-lags container

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

Åpne en delt container

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

Åpne en fler-lags container

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

Kontroller ved gjenoppretting

Lag en liten report.csv for testen. Pakk ut til en ny mappe; kildemappens navn bevares inni. Hold alle deler samlet og sammenlign med uendrede kilder. Utpakking trenger skrivbar midlertidig plass ved beholderen. Beskytt også gjenopprettede ukrypterte filer.

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

Planlegger

Planleggerkommandoer er tilgjengelige i Max-utgaven. De lagrer full oppgaveinformasjon i en kryptert .lbxjobs-fil, inkludert kildebane, utdatabane, passord, destruksjonspassord, lagernøkler, komprimering, utfylling, splitting, og innstilling for sletting av kildeinnhold.

Planlagte jobber kjører bare mens LockBox.Cli.exe schedule run kjører. Bruk Windows Oppgaveplanlegger, Linux systemd, cron, en tjenestepakke, eller en langvarig konsoll økt hvis du trenger at arbeideren starter automatisk etter omstart.

Frekvensverdier

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

Legg til en daglig kryptert sikkerhetskopioppgave

$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

Legg til en oppgave som sletter innholdet i kilde-mappen etter suksess

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

Legg til et månedlig arkiv med utfylling og delte deler

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

Liste over lagrede oppgaver

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

Kjør planleggerarbeideren

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

Kjør forfalte oppgaver én gang og avslutt

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

Vis siste kjøretidsstatus

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

Statusmarkører er [OK], [RUNNING], og [FAILED]. En mislykket oppgave inkluderer årsaken og forteller brukeren å kontakte support hvis problemet gjentar seg.

JSON-skript

Bruk --script når en arbeidsflyt har flere trinn. Skriptkjøreren støtter create, open, keygen, algorithms, device-id, license, og activate.

Opprett og åpne i ett skript

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

Fortsett etter et mislykket trinn

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

Aktiver fra skript

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

JSON-felt og kjøreregler

Tabellen kobler create-felt og open-nøkkellister til CLI-valg. Relative stier starter i prosessens arbeidsmappe; variabler og datoer erstattes ikke. Bruk én hemmelighetskilde per felt. open leser keys, så keyEnvs og keyFiles. Foretrekk stopOnError: true; med false kan senere suksess skjule tidligere feil. JSON-skript støtter ikke planleggerkommandoer.

{
  "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--sourceMappe som skal pakkes og krypteres.
output / outputContainerPath--outputUtdata .lbx-bane.
masterPassword--masterDirekte administrasjonspassord.
masterPasswordEnv--master-envLes administrasjonspassord fra miljøvariabel.
masterPasswordFile--master-fileLes administrasjonspassord fra UTF-8 tekstfil.
layers[].algorithm + layers[].key--layerLegg til ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envLegg til ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileLegg til ALGORITHM=FILE.
compression / compress--compressAktiver komprimering.
padding--paddingLegg til kryptert tilfeldig utfylling. Enheter: B, KB, MB, GB, TB.
paddingBytes--padding-bytesUtfyllingsstørrelse i rå byte.
split / splitSize--splitDel utdata i .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesDel delstørrelse i rå byte.
destructionPassword--destruction-passwordKun maks inline destruksjonspassord. Å skrive det senere som administrasjonspassord overskriver beholderen umiddelbart.
destructionPasswordEnv--destruction-password-envLes kun maks destruksjonspassord fra miljøvariabel.
destructionPasswordFile--destruction-password-fileLes kun maks destruksjonspassord fra UTF-8 tekstfil.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceSlett kilde-mappe etter vellykket manuell opprettelse.
container / containerPath--containerEksisterende .lbx-beholder.
keys[]--keyInline-lagernøkkel i original rekkefølge.
keyEnvs[]--key-envLagernøkkel fra miljøvariabel.
keyFiles[]--key-fileLagernøkkel fra UTF-8 tekstfil.

Automatiseringsoppskrifter

Backup av kryptert databaseuttrekk

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

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

Sikker overføring til partner

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

Langtidsarkiv

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

Batchfil-eksempel

@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: kopier flere mapper

Lagre skriptet på angitt sti. Det oppretter en unikt navngitt beholder og logg per kilde, stopper ved feil og bevarer CLI-avslutningskoden. AES-128-GCM fungerer med Free; komprimering og oppdeling krever Pro eller 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: ubetjente sikkerhetskopier

Lagre Bash-skriptet med LF-linjeslutt. Forbered CLI og hemmeligheter på angitte stier, og send kildemapper som argumenter. Hver kjøring får egen mappe. Feil etterlater en logg og en kode ulik null; kildene bevares.

/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

Planlegg med operativsystemet

Oppgavene starter skriptene ovenfor; denne bruken av create krever ikke Max. Windows-registreringen kjører bare med innlogget bruker; sett opp kjøring uten innlogging i Oppgaveplanlegging ved behov. Legg cron i backupkontoens crontab etter å ha kontrollert flock. Begge eksemplene kjører kl. 02:00 lokal tid og hindrer overlappende planlagte kjøringer. Kontroller rettigheter og test manuelt.

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: drift av planleggeren

Opprett tjenestekontoen lockbox med nødvendige rettigheter, aktiver Max for kontoen og forbered den separate UTF-8-passordfilen jobs.txt. add legger til, oppdaterer ikke: bruk én gang per oppgave. Kjør én prosess per oppgavefil og start på nytt etter endringer. Status-JSON gjenoppretter ikke historikk: forsinkede gjentakelser hoppes over, en forsinket once-oppgave kan kjøre igjen. Bruk create for periodiske OS-starter i stedet for gjentatt run-once. Planleggeren gjenbruker målnavnet.

/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

Kommandooversikt

KommandoFormålAlias
helpVis konsollhjelp.--help, -h, ?
device-idSkriv ut PC-enhets-ID for lisensutstedelse.deviceid, machine-id
licenseVis gjeldende utgave og lisensbane.license-status, status
activateInstaller en enhetsbundet lisensnøkkel.activation
algorithmsListe over algoritmer og minimumsutgaver.profiles, list-algorithms
keygenGenerer tilfeldige nøkler.generate-key, generate-keys
createOpprett kryptert beholder.encrypt
openEkstraher kryptert beholder.decrypt, extract
scheduleAdministrer og kjør planlagte oppgaver.scheduler, scheduled-tasks
scriptKjør JSON-automatiseringsfil.--script

Opprett alternativer

--source, -sMappe som skal pakkes og krypteres.
--output, -oUtdata .lbx-bane.
--masterDirekte administrasjonspassord.
--master-envLes administrasjonspassord fra miljøvariabel.
--master-fileLes administrasjonspassord fra UTF-8 tekstfil.
--layerLegg til ALGORITHM=KEY.
--layer-envLegg til ALGORITHM=ENV.
--layer-fileLegg til ALGORITHM=FILE.
--algorithm, -aAlternativ algoritmeform parret med --key, --key-env eller --key-file.
--compressAktiver komprimering.
--no-compressDeaktiver komprimering hvis satt tidligere.
--paddingLegg til kryptert tilfeldig utfylling. Enheter: B, KB, MB, GB, TB.
--padding-bytesUtfyllingsstørrelse i rå byte.
--splitDel utdata i .lbx, .lbx1, .lbx2.
--split-bytesDel delstørrelse i rå byte.
--no-splitDeaktiver splitting hvis satt tidligere.
--destruction-passwordKun maks inline destruksjonspassord. Å skrive det senere som administrasjonspassord overskriver beholderen umiddelbart.
--destruction-password-envLes kun maks destruksjonspassord fra miljøvariabel.
--destruction-password-fileLes kun maks destruksjonspassord fra UTF-8 tekstfil.
--delete-sourceSlett kilde-mappe etter vellykket manuell opprettelse.

Åpne alternativer

--container, -cEksisterende .lbx-beholder.
--output, -oUtpakningsmappe.
--master, --master-env, --master-fileKilde for hovedpassord.
--key, -kInline-lagernøkkel i original rekkefølge.
--key-envLagernøkkel fra miljøvariabel.
--key-fileLagernøkkel fra UTF-8 tekstfil.
Tillatt for arbeidsflyter med destruksjonspassord. Vanlig utpakking mislykkes etter metadata-lesing hvis nødvendige nøkler mangler.

Planleggeralternativer

schedule addLegg til en oppgave i kryptert .lbxjobs.
schedule listVis lagrede oppgaver.
schedule runKjør langvarig arbeidsprosess.
schedule run-onceKjør oppgaver som forfaller én gang og avslutt.
schedule statusLes siste runtime status JSON.
--tasks, --fileKryptert oppgavefilbane.
--password, --password-env, --password-filePassord for oppgavefil.
--state, --status-fileRuntime status JSON-bane.
--nameOppgavenavn for schedule add.
--frequency, --everyOppgavefrekvens.
--start, --start-atLokalt startdato/-tidspunkt.
--delete-source-contentsSlett innholdet i den opprinnelige kildemappen etter vellykket planlagt kjøring.
--poll-secondsPolling-intervall for arbeidsprosess for schedule run.

--language eller --lang velger konsollspråk; --quiet skjuler vanlig fremdrift, men feil skrives fortsatt til standard feilstrøm. Ctrl+C ber om avbrudd og returnerer 1. Kode 2 betyr ugyldig kommandosyntaks og kode 3 en opprettelsesfunksjon som ikke finnes i gjeldende utgave. Kode 0 returneres også når destruksjonspassordet bevisst utløses, og beviser derfor ikke alene at filer er pakket ut. Kontroller forventet resultat før videre automatisering.

Avslutningskoder og overvåking

schedule run-once kan returnere null selv med mislykkede oppgaver; schedule status også uten status. Kontroller savedAt, lastSuccessAt og lastError; [OK] kan bare bety Ready. Monitoren forventer daglige kopier, kontroll hvert 30. sekund og suksess innen 26 timer. Tilpass tersklene. JSON-tilstander er tall; --quiet skjuler vanlig utdata fra vellykkede 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

Feilsøking

Hvorfor får jeg avslutningskode 3?

Den nåværende utgaven tillater ikke den forespurte funksjonen: for mange lag, komprimering, krypteringspadding, splitting, planlegger eller en sterkere algoritme.

Hvorfor mislykkes utpakking med en autentiseringstag-feil?

Hovedpassordet, lagetasten, lagrekkefølgen eller containerfilen er feil. For splittede containere, verifiser også at alle deler er tilstede i samme mappe.

Hvorfor kjører ikke planleggeren etter at jeg lukker konsollen?

schedule run er arbeidsprosess. Hold den åpen, eller start den fra Windows Oppgaveplanlegger eller en tjenestepakke.

Hvorfor mislykkes schedule add umiddelbart?

Planleggeren validerer lisens, kilde-mappe, utdata-path, algoritmer, passord og tilgjengelig diskplass før den lagrer oppgaven.

Kan jeg lagre planleggerpassord inne i .lbxjobs-filen?

Ja. .lbxjobs-filen er kryptert med planleggerfil-passordet og lagrer full oppgave-metadata, inkludert krypteringspassord og lagetaster.

Hva skjer hvis en planlagt kjøring overlapper den forrige kjøringen?

Den nye hendelsen blir hoppet over, oppgaven rapporterer status som mislykket med en forklaring, og fremtidige kjøringer fortsetter etter at aktiv kjøring er fullført.

Hvordan unngår jeg hemmeligheter i shell-historikk?

Bruk --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env, og --password-file.