Înapoi la LockBox

Documentație LockBox CLI

LockBox CLI este versiunea de automatizare numai în limba engleză pentru criptare, extragere, activare, backup-uri programate criptate și fluxuri de lucru CI/CD scriptate. Folosește același model de licență legată de dispozitiv ca aplicația desktop.

Pornire rapidă

Puneți LockBox.Cli.exe într-un folder inclus în PATH, sau apelați-l prin calea completă. Markerul --cli este acceptat pentru compatibilitate dar nu este necesar în versiunea doar CLI.

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

Flux minim de creare și deschidere:

$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 folosește aceleași comenzi cu căi cu slash și un binar fără sufixul .exe:

chmod +x ./LockBox.Cli
./LockBox.Cli --help
./LockBox.Cli device-id
./LockBox.Cli create \
  --source "/srv/data" \
  --output "/backup/data.lbx" \
  --master-env LBX_MASTER \
  --layer-env AES-128-GCM=LBX_L1

Instalarea și verificarea CLI

Extrageți ZIP-ul potrivit sistemului și procesorului. .NET este inclus. Comparați hash-ul cu SHA256SUMS.txt. Plasați CLI la calea absolută indicată mai jos și verificați ajutorul și licența cu contul de backup.

Linux necesită și bibliotecile native ale distribuției, inclusiv ICU și OpenSSL; .NET inclus nu le furnizează. În Windows, politica efectivă de execuție trebuie să permită scripturi PowerShell.

.NET / Linux · PowerShell / ExecutionPolicy

Expand-Archive -LiteralPath '.\LockBox-Cli-win-x64.zip' -DestinationPath 'C:\Tools\LockBox'
& 'C:\Tools\LockBox\LockBox.Cli.exe' --help
& 'C:\Tools\LockBox\LockBox.Cli.exe' license
Get-FileHash -LiteralPath '.\LockBox-Cli-win-x64.zip' -Algorithm SHA256
uname -m
unzip LockBox-Cli-linux-x64.zip -d ./lockbox-cli
chmod +x ./lockbox-cli/LockBox.Cli
./lockbox-cli/LockBox.Cli --help
./lockbox-cli/LockBox.Cli license
sha256sum LockBox-Cli-linux-x64.zip

SHA256SUMS.txt

Windows x64   -> LockBox-Cli-win-x64.zip
Windows x86   -> LockBox-Cli-win-x86.zip
Windows ARM64 -> LockBox-Cli-win-arm64.zip
Linux x86_64  -> LockBox-Cli-linux-x64.zip
Linux aarch64 -> LockBox-Cli-linux-arm64.zip
Linux armv7l  -> LockBox-Cli-linux-arm.zip

Dosare, căi și spațiu

Adaptați căile. Dosarul sursă nu poate fi gol, iar containerul trebuie să fie în afara lui. Același nume de ieșire înlocuiește containerul anterior și părțile sale. Rezervați spațiu temporar lângă container și o copie a sursei pentru sarcinile programate. Unitățile au baza 1024; umplerea adaugă octeți.

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

Pregătirea fișierelor cu secrete

Generați secretele o singură dată, păstrați o copie protejată și limitați accesul la fișiere. Exemplele refuză înlocuirea cheilor existente. Fișierele UTF-8 păstrează spațiile, dar elimină liniile noi finale. Păstrați cheile originale pentru copiile vechi.

$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

Activare și status licență

Cheia de licență este legată de ID-ul dispozitivului imprimat de aceeași versiune CLI. Dacă o licență este copiată pe un alt PC, LockBox o respinge și revine la Free.

Windows verifică locațiile existente de date ale aplicației LockBox. Linux stochează activarea în $XDG_CONFIG_HOME/lockbox/.lockbox.license, apoi ~/.config/lockbox/.lockbox.license, cu ~/.lockbox/.lockbox.license ca rezervă.

