Обратно в LockBox

Документация за 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 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

Инлайн активиране

Инлайн активирането работи, но може да изтече чрез историята на конзолата или логовете на процеса.

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

Linux активиране

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 $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[]--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 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, -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.