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 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.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 $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"Распоред
Наредбе за распоред су доступне у 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.jsonsource / 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[] | --key | Inline кључ слоја у оригиналном редоследу. |
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 OKWindows: копирање више фасцикли
Сачувајте скрипту на наведеној путањи. За сваки извор прави јединствено назван контејнер и дневник, стаје при грешци и чува излазни код 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
$LASTEXITCODELinux: копије без надзора
Сачувајте 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 -e0 2 * * * /usr/bin/flock -n /srv/lockbox/backup.lock /bin/bash /srv/lockbox/backup.sh >> /srv/lockbox/cron.log 2>&1Max: управљање планером
Направите сервисни налог 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.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.jsonРеференца команди
| Команда | Сврха | Псеудоними |
|---|---|---|
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, -k | Inline кључ слоја у оригиналном редоследу. |
--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.