Obțineți ID-ul dispozitivului

.\LockBox.Cli.exe device-id

Verificați ediția curentă

.\LockBox.Cli.exe license

Activare dintr-un fișier de licență

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

Activare dintr-o variabilă de mediu

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

Activare inline

Activarea inline funcționează, dar se poate scurge prin istoricul shell-ului sau în jurnalele de proces.

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

Activare Linux

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

Gestionarea secretelor

Preferă variabilele de mediu sau fișierele. Secretele inline sunt utile doar pentru testare. Parolele master și cheile de strat trebuie păstrate: fără ele containerul nu poate fi deschis.

ScopDirectMediuFișier
Parolă master--master value--master-env ENV--master-file path
Creează cheie de strat--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Deschide cheie de strat--key value--key-env ENV--key-file path
Parolă fișier planificator--password value--password-env ENV--password-file path
Parolă pentru distrugerea containerului--destruction-password value--destruction-password-env ENV--destruction-password-file path
Cheie de licență--license value--license-env ENV--license-file path

Secrete bazate pe fișiere

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

Algoritmi și generarea cheilor

Folosește algorithms pentru a vedea toate profilele acceptate și edițiile minime. Folosește keygen pentru cheile de strat.

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

Aliasuri de comenzi acceptate:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Creează containere

create împachetează un folder sursă, aplică opțional compresie și completare, criptează conținutul prin unul sau mai multe straturi și scrie un container .lbx.

Opțiuni necesare

  • --source sau -s: folder sursă.
  • --output sau -o: calea de ieșire pentru .lbx.
  • --master, --master-env sau --master-file.
  • Cel puțin un strat: --layer, --layer-env sau --layer-file.

Container AES minimal

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

Container comprimat

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

Completare criptografică

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

Împarte containerul în părți

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

Prima parte păstrează .lbx. Părțile suplimentare folosesc .lbx1, .lbx2 și așa mai departe. Păstrați toate părțile în același folder.

Exemplu Max cu nouă straturi

$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

Sintaxă alternativă pentru algoritm/cheie

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

Șterge sursa după crearea manuală cu succes

.\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 șterge folderul sursă doar după ce containerul a fost creat cu succes. Planificatorul are o opțiune diferită: --delete-source-contents.

Parola de distrugere a containerului

Versiunea Max poate adăuga o parolă de distrugere separată unui container. Dacă acea parolă este introdusă ulterior ca parola principală, LockBox suprascrie imediat containerul fără confirmare. Acest lucru este destinat scenariilor de presiune/coercitivitate. Păstrați-o separată de parola principală reală.

Comanda verifică spațiul liber pe disc, criptează datele originale ale containerului cu un secret aleator proaspăt și AES-256-GCM într-un fișier temporar, normalizează rezultatul la dimensiunea exactă originală, înlocuiește fișierul original și uită secretul aleator. Pentru containerele împărțite, fiecare .lbx, .lbx1, .lbx2 parte din același folder este înlocuită păstrând dimensiunile originale ale părților.

Creare cu parolă de distrugere

$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

Declanșare distrugere fără chei de strat

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

Declanșare Linux

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

După distrugerea reușită, containerul nu mai este un fișier LockBox valid. CLI returnează codul de ieșire 0 deoarece acțiunea de distrugere solicitată s-a finalizat cu succes.

Deschide containere

open extrage un container în folderul de ieșire. Pentru extracția normală, cheile de strat trebuie să fie trecute în aceeași ordine utilizată la creare. Pentru un flux de lucru cu parolă de distrugere, sunt necesare doar calea containerului, calea de ieșire și parola de distrugere ca parola principală.

Deschide un container cu un singur strat

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

Deschide un container împărțit

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

Deschide un container multi-strat

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

Aliasuri

open
decrypt
extract

Verificarea prin restaurare

