Tilbage til LockBox

LockBox CLI dokumentation

LockBox CLI er automation-buildet på engelsk til scriptet kryptering, udpakning, aktivering, planlagte krypterede backups og CI/CD-workflows. Den bruger samme enhedsbaserede licensmodel som desktop-appen.

Kom godt i gang

Placer LockBox.Cli.exe i en mappe inkluderet i PATH, eller kald det ved fuld sti. --cli markøren accepteres af hensyn til kompatibilitet men er ikke nødvendig i CLI-only versionen.

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

Minimal oprettelses- og åbne workflow:

$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 bruger de samme kommandoer med skråstregs-stier og en binær uden .exe suffikset:

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 kontrollér CLI

Pak ZIP-filen til dit system og din processor ud. .NET er inkluderet. Sammenlign hashværdien med SHA256SUMS.txt. Placér CLI på den absolutte sti nedenfor, og kontrollér hjælp og licens med kontoen til sikkerhedskopiering.

Linux kræver også distributionens systembiblioteker, herunder ICU og OpenSSL; det medfølgende .NET leverer dem ikke. I Windows skal den gældende udførelsespolitik tillade PowerShell-scripts.

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

Tilpas stierne. Kildemappen må ikke være tom, og containeren skal ligge udenfor. Samme målnavn erstatter den tidligere container og dele. Reservér midlertidig plads ved containeren og en kildekopi til planlagte opgaver. Størrelsesenheder bygger på 1024; udfyldning tilføjer 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 hemmeligheder

Generér hemmeligheder én gang, gem en beskyttet kopi, og begræns filadgangen. Eksemplerne afviser at erstatte eksisterende nøgler. UTF-8-filer bevarer mellemrum, men fjerner afsluttende linjeskift. Bevar de oprindelige nøgler til ældre 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 licensstatus

Licensnøglen er bundet til enheds-ID'et, der printes af den samme CLI-version. Hvis en licens kopieres til en anden PC, afviser LockBox den og går tilbage til Gratis.

Windows tjekker de eksisterende LockBox applikationsdata-lokationer. Linux gemmer aktivering i $XDG_CONFIG_HOME/lockbox/.lockbox.license, derefter ~/.config/lockbox/.lockbox.license, med ~/.lockbox/.lockbox.license som fallback.

Få enheds-ID

.\LockBox.Cli.exe device-id

Tjek nuværende udgave

.\LockBox.Cli.exe license

Aktiver fra en licensfil

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

Aktiver inline

Inline aktivering fungerer, men det kan lække gennem shell-historik eller proceslogfiler.

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

Foretræk miljøvariabler eller filer. Inline-hemmeligheder er kun nyttige til test. Hovedadgangskoder og lag-nøgler skal bevares: uden dem kan containeren ikke åbnes.

FormålDirekteMiljøFil
Hovedadgangskode--master value--master-env ENV--master-file path
Opret lag-nøgle--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Åbn lag-nøgle--key value--key-env ENV--key-file path
Scheduler-fil-adgangskode--password value--password-env ENV--password-file path
Container ødelæggelses-adgangskode--destruction-password value--destruction-password-env ENV--destruction-password-file path
Licensnøgle--license value--license-env ENV--license-file path

Filbaserede hemmeligheder

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øglegenerering

Brug algorithms for at se alle understøttede profiler og minimumsudgaver. Brug keygen til lagnøgler.

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

Understøttede kommandaliaser:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Opret containere

create pakker en kilde-mappe, anvender valgfri kompression og padding, krypterer payloaden gennem et eller flere lag, og skriver en .lbx container.

Påkrævede valgmuligheder

  • --source eller -s: kilde-mappe.
  • --output eller -o: output .lbx sti.
  • --master, --master-env, eller --master-file.
  • Mindst ét 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

Komprimeret 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

Krypteringspadding

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

Opdel container i dele

.\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 del beholder .lbx. Yderligere dele bruger .lbx1, .lbx2, og så videre. Opbevar alle dele 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øgle 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

Slet kilde efter vellykket manuel oprettelse

.\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 efter containeren er oprettet succesfuldt. Scheduler har en anden valgmulighed: --delete-source-contents.

Containernes destruktionsadgangskode

