Повратак у ЛокБока

LockBox CLI dokumentacija

LockBox CLI je automatska verzija samo na engleskom jeziku za skriptovano šifrovanje, ekstrakciju, aktivaciju, zakazane enkriptovane rezervne kopije i CI/CD radne tokove. Koristi isti model licence vezan za uređaj kao desktop aplikacija.

Брзи почетак

Ставите LockBox.Cli.exe у фасциклу која је укључена у PATH, или позовите је пуним путем. Маркер --cli је прихваћен ради компатибилности али није обавезан у верзији само за CLI.

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

Минималан радни ток за креирање и отварање:

$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 користи исте команде уз путање са косом цртом и бинарни фајл без .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

Инсталација и провера CLI-ја

Распакујте ZIP за свој систем и процесор. .NET је укључен. Упоредите хеш са SHA256SUMS.txt. Поставите CLI на наведену апсолутну путању и проверите помоћ и лиценцу налогом за резервне копије.

Linux захтева и системске библиотеке дистрибуције, укључујући ICU и OpenSSL; укључени .NET их не испоручује. У Windows-у важећа правила извршавања морају дозвољавати 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

Фасцикле, путање и простор

Прилагодите путање. Изворна фасцикла не сме бити празна, а контејнер мора бити изван ње. Исти излазни назив замењује претходни контејнер и делове. Обезбедите привремени простор уз контејнер и копију извора за заказане задатке. Јединице се заснивају на 1024; попуна додаје бајтове.

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

Припрема датотека са тајнама

Тајне генеришите једном, сачувајте заштићену копију и ограничите приступ датотекама. Примери одбијају замену постојећих кључева. UTF-8 датотеке чувају размаке, али уклањају завршне преломе редова. За старе копије сачувајте изворне кључеве.

$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

Активирање и статус лиценце

Лиценцни кључ је везан за ID уређаја који штампа иста CLI верзија. Ако се лиценца копира на други рачунар, LockBox је одбија и прелази на Free.

Windows проверава постојеће локације података апликације LockBox. Linux чува активирање у $XDG_CONFIG_HOME/lockbox/.lockbox.license, затим ~/.config/lockbox/.lockbox.license, са ~/.lockbox/.lockbox.license као резервом.

Добити ID уређаја

.\LockBox.Cli.exe device-id

Проверити тренутно издање

.\LockBox.Cli.exe license

Активирати из лиценцног фајла

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

Активирати из променљиве окружења

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

Активирати инлајн

Инлајн активирање ради, али може процурити кроз историју shell-а или логове процеса.

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

Активирање на Linux-у

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

Руковање тајнама

Преферирајте променљиве окружења или фајлове. Inline тајне су корисне само за тестирање. Главне лозинке и кључеви слојева морају бити очувани: без њих контејнер не може бити отворен.

СврхаДиректноОкружењеФајл
Главна лозинка--master value--master-env ENV--master-file path
Креирање кључа слоја--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Отварање кључа слоја--key value--key-env ENV--key-file path
Лозинка за фајл распореда--password value--password-env ENV--password-file path
Лозинка за уништавање контејнера--destruction-password value--destruction-password-env ENV--destruction-password-file path
Лиценцни кључ--license value--license-env ENV--license-file path

Тајне на бази фајлова

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

Алгоритми и генерисање кључева

Користите algorithms да видите све подржане профиле и минималне издање. Користите keygen за кључеве слојева.

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

Подржани алтернативни командни називи:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Креирање контејнера

create пакује изворни фолдер, примењује опционалну компресију и попуњавање, шифрује садржај једним или више слојева, и записује .lbx контејнер.

Потребне опције

  • --source или -s: изворни фолдер.
  • --output или -o: излазна путања до .lbx.
  • --master, --master-env или --master-file.
  • Најмање један слој: --layer, --layer-env или --layer-file.

Минимални AES контејнер

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

Компримовани контејнер

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

Крипто попуњавање

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

Подела контејнера на делове

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

Први део задржава .lbx. Додатни делови користе .lbx1, .lbx2 и тако даље. Сви делови треба да буду у истом фолдеру.

Пример деветосложног Max контејнера

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

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

Алтернативна синтакса алгоритма/клуча

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

Брисање извора након успешног ручног креирања

