LockBox'a geri dön

LockBox CLI dokümantasyonu

LockBox CLI, şifreleme, çıkarma, aktivasyon, planlanmış şifreli yedeklemeler ve CI/CD iş akışları için İngilizce otomasyon derlemesidir. Masaüstü uygulaması ile aynı cihaz bağlı lisans modelini kullanır.

Hızlı başlangıç

LockBox.Cli.exe dosyasını PATH içine dahil edilmiş bir klasöre koyun, veya tam yol ile çağırın. Uyumluluk için --cli işareti kabul edilir ancak yalnızca CLI sürümünde gerekli değildir.

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

Minimal oluşturma ve açma iş akışı:

$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, eğik çizgi yolları ve .exe ekine sahip olmayan bir ikili ile aynı komutları kullanır:

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 kurulumu ve doğrulaması

Sisteminiz ve işlemciniz için uygun ZIP dosyasını açın. .NET dahildir. Özeti SHA256SUMS.txt ile karşılaştırın. CLI dosyasını aşağıdaki mutlak yola yerleştirin; yardım ve lisansı yedekleme hesabıyla kontrol edin.

Linux ayrıca ICU ve OpenSSL gibi dağıtımın yerel bağımlılıklarını gerektirir; paketlenen .NET bunları sağlamaz. Windows üzerinde geçerli yürütme ilkesi PowerShell betiklerine izin vermelidir.

.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

Klasörler, yollar ve disk alanı

Yolları uyarlayın. Kaynak klasör boş olmamalı, kapsayıcı onun dışında bulunmalıdır. Aynı çıktı adı önceki kapsayıcıyı ve parçalarını değiştirir. Kapsayıcı yanında geçici alan, zamanlanmış görevler için ayrıca kaynak kopyası alanı ayırın. Boyut birimleri 1024 tabanlıdır; dolgu bayt ekler.

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

Gizli bilgi dosyalarını hazırlama

Gizli bilgileri bir kez üretin, korumalı kopyasını saklayın ve dosya erişimini sınırlayın. Örnekler mevcut anahtarları değiştirmez. UTF-8 dosyalarında boşluklar korunur, sondaki satır sonları kaldırılır. Eski yedekler için özgün anahtarları saklayın.

$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

Aktivasyon ve lisans durumu

Lisans anahtarı, aynı CLI sürümü tarafından yazdırılan cihaz kimliğine bağlıdır. Eğer lisans başka bir PC'ye kopyalanırsa, LockBox bunu reddeder ve Free sürüme geçer.

Windows mevcut LockBox uygulama veri konumlarını kontrol eder. Linux aktivasyonu $XDG_CONFIG_HOME/lockbox/.lockbox.license içinde saklar, sonra ~/.config/lockbox/.lockbox.license, ve ~/.lockbox/.lockbox.license bir yedek olarak kullanılır.

Cihaz kimliğini al

.\LockBox.Cli.exe device-id

Mevcut sürümü kontrol et

.\LockBox.Cli.exe license

Lisans dosyasından aktivasyon

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

Ortam değişkeninden aktivasyon

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

Satır içi aktivasyon

Satır içi aktivasyon çalışır, ancak kabuk geçmişi veya süreç günlüklerinden sızabilir.

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

Linux aktivasyonu

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

Gizli bilgi yönetimi

Çevresel değişkenleri veya dosyaları tercih edin. Satır içi gizli bilgiler yalnızca test için kullanışlıdır. Ana şifreler ve katman anahtarları korunmalıdır: bunlar olmadan konteyner açılamaz.

AmacıSatır içiÇevreselDosya
Ana şifre--master value--master-env ENV--master-file path
Katman anahtarı oluştur--layer ALG=KEY--layer-env ALG=ENV--layer-file ALG=FILE
Katman anahtarını aç--key value--key-env ENV--key-file path
Zamanlayıcı dosya şifresi--password value--password-env ENV--password-file path
Konteyner yok etme şifresi--destruction-password value--destruction-password-env ENV--destruction-password-file path
Lisans anahtarı--license value--license-env ENV--license-file path

Dosya tabanlı gizli bilgiler

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