Max-udgaven kan tilføje en separat destruktionsadgangskode til en container. Hvis denne adgangskode indtastes senere som hovedadgangskode, overskriver LockBox straks containeren uden bekræftelse. Dette er beregnet til scenarier med tvangspres. Hold den adskilt fra den rigtige hovedadgangskode.

Kommandoen kontrollerer ledig diskplads, krypterer de oprindelige containerdata med et nyt tilfældigt hemmeligt nøgle og AES-256-GCM til en midlertidig fil, normaliserer resultatet til den nøjagtige oprindelige størrelse, erstatter den oprindelige fil og glemmer den tilfældige hemmelighed. For delte containere, hver .lbx, .lbx1, .lbx2 del i samme mappe erstattes mens de oprindelige delstørrelser bevares.

Opret med en destruktionsadgangskode

$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

Udløs destruktion uden lag-nøgler

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

Linux-udløsning

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

Efter en vellykket destruktion er containeren ikke længere en gyldig LockBox-fil. CLI returnerer exit-kode 0, fordi den ønskede destruktionshandling blev fuldført med succes.

Åbn containere

open udpakker en container til outputmappen. For normal udpakning skal lagnøgler gives i samme rækkefølge som ved oprettelsen. For en destruktionsadgangskode-workflow kræves kun containerstien, outputstien og destruktionsadgangskoden som hovedadgangskode.

Åbn en enkelt-lags container

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

Åbn en delt container

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

Åbn 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

Kontrollér ved gendannelse

Opret en lille report.csv til testen. Pak ud i en ny mappe; kildemappens navn bevares indeni. Hold alle dele sammen, og sammenlign med uændrede kilder. Udpakning kræver skrivbar midlertidig plads ved containeren. Beskyt også de gendannede ukrypterede 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"

Planlægger

Scheduler-kommandoer er tilgængelige i Max-udgaven. De gemmer fuld opgave-metadata i en krypteret .lbxjobs-fil, inklusive kildevej, outputvej, adgangskoder, sletningsadgangskode, lagernøgler, komprimering, udfyldning, opdeling og slet-kildeindhold indstilling.

Planlagte jobs kører kun, mens LockBox.Cli.exe schedule run kører. Brug Windows Task Scheduler, Linux systemd, cron, en service-wrapper, eller en langvarig konsol session, hvis du har brug for, at arbejderen starter automatisk efter genstart.

Frekvensværdier

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

Tilføj en daglig krypteret backup-opgave

$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

Tilføj en opgave, der sletter indholdet af kilde-mappen efter 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

Tilføj et månedligt arkiv med udfyldning og delte dele

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

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

Kør scheduler-arbejderen

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

Kør forfaldne opgaver én gang og afslut

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

Vis seneste kørselstatus

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

Statusmarkører er [OK], [RUNNING] og [FAILED]. En mislykket opgave inkluderer årsagen og fortæller brugeren at kontakte support, hvis problemet gentager sig.

JSON-scripts

Brug --script, når en arbejdsgang har flere trin. Script-runneren understøtter create, open, keygen, algorithms, device-id, license, og activate.

Opret og åbn i ét 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"

Fortsæt efter et fejlagtigt trin

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

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

JSON-felter og kørselsregler

Tabellen forbinder create-felter og open-nøglelister med CLI-indstillinger. Relative stier tager udgangspunkt i processens arbejdsmappe; variabler og datoer erstattes ikke. Brug én hemmelighedskilde pr. felt. open læser keys, derefter keyEnvs og keyFiles. Foretræk stopOnError: true; med false kan senere succes skjule en tidligere fejl. JSON-scripts understøtter ikke planlæggerkommandoer.