Creați un mic report.csv de test. Extrageți într-un dosar nou, care păstrează în interior numele sursei. Păstrați toate părțile împreună și comparați cu sursa nemodificată. Extragerea necesită spațiu temporar inscriptibil lângă container. Protejați și fișierele restaurate necriptate.

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

Programator

Comenzile programatorului sunt disponibile în ediția Max. Ele stochează metadatele complete ale sarcinii într-un fișier .lbxjobs criptat, incluzând calea sursă, calea de ieșire, parolele, parola de distrugere, cheile de strat, compresia, completarea, împărțirea și setarea de ștergere a conținutului sursei.

Job-urile programate rulează numai în timp ce LockBox.Cli.exe schedule run este în execuție. Utilizați Windows Task Scheduler, systemd pe Linux, cron, un wrapper de serviciu sau o sesiune lungă de consolă dacă aveți nevoie ca worker-ul să pornească automat după repornire.

Valori de frecvență

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

Adăugați o sarcină de backup criptat zilnic

$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

Adăugați o sarcină care șterge conținutul folderului sursă după 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

Adăugați un arhiv lunar cu completare și părți divizate

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

Listați sarcinile salvate

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

Rulați worker-ul programatorului

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

Rulați sarcinile datorate o singură dată și ieșiți

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

Afișați ultima stare de execuție

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

Marcatorii de stare sunt [OK], [RUNNING] și [FAILED]. O sarcină eșuată include motivul și îi spune utilizatorului să contacteze suportul dacă problema se repetă.

Scripturi JSON

Folosiți --script atunci când un flux de lucru are mai mulți pași. Script runner-ul suportă create, open, keygen, algorithms, device-id, license și activate.

Creați și deschideți într-un singur 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"

Continuați după un pas eșuat

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

Activați din script

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

Câmpuri JSON și reguli de execuție

Tabelul leagă câmpurile create și listele de chei open de opțiunile CLI. Căile relative pornesc din directorul de lucru al procesului; variabilele și datele nu sunt înlocuite. Folosiți o sursă de secret pe câmp. open citește keys, apoi keyEnvs și keyFiles. Preferați stopOnError: true; cu false, un succes ulterior poate ascunde o eroare. Scripturile JSON nu acceptă comenzi ale planificatorului.