Algoritmalar ve anahtar üretimi

Tüm desteklenen profilleri ve minimum sürümleri görmek için algorithms kullanın. Katman anahtarları için keygen kullanın.

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

Desteklenen komuta takma adları:

algorithms
list-algorithms
profiles

keygen
generate-key
generate-keys

Kapsayıcı oluştur

create bir kaynak klasörü paketler, isteğe bağlı sıkıştırma ve dolgu uygular, yükü bir veya daha fazla katman üzerinden şifreler ve bir .lbx kapsayıcı yazar.

Gerekli seçenekler

  • --source veya -s: kaynak klasör.
  • --output veya -o: çıktı .lbx yolu.
  • --master, --master-env veya --master-file.
  • En az bir katman: --layer, --layer-env veya --layer-file.

Minimal AES kapsayıcı

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

Sıkıştırılmış kapsayıcı

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

Krypto dolgu

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

Kapsayıcıyı parçalara ayır

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

İlk parça .lbx tutar. Ek parçalar .lbx1, .lbx2 ve devam eder. Tüm parçaları aynı klasörde saklayın.

Dokuz katmanlı Max örneği

$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

Alternatif algoritma/anahtar sözdizimi

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

Başarılı manuel oluşturma sonrası kaynağı sil

.\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 sadece kapsayıcı başarıyla oluşturulduktan sonra kaynak klasörü siler. Zamanlayıcının farklı bir seçeneği vardır: --delete-source-contents.

Konteyner yok etme şifresi

Max sürüm, bir konteynere ayrı bir yok etme şifresi ekleyebilir. Bu şifre daha sonra ana şifre olarak girildiğinde, LockBox konteyneri hemen onay almadan üstüne yazar. Bu, zorlayıcı durumlar için tasarlanmıştır. Bunu gerçek ana şifreden ayrı tutun.

Komut, boş disk alanını doğrular, orijinal konteyner verilerini taze bir rastgele gizli anahtar ve AES-256-GCM ile şifreleyerek geçici bir dosyaya yazar, sonucu tam orijinal boyuta normalize eder, orijinal dosyanın yerini alır ve rastgele gizli anahtarı unutur. Bölünmüş konteynerler için, aynı klasördeki her .lbx, .lbx1, .lbx2 parça orijinal parça boyutlarını koruyarak değiştirilir.

Yok etme şifresi ile oluşturma

$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

Katman anahtarsız yok etme tetikleme

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

Linux tetikleme

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

Başarılı yok etmeden sonra konteyner artık geçerli bir LockBox dosyası değildir. CLI, istenen yok etme işlemi başarıyla tamamlandığı için çıkış kodu 0 döndürür.

Konteynerleri açma

open bir konteyneri çıktı klasörüne çıkarır. Normal çıkarma için, katman anahtarları oluşturma sırasında kullanılan sırayla geçirilmelidir. Bir yok etme şifresi iş akışı için ise sadece konteyner yolu, çıktı yolu ve ana şifre olarak yok etme şifresi gereklidir.

Tek katmanlı bir konteyner açma

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

Bölünmüş bir konteyner açma

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

Çok katmanlı bir konteyner açma

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

Takma adlar

open
decrypt
extract

Geri yükleyerek yedeği doğrulama

Küçük bir report.csv test dosyası oluşturun. Yeni klasöre çıkarın; kaynak klasör adı içinde korunur. Tüm parçaları birlikte tutun ve değişmemiş kaynakla karşılaştırın. Çıkarma kapsayıcı yanında yazılabilir geçici alan gerektirir. Geri yüklenen şifresiz dosyaları da koruyun.

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

Zamanlayıcı

Zamanlayıcı komutları Max sürümünde mevcuttur. Kaynak yolu, çıktı yolu, parolalar, yok etme parolası, katman anahtarları, sıkıştırma, dolgu, bölme ve kaynak içeriklerini silme ayarı dahil olmak üzere tüm görev meta verilerini şifreli bir .lbxjobs dosyasında saklar.

Zamanlanmış işler yalnızca LockBox.Cli.exe schedule run çalışırken yürütülür. Yeniden başlatmadan sonra işçinin otomatik olarak başlamasını istiyorsanız Windows Görev Zamanlayıcı, Linux systemd, cron, bir servis kabuğu veya uzun süreli bir konsol oturumu kullanın.

