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_L1Instalarea ș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 SHA256uname -m
unzip LockBox-Cli-linux-x64.zip -d ./lockbox-cli
chmod +x ./lockbox-cli/LockBox.Cli
./lockbox-cli/LockBox.Cli --help
./lockbox-cli/LockBox.Cli license
sha256sum LockBox-Cli-linux-x64.zipWindows x64 -> LockBox-Cli-win-x64.zip
Windows x86 -> LockBox-Cli-win-x86.zip
Windows ARM64 -> LockBox-Cli-win-arm64.zip
Linux x86_64 -> LockBox-Cli-linux-x64.zip
Linux aarch64 -> LockBox-Cli-linux-arm64.zip
Linux armv7l -> LockBox-Cli-linux-arm.zipDosare, 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.txtPregă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.txtActivare ș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 licenseGestionarea 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.
| Scop | Direct | Mediu | Fiș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.txtAlgoritmi ș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-keysCreează 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
--sourcesau-s: folder sursă.--outputsau-o: calea de ieșire pentru.lbx.--master,--master-envsau--master-file.- Cel puțin un strat:
--layer,--layer-envsau--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
extractVerificarea 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 $restoreset -eu
umask 077
mkdir -p /restore
restore=$(mktemp -d /restore/check-XXXXXX)
/opt/lockbox/LockBox.Cli open --container /backup/data.lbx --output "$restore" --master-file /srv/lockbox/secrets/master.txt --key-file /srv/lockbox/secrets/layer1.txt
cmp /srv/data/report.csv "$restore/data/report.csv"
sha256sum /srv/data/report.csv "$restore/data/report.csv"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.jsonsource / sourceFolder / sourceFolderPath | --source | Folder de împachetat și criptat. |
output / outputContainerPath | --output | Calea de ieșire .lbx. |
masterPassword | --master | Parola principală inline. |
masterPasswordEnv | --master-env | Citește parola principală din variabila de mediu. |
masterPasswordFile | --master-file | Citește parola principală dintr-un fișier text UTF-8. |
layers[].algorithm + layers[].key | --layer | Adaugă ALGORITHM=KEY. |
layers[].algorithm + layers[].keyEnv | --layer-env | Adaugă ALGORITHM=ENV. |
layers[].algorithm + layers[].keyFile | --layer-file | Adaugă ALGORITHM=FILE. |
compression / compress | --compress | Activează compresia. |
padding | --padding | Adaugă umplutură random criptată. Unități: B, KB, MB, GB, TB. |
paddingBytes | --padding-bytes | Dimensiunea umpluturii în octeți brut. |
split / splitSize | --split | Împarte ieșirea în .lbx, .lbx1, .lbx2. |
splitPartSizeBytes | --split-bytes | Dimensiunea fiecărei părți în octeți brut. |
destructionPassword | --destruction-password | Parola de distrugere Max-only inline. Introducerea acesteia mai târziu ca parola principală suprascrie containerul imediat. |
destructionPasswordEnv | --destruction-password-env | Citește parola de distrugere Max-only dintr-o variabilă de mediu. |
destructionPasswordFile | --destruction-password-file | Citeș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 | --container | Container .lbx existent. |
keys[] | --key | Cheie de strat în linie în ordinea originală. |
keyEnvs[] | --key-env | Cheie de strat din variabila de mediu. |
keyFiles[] | --key-file | Cheie 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 OKWindows: 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
$LASTEXITCODELinux: 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/reportsProgramarea 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 -e0 2 * * * /usr/bin/flock -n /srv/lockbox/backup.lock /bin/bash /srv/lockbox/backup.sh >> /srv/lockbox/cron.log 2>&1Max: 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.targetsudo systemctl daemon-reload
sudo systemctl enable --now lockbox-scheduler.service
systemctl status lockbox-scheduler.service
journalctl -u lockbox-scheduler.service -n 50 --no-pager
/opt/lockbox/LockBox.Cli schedule status --state /srv/lockbox/jobs.status.jsonReferință comenzi
| Comandă | Scop | Aliase |
|---|---|---|
help | Arată ajutorul din consolă. | --help, -h, ? |
device-id | Tipărește ID-ul dispozitivului PC pentru emiterea licenței. | deviceid, machine-id |
license | Arată ediția curentă și calea licenței. | license-status, status |
activate | Instalează o cheie de licență legată de dispozitiv. | activation |
algorithms | Listează algoritmii și edițiile minime. | profiles, list-algorithms |
keygen | Generează chei aleatorii. | generate-key, generate-keys |
create | Creează un container criptat. | encrypt |
open | Extrage containerul criptat. | decrypt, extract |
schedule | Gestionează și rulează sarcini programate. | scheduler, scheduled-tasks |
script | Rulează fișier de automatizare JSON. | --script |
Creează opțiuni
--source, -s | Folder de împachetat și criptat. |
--output, -o | Calea de ieșire .lbx. |
--master | Parola principală inline. |
--master-env | Citește parola principală din variabila de mediu. |
--master-file | Citește parola principală dintr-un fișier text UTF-8. |
--layer | Adaugă ALGORITHM=KEY. |
--layer-env | Adaugă ALGORITHM=ENV. |
--layer-file | Adaugă ALGORITHM=FILE. |
--algorithm, -a | Formă alternativă a algoritmului asociată cu --key, --key-env sau --key-file. |
--compress | Activează compresia. |
--no-compress | Dezactivează compresia dacă a fost activată anterior. |
--padding | Adaugă umplutură random criptată. Unități: B, KB, MB, GB, TB. |
--padding-bytes | Dimensiunea umpluturii în octeți brut. |
--split | Împarte ieșirea în .lbx, .lbx1, .lbx2. |
--split-bytes | Dimensiunea fiecărei părți în octeți brut. |
--no-split | Dezactivează împărțirea dacă a fost setată anterior. |
--destruction-password | Parola de distrugere Max-only inline. Introducerea acesteia mai târziu ca parola principală suprascrie containerul imediat. |
--destruction-password-env | Citește parola de distrugere Max-only dintr-o variabilă de mediu. |
--destruction-password-file | Citeș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, -c | Container .lbx existent. |
--output, -o | Folder de extragere. |
--master, --master-env, --master-file | Sursa parolei principale. |
--key, -k | Cheie de strat în linie în ordinea originală. |
--key-env | Cheie de strat din variabila de mediu. |
--key-file | Cheie 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 add | Adaugă o sarcină la .lbxjobs criptat. |
schedule list | Afișează sarcinile salvate. |
schedule run | Rulează un lucrător de durată lungă. |
schedule run-once | Rulează sarcinile scadente o dată și ieși. |
schedule status | Citește JSON-ul stării curente de execuție. |
--tasks, --file | Calea fișierului de sarcini criptat. |
--password, --password-env, --password-file | Parola pentru fișierul de sarcini. |
--state, --status-file | Calea JSON-ului stării de execuție. |
--name | Numele sarcinii pentru schedule add. |
--frequency, --every | Frecvența sarcinii. |
--start, --start-at | Data/ora de început locală. |
--delete-source-contents | Șterge conținutul folderului sursă original după rularea programată cu succes. |
--poll-seconds | Intervalul 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 -> FailedDepanare
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.