{
  "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--sourceFolder de împachetat și criptat.
output / outputContainerPath--outputCalea de ieșire .lbx.
masterPassword--masterParola principală inline.
masterPasswordEnv--master-envCitește parola principală din variabila de mediu.
masterPasswordFile--master-fileCitește parola principală dintr-un fișier text UTF-8.
layers[].algorithm + layers[].key--layerAdaugă ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envAdaugă ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileAdaugă ALGORITHM=FILE.
compression / compress--compressActivează compresia.
padding--paddingAdaugă umplutură random criptată. Unități: B, KB, MB, GB, TB.
paddingBytes--padding-bytesDimensiunea umpluturii în octeți brut.
split / splitSize--splitÎmparte ieșirea în .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesDimensiunea fiecărei părți în octeți brut.
destructionPassword--destruction-passwordParola de distrugere Max-only inline. Introducerea acesteia mai târziu ca parola principală suprascrie containerul imediat.
destructionPasswordEnv--destruction-password-envCitește parola de distrugere Max-only dintr-o variabilă de mediu.
destructionPasswordFile--destruction-password-fileCitește parola de distrugere Max-only dintr-un fișier text UTF-8.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceȘterge folderul sursă după crearea manuală cu succes.
container / containerPath--containerContainer .lbx existent.
keys[]--keyCheie de strat în linie în ordinea originală.
keyEnvs[]--key-envCheie de strat din variabila de mediu.
keyFiles[]--key-fileCheie de strat din fișier text UTF-8.

Rețete de automatizare

Backup criptat al bazei de date

$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

Protecția artefactului CI

.\LockBox.Cli.exe create `
  --source "$env:BUILD_ARTIFACTSTAGINGDIRECTORY" `
  --output "$env:AGENT_TEMPDIRECTORY\protected-artifacts.lbx" `
  --master-env LBX_MASTER `
  --layer-env AES-128-GCM=LBX_L1

Transfer securizat către partener

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

Arhivă pe termen lung

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

Exemplu de fișier batch

@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: copierea mai multor dosare

Salvați scriptul la calea indicată. Creează un container cu nume unic și un jurnal pentru fiecare sursă, se oprește la eroare și păstrează codul de ieșire CLI. AES-128-GCM funcționează în Free; compresia și împărțirea necesită Pro sau 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: copii nesupravegheate

Salvați scriptul Bash cu terminatoare LF. Pregătiți CLI și secretele la căile indicate și transmiteți dosarele sursă ca argumente. Fiecare rulare primește un director propriu. Erorile lasă un jurnal și întorc un cod nenul; sursele se păstrează.

/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

Programarea prin sistemul de operare

Sarcinile lansează scripturile de mai sus; această folosire a create nu necesită Max. Înregistrarea Windows rulează numai cu utilizatorul conectat; configurați rularea deconectată în Planificator dacă este necesar. Adăugați cron în crontab-ul contului de backup după verificarea flock. Ambele exemple rulează la 02:00 local și împiedică suprapunerea rulărilor programate. Verificați permisiunile și testați manual.

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: administrarea planificatorului

Creați contul de serviciu lockbox cu drepturile necesare, activați Max pentru el și pregătiți fișierul separat de parolă UTF-8 jobs.txt. add adaugă, nu actualizează: folosiți o dată pe sarcină. Rulați un proces pe fișier de sarcini și reporniți după modificări. JSON-ul de stare nu reface istoricul: repetările restante sunt omise, o sarcină once restantă poate rula din nou. Pentru lansări periodice ale sistemului folosiți create în loc de run-once repetat. Planificatorul reutilizează numele de ieșire.

/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

Referință comenzi

ComandăScopAliase
helpArată ajutorul din consolă.--help, -h, ?
device-idTipărește ID-ul dispozitivului PC pentru emiterea licenței.deviceid, machine-id
licenseArată ediția curentă și calea licenței.license-status, status
activateInstalează o cheie de licență legată de dispozitiv.activation
algorithmsListează algoritmii și edițiile minime.profiles, list-algorithms
keygenGenerează chei aleatorii.generate-key, generate-keys
createCreează un container criptat.encrypt
openExtrage containerul criptat.decrypt, extract
scheduleGestionează și rulează sarcini programate.scheduler, scheduled-tasks
scriptRulează fișier de automatizare JSON.--script

Creează opțiuni

--source, -sFolder de împachetat și criptat.
--output, -oCalea de ieșire .lbx.
--masterParola principală inline.
--master-envCitește parola principală din variabila de mediu.
--master-fileCitește parola principală dintr-un fișier text UTF-8.
--layerAdaugă ALGORITHM=KEY.
--layer-envAdaugă ALGORITHM=ENV.
--layer-fileAdaugă ALGORITHM=FILE.
--algorithm, -aFormă alternativă a algoritmului asociată cu --key, --key-env sau --key-file.
--compressActivează compresia.
--no-compressDezactivează compresia dacă a fost activată anterior.
--paddingAdaugă umplutură random criptată. Unități: B, KB, MB, GB, TB.
--padding-bytesDimensiunea umpluturii în octeți brut.
--splitÎmparte ieșirea în .lbx, .lbx1, .lbx2.
--split-bytesDimensiunea fiecărei părți în octeți brut.
--no-splitDezactivează împărțirea dacă a fost setată anterior.
--destruction-passwordParola de distrugere Max-only inline. Introducerea acesteia mai târziu ca parola principală suprascrie containerul imediat.
--destruction-password-envCitește parola de distrugere Max-only dintr-o variabilă de mediu.
--destruction-password-fileCitește parola de distrugere Max-only dintr-un fișier text UTF-8.
--delete-sourceȘterge folderul sursă după crearea manuală cu succes.

Opțiuni de deschidere

--container, -cContainer .lbx existent.
--output, -oFolder de extragere.
--master, --master-env, --master-fileSursa parolei principale.
--key, -kCheie de strat în linie în ordinea originală.
--key-envCheie de strat din variabila de mediu.
--key-fileCheie de strat din fișier text UTF-8.
Permis pentru fluxurile de lucru cu parole de distrugere. Extragerea normală eșuează după citirea metadatelor dacă lipsesc cheile necesare.

Opțiuni programator

schedule addAdaugă o sarcină la .lbxjobs criptat.
schedule listAfișează sarcinile salvate.
schedule runRulează un lucrător de durată lungă.
schedule run-onceRulează sarcinile scadente o dată și ieși.
schedule statusCitește JSON-ul stării curente de execuție.
--tasks, --fileCalea fișierului de sarcini criptat.
--password, --password-env, --password-fileParola pentru fișierul de sarcini.
--state, --status-fileCalea JSON-ului stării de execuție.
--nameNumele sarcinii pentru schedule add.
--frequency, --everyFrecvența sarcinii.
--start, --start-atData/ora de început locală.
--delete-source-contentsȘterge conținutul folderului sursă original după rularea programată cu succes.
--poll-secondsIntervalul de interogare al lucrătorului pentru schedule run.

--language sau --lang alege limba consolei; --quiet ascunde progresul obișnuit, însă erorile merg în continuare la fluxul standard de erori. Ctrl+C solicită anularea și returnează 1. Codul 2 indică sintaxă nevalidă, iar 3 o funcție de creare indisponibilă în ediția curentă. Codul 0 este returnat și la activarea intenționată a parolei de distrugere, deci nu dovedește singur extragerea fișierelor. Verificați rezultatul așteptat înainte de următorii pași de automatizare.

Coduri de ieșire și monitorizare

schedule run-once poate întoarce zero chiar cu sarcini eșuate; schedule status și fără stare. Verificați savedAt, lastSuccessAt și lastError; [OK] poate însemna doar Ready. Monitorul așteaptă copii zilnice, verificări la 30 de secunde și succes în 26 de ore. Adaptați pragurile. Stările JSON sunt numerice; --quiet ascunde ieșirea obișnuită a create/open reușite.

$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

Depanare

De ce primesc codul de ieșire 3?

Ediția curentă nu permite funcția solicitată: prea multe straturi, compresie, umplere crypto, împărțire, planificator sau un algoritm mai puternic.

De ce eșuează extragerea cu o eroare de tag de autentificare?

Parola principală, cheia stratului, ordinea straturilor sau fișierul container este greșită. Pentru containere împărțite, verificați de asemenea că toate părțile sunt prezente în același folder.

De ce planificatorul nu rulează după ce închid consola?

schedule run este procesul worker. Țineți-l deschis sau lansați-l din Windows Task Scheduler sau un wrapper de serviciu.

De ce adăugarea în programare eșuează imediat?

Planificatorul validează licența, folderul sursă, calea de ieșire, algoritmii, parolele și spațiul disponibil pe disc înainte de a salva sarcina.

Pot stoca parolele planificatorului în fișierul .lbxjobs?

Da. Fișierul .lbxjobs este criptat cu parola fișierului planificator și stochează metadatele complete ale sarcinii, inclusiv parolele de criptare și cheile straturilor.

Ce se întâmplă dacă o rulare programată se suprapune cu rularea anterioară?

Noul eveniment este sărit, sarcina raportează un status eșuat cu o explicație, iar rulările viitoare continuă după ce rularea activă se încheie.

Cum evit să pun secrete în istoricul shell-ului?

Folosiți --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env și --password-file.