Sıklık değerleri

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

Günlük şifreli yedekleme görevi ekle

$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

Başarı sonrası kaynak klasör içeriğini silen bir görev ekle

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

Dolgu ve bölünmüş parçalar ile aylık arşiv ekle

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

Kayıtlı görevleri listele

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

Zamanlayıcı işçisini çalıştır

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

Gereken görevleri bir kez çalıştır ve çık

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

En son çalışma zaman durumunu göster

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

Durum işaretleri [OK], [RUNNING], ve [FAILED]'dir. Başarısız bir görev, nedeni içerir ve sorun tekrar ederse kullanıcıya destek ile iletişime geçmesini söyler.

JSON betikleri

Bir iş akışında birden fazla adım olduğunda --script kullanın. Betik çalıştırıcı create, open, keygen, algorithms, device-id, license ve activate destekler.

Tek betikte oluştur ve aç

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

Başarısız adımdan sonra devam et

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

Betikten etkinleştir

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

JSON alanları ve yürütme kuralları

Tablo create alanları ve open anahtar dizilerini CLI seçenekleriyle eşleştirir. Göreli yollar sürecin çalışma dizininden başlar; değişkenler ve tarihler genişletilmez. Alan başına tek gizli bilgi kaynağı kullanın. open önce keys, sonra keyEnvs ve keyFiles okur. stopOnError: true tercih edin; false ile sonraki başarı önceki hatayı gizleyebilir. JSON betikleri zamanlayıcı komutlarını desteklemez.