.\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 брише изворни фолдер само након што контејнер буде успешно креиран. Распоред извршавања има другу опцију: --delete-source-contents.

Лозинка за уништавање контејнера

Макс издање може додати посебну лозинку за уништавање контејнера. Ако се та лозинка касније унесе као главна лозинка, LockBox одмах преписује контејнер без потврде. Ово је намењено за сценарије под принудом. Чувајте је одвојено од праве главне лозинке.

Команда проверава слободан простор на диску, шифрује оригиналне податке контејнера са новим случајним секретом и AES-256-GCM у привремену датотеку, нормализује резултат до тачне оригиналне величине, замењује оригиналну датотеку и заборавља случајни секрет. За подељене контејнере, сваки .lbx, .lbx1, .lbx2 део у истом фолдеру је замењен при очувању оригиналних величина делова.

Креирање са лозинком за уништавање

$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

Покретање уништавања без кључева слоја

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

Линукс тригер

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

Након успешног уништавања, контејнер више није важећа LockBox датотека. CLI враћа излазни код 0 јер је захтевана акција уништавања успешно завршена.

Отвори контејнере

open извлачи контејнер у фолдер за излаз. За нормално извлачење, кључеви слоја морају бити прослеђени у истом редоследу коришћеном приликом креирања. За workflow са лозинком за уништавање, потребан је само пут до контејнера, пут за излаз и лозинка за уништавање као главна лозинка.

Отвори једнослојни контејнер

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

Отвори подељени контејнер

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

Отвори више-слојни контејнер

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

Алијаси

open
decrypt
extract

Провера копије враћањем

Направите мали пробни report.csv. Распакујте у нову фасциклу која задржава име изворне фасцикле. Чувајте све делове заједно и упоредите са непромењеним извором. Распакивање захтева привремени простор за писање уз контејнер. Заштитите и враћене нешифроване датотеке.

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

Распоред

Наредбе за распоред су доступне у Max издању. Оне чувају све метаподатке задатка у шифрованом .lbxjobs фајлу, укључујући изворну путању, путању за излаз, лозинке, лозинку за уништавање, кључеве слојева, компресију, попуњавање, дељење и подешавање брисања садржаја извора.

Распоредни задаци се извршавају само док LockBox.Cli.exe schedule run ради. Користите Windows Task Scheduler, Linux systemd, cron, сервисни омотач или дуготрајну конзолну сесију ако желите да се радник аутоматски покрене после поновног покретања.

Вредности учесталости

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

Додај дневни шифровани задатак резервне копије

$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

Додај задатак који брише садржај извора након успешног извршења

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

Додај месечну архиву са попуњавањем и подељеним деловима

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

Прикажи сачуване задатке

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

Покрени радника распореда

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

Покрени дужне задатке једном и изађи

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

Прикажи последњи статус извршавања

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

Ознаке статуса су [OK], [RUNNING], и [FAILED]. Непрослеђени задатак садржи разлог и упућује корисника да контактира подршку ако се проблем понавља.

JSON скрипте

Користите --script када радни ток има неколико корака. Покретач скрипти подржава create, open, keygen, algorithms, device-id, license, и activate.

Креирај и отвори у једној скрипти

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

Настави након неуспелог корака

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

Активирај из скрипте

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

JSON поља и правила извршавања

Табела повезује create поља и open низове кључева са CLI опцијама. Релативне путање почињу у радном директоријуму процеса; променљиве и датуми се не замењују. Користите један извор тајне по пољу. open чита keys, затим keyEnvs и keyFiles. Изаберите stopOnError: true; са false каснији успех може сакрити грешку. JSON скрипте не подржавају команде планера.

