Документация за LockBox CLI
LockBox CLI е английско-единственото автоматизирано издание за скриптирано криптиране, извличане, активиране, планирани криптирани резервни копия и CI/CD работни потоци. То използва същия модел на лиценз, привързан към устройството, както настолната апликация.
Бърз старт
Поставете 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
Инлайн активиране
Инлайн активирането работи, но може да изтече чрез историята на конзолата или логовете на процеса.
.\LockBox.Cli.exe activate --license "LBX-LIC-..."
Linux активиране
export LBX_LICENSE="LBX-LIC-..."
./LockBox.Cli activate --license-env LBX_LICENSE
./LockBox.Cli licenseУправление на тайни
Предпочитайте променливи на средата или файлове. Тайните в реда на кода са полезни само за тестване. Главните пароли и ключовете на слоевете трябва да се запазят: без тях контейнерът не може да бъде отворен.
| Цел | В реда на кода | Среда | Файл |
|---|---|---|---|
| Главна парола | --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.
Парола за унищожаване на контейнера
Max изданието може да добави отделна парола за унищожаване на контейнер. Ако тази парола бъде въведена по-късно като главна парола, 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_DESTROYLinux активиране
export LBX_DESTROY="pressure-password"
./LockBox.Cli open \
--container "/backup/data.lbx" \
--output "/restore" \
--master-env LBX_DESTROYСлед успешно унищожаване контейнерът вече не е валиден LockBox файл. CLI връща код за изход 0, защото поисканото действие за унищожаване е успешно завършено.
Отваряне на контейнери
open извлича контейнер в изходната папка. За нормално извличане, ключовете на слоевете трябва да бъдат предоставени в същия ред, използван при създаването. За работа с парола за унищожаване са необходими само пътят до контейнера, пътят за изход и паролата за унищожаване като главна парола.
Отваряне на контейнер с един слой
.\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 | Вграден ключ на слоя в оригиналния ред. |
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 | Вграден ключ на слоя в оригиналния ред. |
--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?
Текущото издание не позволява желаната функция: твърде много слоеве, компресия, крипто подложка, разделяне, планиране или по-силен алгоритъм.
Защо извличането неуспява с грешка за маркер за автентикация?
Основната парола, ключът на слоя, редът на слоевете или контейнерният файл са грешни. За разделени контейнери също проверете дали всяка част е налична в една и съща папка.
Защо планирането не се изпълнява след като затворя конзолата?
schedule run е работният процес. Дръжте го отворен или го стартирайте от Windows Task Scheduler или чрез услуга.
Защо командата за добавяне на планиране се проваля веднага?
Планиращият проверява лиценз, изходна папка, път за извеждане, алгоритми, пароли и налично дисково пространство преди запазването на задачата.
Мога ли да съхранявам пароли за планиране вътре в .lbxjobs файла?
Да. Файлът .lbxjobs е криптиран с паролата на планиращия файл и съхранява пълни метаданни за задачите, включително пароли за криптиране и ключове на слоеве.
Какво се случва, ако планираното изпълнение се припокрие с предишното?
Новото събитие се пропуска, задачата отчита неуспешен статус с обяснение и бъдещите изпълнения продължават след като активното изпълнение приключи.
Как да избегна съхраняване на тайни в историята на командния ред?
Използвайте --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env и --password-file.