{
  "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--sourcePaketlenecek ve şifrelenecek klasör.
output / outputContainerPath--outputÇıkış .lbx yolu.
masterPassword--masterSatır içi ana parola.
masterPasswordEnv--master-envAna parolayı çevresel değişkenden oku.
masterPasswordFile--master-fileAna parolayı UTF-8 metin dosyasından oku.
layers[].algorithm + layers[].key--layerALGORITHM=KEY ekle.
layers[].algorithm + layers[].keyEnv--layer-envALGORITHM=ENV ekle.
layers[].algorithm + layers[].keyFile--layer-fileALGORITHM=FILE ekle.
compression / compress--compressSıkıştırmayı etkinleştir.
padding--paddingŞifreli rastgele dolgu ekle. Birimler: B, KB, MB, GB, TB.
paddingBytes--padding-bytesDolgu boyutu ham bayt olarak.
split / splitSize--splitÇıkışı .lbx, .lbx1, .lbx2 olarak böl.
splitPartSizeBytes--split-bytesBölüm boyutu ham bayt olarak.
destructionPassword--destruction-passwordSadece maksimum satır içi imha parolası. Bunu daha sonra ana parola olarak girmek, konteyneri hemen üzerine yazar.
destructionPasswordEnv--destruction-password-envSadece maksimum imha parolasını bir çevresel değişkenden oku.
destructionPasswordFile--destruction-password-fileSadece maksimum imha parolasını UTF-8 metin dosyasından oku.
deleteSource / deleteSourceFolderAfterSuccess--delete-sourceBaşarılı manuel oluşturma sonrasında kaynak klasörü sil.
container / containerPath--containerMevcut .lbx konteyneri.
keys[]--keyOrijinal sırada satır içi katman anahtarı.
keyEnvs[]--key-envOrtam değişkeninden katman anahtarı.
keyFiles[]--key-fileUTF-8 metin dosyasından katman anahtarı.

Otomasyon tarifleri

Şifreli veritabanı dökümü yedekleme

$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 artefakt koruması

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

Güvenli ortak transferi

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

Uzun vadeli arşiv

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

Toplu dosya örneği

@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: birden çok klasörü yedekleme

Betiği belirtilen yola kaydedin. Her kaynak için benzersiz adlı kapsayıcı ve günlük oluşturur, hatada durur ve CLI çıkış kodunu korur. AES-128-GCM Free ile çalışır; sıkıştırma ve bölme Pro veya Max gerektirir.

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: gözetimsiz yedekleme

Bash betiğini LF satır sonlarıyla kaydedin. CLI ve gizli bilgileri belirtilen yollarda hazırlayın, kaynak klasörleri bağımsız değişken olarak verin. Her çalıştırma ayrı dizin alır. Hatalar günlük bırakır ve sıfır dışı kod döndürür; kaynaklar korunur.

/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

İşletim sistemiyle zamanlama

Görevler yukarıdaki betikleri başlatır; create komutunun bu kullanımı Max gerektirmez. Windows kaydı yalnızca kullanıcı oturum açmışken çalışır; gerekirse Görev Zamanlayıcı’da oturum kapalı çalışmayı yapılandırın. flock kurulumunu kontrol edip cron satırını yedekleme hesabının crontab dosyasına ekleyin. İki örnek de yerel saatle 02:00’de çalışır ve zamanlanmış çalıştırmaların çakışmasını önler. İzinleri kontrol edin ve elle deneyin.

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: zamanlayıcıyı işletme

Gerekli izinlerle lockbox hizmet hesabını oluşturun, bu hesap için Max etkinleştirin ve ayrı UTF-8 parola dosyası jobs.txt hazırlayın. add ekler, güncellemez: görev başına bir kez kullanın. Görev dosyası başına tek süreç çalıştırın, değişiklikten sonra yeniden başlatın. Durum JSON’u geçmişi geri yüklemez: gecikmiş tekrarlar atlanır, gecikmiş once görevi yeniden çalışabilir. Düzenli sistem başlatmaları için tekrarlanan run-once yerine create kullanın. Zamanlayıcı çıktı adını yeniden kullanır.

/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

Komut referansı

KomutAmacıDiğer adlar
helpKonsol yardımını göster.--help, -h, ?
device-idLisans işlemi için PC cihaz kimliğini yazdır.deviceid, machine-id
licenseMevcut edisyonu ve lisans yolunu göster.license-status, status
activateCihaza bağlı bir lisans anahtarını yükle.activation
algorithmsAlgoritmaları ve minimum edisyonları listele.profiles, list-algorithms
keygenRastgele anahtarlar oluştur.generate-key, generate-keys
createŞifreli kapsayıcı oluştur.encrypt
openŞifreli kapsayıcıyı aç.decrypt, extract
schedulePlanlanmış görevleri yönet ve çalıştır.scheduler, scheduled-tasks
scriptJSON otomasyon dosyasını çalıştır.--script

Seçenekleri oluştur

--source, -sPaketlenecek ve şifrelenecek klasör.
--output, -oÇıkış .lbx yolu.
--masterSatır içi ana parola.
--master-envAna parolayı çevresel değişkenden oku.
--master-fileAna parolayı UTF-8 metin dosyasından oku.
--layerALGORITHM=KEY ekle.
--layer-envALGORITHM=ENV ekle.
--layer-fileALGORITHM=FILE ekle.
--algorithm, -a--key, --key-env veya --key-file ile eşleştirilen alternatif algoritma formu.
--compressSıkıştırmayı etkinleştir.
--no-compressDaha önce ayarlandıysa sıkıştırmayı devre dışı bırak.
--paddingŞifreli rastgele dolgu ekle. Birimler: B, KB, MB, GB, TB.
--padding-bytesDolgu boyutu ham bayt olarak.
--splitÇıkışı .lbx, .lbx1, .lbx2 olarak böl.
--split-bytesBölüm boyutu ham bayt olarak.
--no-splitDaha önce ayarlandıysa bölmeyi devre dışı bırak.
--destruction-passwordSadece maksimum satır içi imha parolası. Bunu daha sonra ana parola olarak girmek, konteyneri hemen üzerine yazar.
--destruction-password-envSadece maksimum imha parolasını bir çevresel değişkenden oku.
--destruction-password-fileSadece maksimum imha parolasını UTF-8 metin dosyasından oku.
--delete-sourceBaşarılı manuel oluşturma sonrasında kaynak klasörü sil.

Seçenekleri aç

--container, -cMevcut .lbx konteyneri.
--output, -oÇıkarma klasörü.
--master, --master-env, --master-fileAna şifre kaynağı.
--key, -kOrijinal sırada satır içi katman anahtarı.
--key-envOrtam değişkeninden katman anahtarı.
--key-fileUTF-8 metin dosyasından katman anahtarı.
Yıkım-şifre iş akışları için izin verilir. Gerekli anahtarlar eksikse normal çıkarma, meta veri okunduktan sonra başarısız olur.

Zamanlayıcı seçenekleri

schedule addŞifreli .lbxjobs için bir görev ekle.
schedule listKayıtlı görevleri göster.
schedule runUzun süreli çalışanı başlat.
schedule run-onceVadesi geçmiş görevleri bir kez çalıştır ve çık.
schedule statusEn son çalışma zamanı durumu JSON'unu oku.
--tasks, --fileŞifreli görev dosyası yolu.
--password, --password-env, --password-fileGörev dosyası için şifre.
--state, --status-fileÇalışma zamanı durum JSON yolu.
--nameschedule add için görev adı.
--frequency, --everyGörev sıklığı.
--start, --start-atYerel başlangıç tarihi/saat.
--delete-source-contentsBaşarılı zamanlanmış çalıştırmadan sonra orijinal kaynak klasör içeriğini sil.
--poll-secondsschedule run için çalışan yoklama aralığı.

Konsol dilini seçmek için --language veya --lang, olağan ilerleme iletilerini gizlemek için --quiet kullanın; hatalar standart hata akışına gönderilmeye devam eder. Ctrl+C iptal ister ve 1 kodunu döndürür. Kod 2 geçersiz komut sözdizimi anlamına gelir; kod 3, geçerli sürümde bir oluşturma özelliğinin kullanılamadığını belirtir. Kod 0, imha parolasının bilerek tetiklenmesini de kapsar; bu nedenle tek başına dosyaların çıkarıldığını kanıtlamaz. Sonraki otomasyon adımlarından önce beklenen çıktıyı doğrulayın.

Çıkış kodları ve izleme

schedule run-once başarısız görevlerde bile sıfır döndürebilir; schedule status durum yokken de sıfır verir. savedAt, lastSuccessAt ve lastError alanlarını kontrol edin; [OK] yalnızca Ready anlamına gelebilir. İzleyici günlük yedek, 30 saniyelik sorgu ve 26 saat içinde başarı bekler. Eşikleri uyarlayın. JSON durumları sayısaldır; --quiet başarılı create/open komutlarının olağan çıktısını gizler.

$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

Sorun Giderme

Neden çıkış kodu 3 alıyorum?

Mevcut sürüm istenen özelliğe izin vermiyor: çok fazla katman, sıkıştırma, kripto dolgu, bölme, zamanlayıcı veya daha güçlü bir algoritma.

Çıkarma neden kimlik doğrulama etiketi hatasıyla başarısız oluyor?

Ana parola, katman anahtarı, katman sırası veya konteyner dosyası yanlış. Bölünmüş konteynerler için, her parçanın aynı klasörde olduğundan emin olun.

Konsoleyi kapattıktan sonra zamanlayıcı neden çalışmıyor?

schedule run çalışan işlemdir. Açık tutun veya Windows Görev Zamanlayıcısı veya bir hizmet sarmalayıcıdan başlatın.

schedule add neden hemen başarısız oluyor?

Zamanlayıcı, görevi kaydetmeden önce lisansı, kaynak klasörü, çıktı yolunu, algoritmaları, şifreleri ve kullanılabilir disk alanını doğrular.

Zamanlayıcı şifrelerini .lbxjobs dosyasında saklayabilir miyim?

Evet. .lbxjobs dosyası zamanlayıcı dosya parolasıyla şifrelenir ve şifreleme şifreleri ve katman anahtarları dahil olmak üzere tüm görev meta verilerini saklar.

Planlanmış bir çalıştırma önceki çalıştırmayla çakışırsa ne olur?

Yeni olay atlanır, görev başarısız durumunu açıklamayla bildirir ve gelecekteki çalıştırmalar aktif çalışma bitiminden sonra devam eder.

Shell geçmişinde sırları nasıl önlerim?

--master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env ve --password-file kullanın.