{
  "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 der skal pakkes og krypteres.
output / outputContainerPath--outputOutput .lbx sti.
masterPassword--masterIndlejret hovedadgangskode.
masterPasswordEnv--master-envLæs hovedadgangskode fra miljøvariabel.
masterPasswordFile--master-fileLæs hovedadgangskode fra UTF-8 tekstfil.
layers[].algorithm + layers[].key--layerTilføj ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envTilføj ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileTilføj ALGORITHM=FILE.
compression / compress--compressAktivér komprimering.
padding--paddingTilføj krypteret tilfældig udfyldning. Enheder: B, KB, MB, GB, TB.
paddingBytes--padding-bytesUdfyldningsstørrelse i rå byte.
split / splitSize--splitDel output i .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesStørrelse på del i rå byte.
destructionPassword--destruction-passwordMax-only indlejret destruktionsadgangskode. Indtastning af den senere som hovedadgangskode overskriver containeren med det samme.
destructionPasswordEnv--destruction-password-envLæs Max-only destruktionsadgangskode fra en miljøvariabel.
destructionPasswordFile--destruction-password-fileLæs Max-only destruktionsadgangskode fra en UTF-8 tekstfil.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceSlet kilde-mappen efter vellykket manuel oprettelse.
container / containerPath--containerEksisterende .lbx container.
keys[]--keyInline lagernøgle i original rækkefølge.
keyEnvs[]--key-envLagernøgle fra miljøvariabel.
keyFiles[]--key-fileLagernøgle fra UTF-8 tekstfil.

Automationsopskrifter

Krypteret database dump-backup

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

.\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 partnerspecifik overførsel

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

Lagring på langt sigt

.\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: kopiér flere mapper

Gem scriptet på den angivne sti. Det opretter en entydigt navngivet container og log pr. kilde, stopper ved fejl og bevarer CLI-afslutningskoden. AES-128-GCM virker med Free; komprimering og opdeling kræver 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: uovervågede sikkerhedskopier

Gem Bash-scriptet med LF-linjeslutninger. Forbered CLI og hemmeligheder på de angivne stier, og giv kildemapper som argumenter. Hver kørsel får sin egen mappe. Fejl efterlader en log og en kode forskellig fra nul; kilderne 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

Planlæg via operativsystemet

Opgaverne starter ovenstående scripts; denne brug af create kræver ikke Max. Windows-registreringen kører kun med en logget ind bruger; indstil kørsel uden login i Opgavestyring efter behov. Tilføj cron til backupkontoens crontab efter kontrol af flock. Begge eksempler kører kl. 02:00 lokal tid og forhindrer overlappende planlagte kørsler. Kontrollér rettigheder, 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 af planlæggeren

Opret servicekontoen lockbox med nødvendige rettigheder, aktivér Max for kontoen, og forbered den særskilte UTF-8-adgangskodefil jobs.txt. add tilføjer, opdaterer ikke: brug én gang pr. opgave. Kør én proces pr. opgavefil, og genstart efter ændringer. Status-JSON gendanner ikke historik: forsinkede gentagelser springes over, en forsinket once-opgave kan køre igen. Brug create til periodiske OS-starter i stedet for gentaget run-once. Planlæggeren genbruger 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

Kommando reference

KommandoFormålAlias
helpVis konsol-hjælp.--help, -h, ?
device-idUdskriv PC-enheds ID til licensudstedelse.deviceid, machine-id
licenseVis nuværende udgave og licenssti.license-status, status
activateInstaller en enheds-bunden licensnøgle.activation
algorithmsListe algoritmer og minimumsudgaver.profiles, list-algorithms
keygenGenerer tilfældige nøgler.generate-key, generate-keys
createOpret krypteret container.encrypt
openUdpak krypteret container.decrypt, extract
scheduleHåndter og kør planlagte opgaver.scheduler, scheduled-tasks
scriptKør JSON-automationsfil.--script

Opret muligheder

--source, -sMappe der skal pakkes og krypteres.
--output, -oOutput .lbx sti.
--masterIndlejret hovedadgangskode.
--master-envLæs hovedadgangskode fra miljøvariabel.
--master-fileLæs hovedadgangskode fra UTF-8 tekstfil.
--layerTilføj ALGORITHM=KEY.
--layer-envTilføj ALGORITHM=ENV.
--layer-fileTilføj ALGORITHM=FILE.
--algorithm, -aAlternativt algoritmeformat kombineret med --key, --key-env eller --key-file.
--compressAktivér komprimering.
--no-compressDeaktiver komprimering, hvis det tidligere er indstillet.
--paddingTilføj krypteret tilfældig udfyldning. Enheder: B, KB, MB, GB, TB.
--padding-bytesUdfyldningsstørrelse i rå byte.
--splitDel output i .lbx, .lbx1, .lbx2.
--split-bytesStørrelse på del i rå byte.
--no-splitDeaktiver opdeling, hvis det tidligere er indstillet.
--destruction-passwordMax-only indlejret destruktionsadgangskode. Indtastning af den senere som hovedadgangskode overskriver containeren med det samme.
--destruction-password-envLæs Max-only destruktionsadgangskode fra en miljøvariabel.
--destruction-password-fileLæs Max-only destruktionsadgangskode fra en UTF-8 tekstfil.
--delete-sourceSlet kilde-mappen efter vellykket manuel oprettelse.

Åbn muligheder

--container, -cEksisterende .lbx container.
--output, -oUdpakningsmappe.
--master, --master-env, --master-fileKilde til hovedadgangskode.
--key, -kInline lagernøgle i original rækkefølge.
--key-envLagernøgle fra miljøvariabel.
--key-fileLagernøgle fra UTF-8 tekstfil.
Tilladt for destruktions-adgangskode arbejdsgange. Normal udpakning fejler efter metadatalesning, hvis nødvendige nøgler mangler.

Tidsplanlægningsmuligheder

schedule addTilføj en opgave til krypteret .lbxjobs.
schedule listVis gemte opgaver.
schedule runKør langvarig arbejdsgiver.
schedule run-onceKør forfaldne opgaver én gang og afslut.
schedule statusLæs seneste runtime-status JSON.
--tasks, --fileKrypteret opgavefilsti.
--password, --password-env, --password-fileAdgangskode til opgavefil.
--state, --status-fileRuntime-status JSON sti.
--nameOpgavens navn for schedule add.
--frequency, --everyOpgavefrekvens.
--start, --start-atLokal startdato/-tid.
--delete-source-contentsSlet indholdet af den oprindelige kilde-mappe efter en vellykket planlagt kørsel.
--poll-secondsArbejderens pollingsinterval for schedule run.

--language eller --lang vælger konsolsprog; --quiet skjuler almindelige statusmeddelelser, men fejl sendes stadig til standardfejl. Ctrl+C anmoder om annullering og returnerer 1. Kode 2 betyder ugyldig kommandosyntaks, og kode 3 en oprettelsesfunktion, der ikke er tilgængelig i den aktuelle udgave. Kode 0 returneres også ved bevidst aktivering af destruktionsadgangskoden og beviser derfor ikke i sig selv, at filer er udpakket. Kontrollér det forventede resultat før næste automatiseringstrin.

Afslutningskoder og overvågning

schedule run-once kan returnere nul trods mislykkede opgaver; schedule status også uden status. Kontrollér savedAt, lastSuccessAt og lastError; [OK] kan blot betyde Ready. Monitoren forventer daglige kopier, kontrol hvert 30. sekund og succes inden for 26 timer. Tilpas grænserne. JSON-tilstande er numeriske; --quiet skjuler normal udskrift 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

Fejlfinding

Hvorfor får jeg afgangskode 3?

Den nuværende udgave tillader ikke den anmodede funktion: for mange lag, kompression, kryptoforstærkning, opdeling, planlægger eller en stærkere algoritme.

Hvorfor fejler udpakning med en autentificeringstagsfejl?

Hovedadgangskoden, lagetasten, lagrækkefølgen eller containerfilen er forkert. For delte containere, kontroller også, at hver del er til stede i den samme mappe.

Hvorfor kører planlæggeren ikke efter jeg lukker konsollen?

schedule run er arbejdsprocessen. Hold den åben, eller start den fra Windows Task Scheduler eller en service-wrapper.

Hvorfor fejler planlæg-tilføj straks?

Planlæggeren validerer licens, kilde-mappe, outputsti, algoritmer, adgangskoder og ledig diskplads, før opgaven gemmes.

Kan jeg gemme planlæggerens adgangskoder i .lbxjobs-filen?

Ja. .lbxjobs-filen er krypteret med planlæggerfilens adgangskode og gemmer komplet opgave-metadata, inklusive krypteringsadgangskoder og lagetaster.

Hvad sker der, hvis en planlagt kørsel overlapper den foregående kørsel?

Den nye hændelse springes over, opgaven rapporterer en mislykket status med en forklaring, og fremtidige kørsel fortsætter efter den aktive kørsel er afsluttet.

Hvordan undgår jeg hemmeligheder i shell-historik?

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