{
  "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--sourceФасцикла за паковање и шифровање.
output / outputContainerPath--outputИзлазна .lbx путања.
masterPassword--masterИнлајн главна лозинка.
masterPasswordEnv--master-envУчитај главну лозинку из променљиве окружења.
masterPasswordFile--master-fileУчитај главну лозинку из UTF-8 текстуалне датотеке.
layers[].algorithm + layers[].key--layerДодај ALGORITHM=KEY.
layers[].algorithm + layers[].keyEnv--layer-envДодај ALGORITHM=ENV.
layers[].algorithm + layers[].keyFile--layer-fileДодај ALGORITHM=FILE.
compression / compress--compressОмогући компресију.
padding--paddingДодај шифровани насумични подметач. Јединице: B, KB, MB, GB, TB.
paddingBytes--padding-bytesВеличина подметача у сићим бајтовима.
split / splitSize--splitПодели излаз у .lbx, .lbx1, .lbx2.
splitPartSizeBytes--split-bytesВеличина деонице у сићим бајтовима.
destructionPassword--destruction-passwordСамо-уништавајућа лозинка за инлајн. Уношење ове лозинке касније као главне одмах пребрисује контејнер.
destructionPasswordEnv--destruction-password-envУчитај само-уништавајућу лозинку из променљиве окружења.
destructionPasswordFile--destruction-password-fileУчитај само-уништавајућу лозинку из UTF-8 текстуалне датотеке.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceОбриши изворну фасциклу након успешног ручног креирања.
container / containerPath--containerПостојећа .lbx контејнер.
keys[]--keyInline кључ слоја у оригиналном редоследу.
keyEnvs[]--key-envКључ слоја из променљиве окружења.
keyFiles[]--key-fileКључ слоја из UTF-8 текстуалне датотеке.

Рецепти аутоматизације

Бекуп шифроване базе података

$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 артефаката

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

Сигуран пренос партнеру

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

Дугорочни архив

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

Пример баџ фајла

@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: копирање више фасцикли

Сачувајте скрипту на наведеној путањи. За сваки извор прави јединствено назван контејнер и дневник, стаје при грешци и чува излазни код CLI-ја. AES-128-GCM ради у Free; компресија и дељење захтевају Pro или 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: копије без надзора

Сачувајте Bash скрипту са LF завршецима редова. Припремите CLI и тајне на наведеним путањама, изворне фасцикле проследите као аргументе. Свако покретање добија свој директоријум. Грешке остављају дневник и враћају ненулти код; извори остају.

/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

Распоред оперативног система

Задаци покрећу претходне скрипте; таква употреба create не захтева Max. Windows регистрација ради само док је корисник пријављен; по потреби подесите рад без пријаве у Планеру задатака. Додајте cron у crontab налога за копирање након провере flock. Оба примера раде у 02:00 по локалном времену и спречавају преклапање заказаних покретања. Проверите права и тестирајте ручно.

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: управљање планером

Направите сервисни налог lockbox са потребним правима, активирајте Max за њега и припремите посебну UTF-8 датотеку лозинке jobs.txt. add додаје, не ажурира: користите једном по задатку. Покрените један процес по датотеци задатака и поново га покрените после измена. Статусни JSON не обнавља историју: пропуштена понављања се прескачу, закаснели задатак once може да се понови. За периодична системска покретања користите create уместо понављаног run-once. Планер поново користи излазни назив.

/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

Референца команди

КомандаСврхаПсеудоними
helpПрикажи помоћ у конзоли.--help, -h, ?
device-idПрикажи ID уређаја рачунара за издавање лиценце.deviceid, machine-id
licenseПрикажи тренутно издање и путању до лиценце.license-status, status
activateИнсталирај лиценцни кључ везан за уређај.activation
algorithmsЛиста алгоритама и минималних издања.profiles, list-algorithms
keygenГенериши насумичне кључеве.generate-key, generate-keys
createНаправи шифровани контејнер.encrypt
openИзвучи шифровани контејнер.decrypt, extract
scheduleУправљај и извршавај заказане задатке.scheduler, scheduled-tasks
scriptИзврши JSON аутоматизациони фајл.--script

Опције креирања

--source, -sФасцикла за паковање и шифровање.
--output, -oИзлазна .lbx путања.
--masterИнлајн главна лозинка.
--master-envУчитај главну лозинку из променљиве окружења.
--master-fileУчитај главну лозинку из UTF-8 текстуалне датотеке.
--layerДодај ALGORITHM=KEY.
--layer-envДодај ALGORITHM=ENV.
--layer-fileДодај ALGORITHM=FILE.
--algorithm, -aАлтернативни алгоритам као пара са --key, --key-env, или --key-file.
--compressОмогући компресију.
--no-compressОнемогући компресију ако је раније омогућена.
--paddingДодај шифровани насумични подметач. Јединице: B, KB, MB, GB, TB.
--padding-bytesВеличина подметача у сићим бајтовима.
--splitПодели излаз у .lbx, .lbx1, .lbx2.
--split-bytesВеличина деонице у сићим бајтовима.
--no-splitОнемогући поделу ако је раније омогућена.
--destruction-passwordСамо-уништавајућа лозинка за инлајн. Уношење ове лозинке касније као главне одмах пребрисује контејнер.
--destruction-password-envУчитај само-уништавајућу лозинку из променљиве окружења.
--destruction-password-fileУчитај само-уништавајућу лозинку из UTF-8 текстуалне датотеке.
--delete-sourceОбриши изворну фасциклу након успешног ручног креирања.

Опције за отварање

--container, -cПостојећа .lbx контејнер.
--output, -oФолдер за екстракцију.
--master, --master-env, --master-fileИзвор главне лозинке.
--key, -kInline кључ слоја у оригиналном редоследу.
--key-envКључ слоја из променљиве окружења.
--key-fileКључ слоја из UTF-8 текстуалне датотеке.
Дозвољено за радне токове са лозинком за уништавање. Нормална екстракција не успева након читања метаподатака ако недостају потребни кључеви.

Опције планирача

schedule addДодај задатак у шифровани .lbxjobs.
schedule listПрикажи сачуване задатке.
schedule runПокрени дуготрајног радника.
schedule run-onceИзврши задатке који су доспели једном и изађи.
schedule statusПрочитај најновији JSON статус извођења.
--tasks, --fileПутања шифроване датотеке задатака.
--password, --password-env, --password-fileЛозинка за датотеку задатка.
--state, --status-fileПутања JSON статуса извођења.
--nameИме задатка за schedule add.
--frequency, --everyУчесталост задатка.
--start, --start-atЛокални датум/време почетка.
--delete-source-contentsОбриши садржај оригиналног изворног фолдера након успешног покретања по распореду.
--poll-secondsИнтервал анкете радника за schedule run.

Користите --language или --lang за избор језика конзоле и --quiet за скривање уобичајеног приказа напретка; грешке се и даље исписују у стандардни ток за грешке. Ctrl+C захтева отказивање и враћа код 1. Код 2 значи неисправну синтаксу команде; код 3 значи да функција прављења није доступна у тренутном издању. Код 0 обухвата и намерно активирану лозинку за уништавање, па сам по себи не доказује да су датотеке издвојене. Проверите очекивани резултат пре следећих корака аутоматизације.

Излазни кодови и надзор

schedule run-once може вратити нулу и код неуспелих задатака; schedule status такође без статуса. Проверавајте savedAt, lastSuccessAt и lastError; [OK] може значити само Ready. Монитор очекује дневне копије, провере сваких 30 секунди и успех унутар 26 сати. Прилагодите прагове. JSON стања су бројеви; --quiet уклања уобичајени испис успешних 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

Решавање проблема

Зашто добијам код изласка 3?

Тренутно издање не дозвољава тражену функцију: превише слојева, компресија, крипто пуњење, дељење, распоред, или јачи алгоритам.

Зашто извлачење не успева са грешком везаном за authentication tag?

Главна лозинка, кључ слоја, редослед слојева или контејнер датотека је погрешна. За подељене контејнере, проверите да ли је сваки део присутан у истом фолдеру.

Зашто распоред не ради после затварања конзоле?

schedule run је радни процес. Оставите га отвореним или га покрените преко Windows Task Scheduler-а или сервиса.

Зашто команда schedule add одмах не успева?

Распоред проверава лиценцу, изворни фолдер, излазну путању, алгоритме, лозинке и доступан простор на диску пре него што сачува задатак.

Могу ли да чувам лозинке распоређивача у .lbxjobs датотеци?

Да. .lbxjobs датотека је шифрована лозинком за распоред и чува све метаподатке задатка, укључујући лозинке за шифровање и кључеве слојева.

Шта се дешава ако заказано извршавање преклапа претходно?

Нови догађај се прескаче, задатак извештава статус неуспеха са објашњењем, а будући извршавања се настављају након што активни заврши.

Како да избегнем појављивање тајни у историји shell-а?

Користите --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env, и --password-file.