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

Активтеу және лицензия күйі

Лицензия кілті сол CLI нұсқасы шығаратын құрылғы ID-сына байланысты. Егер лицензия басқа компьютерге көшірілсе, 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

Құпияларды өңдеу

Қоршаған орта айнымалыларын немесе файлдарды пайдаланыңыз. Жолға енгізілген құпия мәліметтер тек тестілеу үшін пайдалы. Негізгі парольдер мен қабат кілттерін сақтау керек: оларсыз контейнерді аша алмайсыз.

МақсатЖолға енгізілгенҚоршаған ортаФайл
Негізгі пароль--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--layerALGORITHM=KEY қосу.
layers[].algorithm + layers[].keyEnv--layer-envALGORITHM=ENV қосу.
layers[].algorithm + layers[].keyFile--layer-fileALGORITHM=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Тек-Max ішкі жою құпия сөзі. Кейін оны негізгі құпия сөз ретінде енгізу контейнерді дереу қайта жазады.
destructionPasswordEnv--destruction-password-envТек-Max жою құпия сөзін қоршаған орта айнымалыларынан оқу.
destructionPasswordFile--destruction-password-fileТек-Max жою құпия сөзін UTF-8 мәтіндік файлдан оқу.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceҚолмен сәтті жасау соңында бастапқы қалтаны өшіру.
container / containerPath--containerБар .lbx контейнері.
keys[]--keyБастапқы реттегі кірістірілген қабат кілті.
keyEnvs[]--key-envҚабат кілті ортаның айнымалысынан.
keyFiles[]--key-fileUTF-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 тіркеуі тек пайдаланушы кіргенде орындалады; қажет болса Тапсырма жоспарлағышында кірмей орындауды баптаңыз. flock барын тексеріп, көшіру тіркелгісінің crontab файлына cron қосыңыз. Екі мысал жергілікті 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 қайта орындалуы мүмкін. Жүйелік мерзімді іске қосуға қайталанатын run-once орнына create қолданыңыз. Жоспарлағыш шығыс атауын қайта пайдаланады.

/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
scriptJSON автоматтандыру файлын іске қосады.--script

Опциялар жасау

--source, -sҚаптап, шифрлайтын қалта.
--output, -oШығарылатын .lbx жолы.
--masterЖол ішіндегі негізгі құпия сөз.
--master-envНегізгі құпия сөзді қоршаған орта айнымалыларынан оқу.
--master-fileНегізгі құпия сөзді UTF-8 мәтіндік файлдан оқу.
--layerALGORITHM=KEY қосу.
--layer-envALGORITHM=ENV қосу.
--layer-fileALGORITHM=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Тек-Max ішкі жою құпия сөзі. Кейін оны негізгі құпия сөз ретінде енгізу контейнерді дереу қайта жазады.
--destruction-password-envТек-Max жою құпия сөзін қоршаған орта айнымалыларынан оқу.
--destruction-password-fileТек-Max жою құпия сөзін UTF-8 мәтіндік файлдан оқу.
--delete-sourceҚолмен сәтті жасау соңында бастапқы қалтаны өшіру.

Опцияларды ашу

--container, -cБар .lbx контейнері.
--output, -oШығарылатын қалта.
--master, --master-env, --master-fileНегізгі пароль көзі.
--key, -kБастапқы реттегі кірістірілген қабат кілті.
--key-envҚабат кілті ортаның айнымалысынан.
--key-fileUTF-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 файлы жолы.
--nameschedule add үшін тапсырма атауы.
--frequency, --everyТапсырма жиілігі.
--start, --start-atЖергілікті басталу күні/уақыты.
--delete-source-contentsСәтті жоспарланған іске қосудан кейін бастапқы деректер қалтасының мазмұнын жою.
--poll-secondsschedule 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

Мәселелерді шешу

Неліктен мен exit code 3 аламын?

Ағымдағы нұсқада сұралған функция рұқсат етілмейді: қабаттар саны көп, сығымдау, крипто толтыру, бөлу, жоспарлаушы немесе күшті алгоритм.

Неліктен шығару аутентификация тегінің қатесімен сәтсіз болады?

Негізгі құпиясөз, қабат кілті, қабат тәртібі немесе контейнер файлы дұрыс емес. Бөлу контейнері үшін барлық бөліктің бір қалтада бар екенін тексеріңіз.

Неліктен консольді жауып қойғаннан кейін жоспарлаушы жұмыс істемейді?

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 пайдаланыңыз.