Documentation LockBox CLI
LockBox CLI est la version d'automatisation en anglais uniquement pour le chiffrement scripté, l'extraction, l'activation, les sauvegardes chiffrées planifiées et les flux de travail CI/CD. Il utilise le même modèle de licence lié à l'appareil que l'application de bureau.
Démarrage rapide
Placez LockBox.Cli.exe dans un dossier inclus dans PATH,
ou appelez-le par chemin complet. Le marqueur --cli est accepté pour la compatibilité
mais n'est pas requis dans la version CLI uniquement.
.\LockBox.Cli.exe --help
.\LockBox.Cli.exe device-id
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen --count 3
Flux de travail minimal pour créer et ouvrir :
$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 utilise les mêmes commandes avec des chemins slash et un binaire sans le suffixe .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_L1Installer et vérifier la CLI
Extrayez le ZIP adapté au système et au processeur. .NET est inclus. Comparez le hachage avec SHA256SUMS.txt. Placez la CLI au chemin absolu indiqué ci-dessous et vérifiez l’aide et la licence avec le compte de sauvegarde.
Linux nécessite aussi les dépendances natives de la distribution, dont ICU et OpenSSL ; le .NET inclus ne les fournit pas. Sous Windows, la stratégie d’exécution effective doit autoriser les scripts PowerShell.
.NET / Linux · PowerShell / ExecutionPolicy
Expand-Archive -LiteralPath '.\LockBox-Cli-win-x64.zip' -DestinationPath 'C:\Tools\LockBox'
& 'C:\Tools\LockBox\LockBox.Cli.exe' --help
& 'C:\Tools\LockBox\LockBox.Cli.exe' license
Get-FileHash -LiteralPath '.\LockBox-Cli-win-x64.zip' -Algorithm SHA256uname -m
unzip LockBox-Cli-linux-x64.zip -d ./lockbox-cli
chmod +x ./lockbox-cli/LockBox.Cli
./lockbox-cli/LockBox.Cli --help
./lockbox-cli/LockBox.Cli license
sha256sum LockBox-Cli-linux-x64.zipWindows x64 -> LockBox-Cli-win-x64.zip
Windows x86 -> LockBox-Cli-win-x86.zip
Windows ARM64 -> LockBox-Cli-win-arm64.zip
Linux x86_64 -> LockBox-Cli-linux-x64.zip
Linux aarch64 -> LockBox-Cli-linux-arm64.zip
Linux armv7l -> LockBox-Cli-linux-arm.zipDossiers, chemins et espace disque
Adaptez les chemins. Le dossier source doit être non vide et le conteneur doit rester en dehors. Réutiliser le nom de sortie remplace le conteneur et ses parties. Prévoyez l’espace temporaire près du conteneur et une copie source pour les tâches planifiées. Les unités sont basées sur 1024 ; le remplissage ajoute des octets.
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.txtPréparer les fichiers de secrets
Générez les secrets une seule fois, sauvegardez-les de façon protégée et limitez l’accès aux fichiers. Les exemples refusent de remplacer des clés existantes. Les fichiers UTF-8 conservent les espaces, mais pas les sauts de ligne finaux. Gardez les clés d’origine pour les anciennes sauvegardes.
$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.txtActivation et état de la licence
La clé de licence est liée à l'ID de l'appareil imprimé par la même version CLI. Si une licence est copiée sur un autre PC, LockBox la rejette et revient à la version gratuite.
Windows vérifie les emplacements existants des données de l'application LockBox. Linux stocke l'activation dans
$XDG_CONFIG_HOME/lockbox/.lockbox.license, puis
~/.config/lockbox/.lockbox.license, avec ~/.lockbox/.lockbox.license
comme solution de secours.
Obtenir l'ID de l'appareil
.\LockBox.Cli.exe device-id
Vérifier l'édition actuelle
.\LockBox.Cli.exe license
Activer à partir d'un fichier de licence
.\LockBox.Cli.exe activate --license-file "C:\Licenses\lockbox-license.txt"
Activer à partir d'une variable d'environnement
$env:LBX_LICENSE = "LBX-LIC-..."
.\LockBox.Cli.exe activate --license-env LBX_LICENSE
Activation en ligne
L'activation en ligne fonctionne, mais elle peut se retrouver dans l'historique du shell ou les journaux de processus.
.\LockBox.Cli.exe activate --license "LBX-LIC-..."
Activation sous Linux
export LBX_LICENSE="LBX-LIC-..."
./LockBox.Cli activate --license-env LBX_LICENSE
./LockBox.Cli licenseGestion des secrets
Préférez les variables d'environnement ou les fichiers. Les secrets intégrés sont utiles uniquement pour les tests. Les mots de passe maîtres et les clés de couche doivent être conservés : sans eux, le conteneur ne peut pas être ouvert.
| Objet | Intégré | Environnement | Fichier |
|---|---|---|---|
| Mot de passe maître | --master value | --master-env ENV | --master-file path |
| Créer une clé de couche | --layer ALG=KEY | --layer-env ALG=ENV | --layer-file ALG=FILE |
| Ouvrir une clé de couche | --key value | --key-env ENV | --key-file path |
| Mot de passe du fichier de planification | --password value | --password-env ENV | --password-file path |
| Mot de passe de destruction du conteneur | --destruction-password value | --destruction-password-env ENV | --destruction-password-file path |
| Clé de licence | --license value | --license-env ENV | --license-file path |
Secrets basés sur des fichiers
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.txtAlgorithmes et génération de clés
Utilisez algorithms pour voir tous les profils pris en charge et les éditions minimales.
Utilisez keygen pour les clés de couche.
.\LockBox.Cli.exe algorithms
.\LockBox.Cli.exe keygen
.\LockBox.Cli.exe keygen --count 9
.\LockBox.Cli.exe generate-keys -n 20
Alias de commande pris en charge :
algorithms
list-algorithms
profiles
keygen
generate-key
generate-keysCréer des conteneurs
create empaquette un dossier source, applique éventuellement une compression et un remplissage,
crypte la charge utile à travers une ou plusieurs couches, et écrit un conteneur .lbx.
Options requises
--sourceou-s: dossier source.--outputou-o: chemin de sortie du.lbx.--master,--master-env, ou--master-file.- Au moins une couche :
--layer,--layer-env, ou--layer-file.
Conteneur AES minimal
.\LockBox.Cli.exe create `
-s "D:\Data" `
-o "E:\Backups\data.lbx" `
--master-env LBX_MASTER `
--layer-env AES-128-GCM=LBX_L1
Conteneur compressé
.\LockBox.Cli.exe create `
--source "D:\Exports" `
--output "E:\Backups\exports.lbx" `
--master-env LBX_MASTER `
--layer-env AES-256-GCM=LBX_L1 `
--compress
Remplissage cryptographique
.\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
Diviser le conteneur en parties
.\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
La première partie conserve .lbx. Les parties supplémentaires utilisent
.lbx1, .lbx2, et ainsi de suite. Gardez toutes les parties dans le même dossier.
Exemple Max à neuf couches
$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
Syntaxe alternative pour algorithme/clé
.\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
Supprimer la source après création manuelle réussie
.\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 supprime le dossier source uniquement après que le conteneur a été créé avec succès.
Le planificateur a une option différente : --delete-source-contents.
Mot de passe de destruction du conteneur
Max edition peut ajouter un mot de passe de destruction séparé à un conteneur. Si ce mot de passe est saisi plus tard comme mot de passe principal, LockBox écrase immédiatement le conteneur sans confirmation. Cela est destiné aux scénarios de pression par contrainte. Gardez-le séparé du vrai mot de passe principal.
La commande vérifie l'espace disque libre, chiffre les données du conteneur original avec un secret aléatoire
et AES-256-GCM dans un fichier temporaire, normalise le résultat à la taille exacte de l'original,
remplace le fichier original et oublie le secret aléatoire. Pour les conteneurs fractionnés, chaque
partie .lbx, .lbx1, .lbx2 dans le même dossier est remplacée
tout en préservant les tailles des parties originales.
Créer avec un mot de passe de destruction
$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
Déclencher la destruction sans clés de couche
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_DESTROY
Déclenchement sous Linux
export LBX_DESTROY="pressure-password"
./LockBox.Cli open \
--container "/backup/data.lbx" \
--output "/restore" \
--master-env LBX_DESTROY
Après une destruction réussie, le conteneur n'est plus un fichier LockBox valide. Le CLI renvoie
le code de sortie 0 car l'action de destruction demandée a été effectuée avec succès.
Ouvrir des conteneurs
open extrait un conteneur dans le dossier de sortie. Pour une extraction normale, les clés de couche doivent
être fournies dans le même ordre utilisé lors de la création. Pour un flux de travail avec mot de passe de destruction, seuls le
chemin du conteneur, le chemin de sortie et le mot de passe de destruction comme mot de passe principal sont requis.
Ouvrir un conteneur à une couche
.\LockBox.Cli.exe open `
--container "E:\Backups\data.lbx" `
--output "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1
Ouvrir un conteneur fractionné
.\LockBox.Cli.exe open `
-c "E:\Backups\data.lbx" `
-o "D:\Restore" `
--master-env LBX_MASTER `
--key-env LBX_L1
Ouvrir un conteneur multi-couches
.\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
Alias
open
decrypt
extractVérifier une sauvegarde par restauration
Créez un petit fichier report.csv pour le test. Extrayez vers un nouveau dossier, qui conserve le nom du dossier source. Gardez toutes les parties ensemble et comparez aux sources inchangées. L’extraction exige un espace temporaire accessible en écriture près du conteneur. Protégez aussi les fichiers restaurés en clair.
$ErrorActionPreference = 'Stop'
$cli = 'C:\Tools\LockBox\LockBox.Cli.exe'
$container = 'E:\Backups\data.lbx'
$restore = Join-Path 'D:\RestoreChecks' ([guid]::NewGuid().ToString('N'))
& $cli open --container $container --output $restore --master-file 'C:\LockBox\secrets\master.txt' --key-file 'C:\LockBox\secrets\layer1.txt'
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$original = (Get-FileHash -LiteralPath 'D:\Data\report.csv' -Algorithm SHA256).Hash
$restored = (Get-FileHash -LiteralPath (Join-Path $restore 'Data\report.csv') -Algorithm SHA256).Hash
if ($original -ne $restored) { throw 'SHA256 mismatch' }
Write-Output $restoreset -eu
umask 077
mkdir -p /restore
restore=$(mktemp -d /restore/check-XXXXXX)
/opt/lockbox/LockBox.Cli open --container /backup/data.lbx --output "$restore" --master-file /srv/lockbox/secrets/master.txt --key-file /srv/lockbox/secrets/layer1.txt
cmp /srv/data/report.csv "$restore/data/report.csv"
sha256sum /srv/data/report.csv "$restore/data/report.csv"Planificateur
Les commandes du planificateur sont disponibles dans l'édition Max. Elles stockent les métadonnées complètes des tâches
dans un fichier .lbxjobs chiffré, y compris le chemin source, le chemin de sortie,
les mots de passe, le mot de passe de destruction, les clés de couche, la compression, le remplissage, la division, et
le paramètre de suppression du contenu source.
Les tâches planifiées ne s'exécutent que lorsque LockBox.Cli.exe schedule run est en cours d'exécution.
Utilisez le Planificateur de tâches Windows, systemd de Linux, cron, un wrapper de service, ou une session console longue
si vous avez besoin que le worker démarre automatiquement après un redémarrage.
Valeurs de fréquence
once
30m
hourly
2h
3h
6h
9h
12h
18h
daily
2d
3d
5d
weekly
2w
monthly
2mo
3mo
6mo
9mo
yearly
Ajouter une tâche de sauvegarde quotidienne chiffrée
$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
Ajouter une tâche qui supprime le contenu du dossier source après succès
.\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
Ajouter un archivage mensuel avec remplissage et parties fractionnées
.\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
Lister les tâches enregistrées
.\LockBox.Cli.exe schedule list `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD
Exécuter le worker du planificateur
.\LockBox.Cli.exe schedule run `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD `
--state "E:\Backups\jobs.status.json" `
--poll-seconds 30
Exécuter une fois les tâches dues et quitter
.\LockBox.Cli.exe schedule run-once `
--tasks "E:\Backups\jobs.lbxjobs" `
--password-env LBX_JOBS_PASSWORD `
--state "E:\Backups\jobs.status.json"
Afficher le dernier état d'exécution
.\LockBox.Cli.exe schedule status --state "E:\Backups\jobs.status.json"
Les marqueurs de statut sont [OK], [RUNNING], et [FAILED].
Une tâche échouée inclut la raison et indique à l'utilisateur de contacter le support si le problème se répète.
Scripts JSON
Utilisez --script lorsqu'un flux de travail comporte plusieurs étapes. Le lanceur de scripts prend en charge
create, open, keygen, algorithms,
device-id, license, et activate.
Créer et ouvrir dans un seul script
{
"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"
Continuer après une étape échouée
{
"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" }
]
}
]
}
Activer depuis un script
{
"commands": [
{
"command": "activate",
"licenseKeyFile": "C:\\Licenses\\lockbox-license.txt"
},
{ "command": "license" }
]
}Champs JSON et règles d’exécution
Le tableau relie les champs create et les tableaux de clés open aux options CLI. Les chemins relatifs partent du répertoire de travail du processus ; variables et dates ne sont pas substituées. Utilisez une source de secret par champ. open lit keys, puis keyEnvs, puis keyFiles. Préférez stopOnError: true ; avec false, un succès ultérieur peut masquer un échec. Les commandes de planification ne sont pas prises en charge dans les scripts JSON.
{
"stopOnError": true,
"commands": [
{
"command": "create",
"source": "/srv/data",
"output": "/backup/data.lbx",
"masterPasswordFile": "/srv/lockbox/secrets/master.txt",
"layers": [
{ "algorithm": "AES-128-GCM", "keyFile": "/srv/lockbox/secrets/layer1.txt" }
]
},
{
"command": "open",
"container": "/backup/data.lbx",
"output": "/restore/check",
"masterPasswordFile": "/srv/lockbox/secrets/master.txt",
"keyFiles": ["/srv/lockbox/secrets/layer1.txt"]
}
]
}/opt/lockbox/LockBox.Cli --quiet script /srv/lockbox/backup.lockbox.jsonsource / sourceFolder / sourceFolderPath | --source | Dossier à empaqueter et chiffrer. |
output / outputContainerPath | --output | Chemin de sortie .lbx. |
masterPassword | --master | Mot de passe maître en ligne. |
masterPasswordEnv | --master-env | Lire le mot de passe maître depuis une variable d'environnement. |
masterPasswordFile | --master-file | Lire le mot de passe maître depuis un fichier texte UTF-8. |
layers[].algorithm + layers[].key | --layer | Ajouter ALGORITHM=KEY. |
layers[].algorithm + layers[].keyEnv | --layer-env | Ajouter ALGORITHM=ENV. |
layers[].algorithm + layers[].keyFile | --layer-file | Ajouter ALGORITHM=FILE. |
compression / compress | --compress | Activer la compression. |
padding | --padding | Ajouter un bourrage aléatoire chiffré. Unités : B, KB, MB, GB, TB. |
paddingBytes | --padding-bytes | Taille du bourrage en octets bruts. |
split / splitSize | --split | Diviser la sortie en .lbx, .lbx1, .lbx2. |
splitPartSizeBytes | --split-bytes | Taille des parties divisées en octets bruts. |
destructionPassword | --destruction-password | Mot de passe de destruction Max-only en ligne. Le saisir plus tard comme mot de passe maître écrase immédiatement le conteneur. |
destructionPasswordEnv | --destruction-password-env | Lire le mot de passe de destruction Max-only depuis une variable d'environnement. |
destructionPasswordFile | --destruction-password-file | Lire le mot de passe de destruction Max-only depuis un fichier texte UTF-8. |
deleteSource / deleteSourceFolderAfterSuccess | --delete-source | Supprimer le dossier source après une création manuelle réussie. |
container / containerPath | --container | Conteneur .lbx existant. |
keys[] | --key | Clé de couche en ligne dans l'ordre original. |
keyEnvs[] | --key-env | Clé de couche depuis la variable d'environnement. |
keyFiles[] | --key-file | Clé de couche depuis un fichier texte UTF-8. |
Recettes d'automatisation
Sauvegarde de la base de données chiffrée
$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
Protection des artefacts 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
Transfert sécurisé avec un partenaire
.\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
Archivage à long terme
.\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
Exemple de fichier batch
@echo off
set LBX_MASTER=master-password
set LBX_L1=layer-key-1
LockBox.Cli.exe create ^
--source "D:\Data" ^
--output "E:\Backups\data.lbx" ^
--master-env LBX_MASTER ^
--layer-env AES-128-GCM=LBX_L1
if errorlevel 1 exit /b %errorlevel%
echo OKWindows : sauvegarder plusieurs dossiers
Enregistrez le script au chemin indiqué. Il crée un conteneur au nom unique et un journal par source, s’arrête en cas d’erreur et transmet le code de sortie CLI. AES-128-GCM fonctionne avec Free ; compression et découpage nécessitent Pro ou Max.
C:\LockBox\backup.ps1
param(
[string[]]$Source = @('D:\Data'),
[string]$Destination = 'E:\Backups'
)
$ErrorActionPreference = 'Stop'
$cli = 'C:\Tools\LockBox\LockBox.Cli.exe'
$secretDir = 'C:\LockBox\secrets'
try {
foreach ($folder in $Source) {
$sourcePath = (Resolve-Path -LiteralPath $folder).Path
$stamp = (Get-Date).ToUniversalTime().ToString('yyyyMMdd-HHmmss-fff')
$runId = [guid]::NewGuid().ToString('N')
$runDir = Join-Path $Destination "$stamp-$runId"
New-Item -ItemType Directory -Path $runDir | Out-Null
$container = Join-Path $runDir 'data.lbx'
$log = Join-Path $runDir 'create.log'
$cliArgs = @(
'--quiet', 'create', '--source', $sourcePath, '--output', $container,
'--master-file', (Join-Path $secretDir 'master.txt'),
'--layer-file', ('AES-128-GCM=' + (Join-Path $secretDir 'layer1.txt'))
)
$ErrorActionPreference = 'Continue'
& $cli @cliArgs > $log 2>&1
$result = $LASTEXITCODE
$ErrorActionPreference = 'Stop'
if ($result -ne 0) {
Get-Content -LiteralPath $log
exit $result
}
if (-not (Test-Path -LiteralPath $container -PathType Leaf)) {
throw "Container missing: $container"
}
Write-Output $container
}
exit 0
} catch {
Write-Error $_ -ErrorAction Continue
exit 1
}& 'C:\LockBox\backup.ps1' -Source 'D:\Data', 'D:\Reports' -Destination 'E:\Backups'
# 0 = success; 1 = runtime error; 2 = usage error; 3 = edition restriction
$LASTEXITCODELinux : sauvegardes sans intervention
Enregistrez le script Bash avec des fins de ligne LF. Préparez la CLI et les secrets aux chemins indiqués, puis passez les dossiers sources en arguments. Chaque exécution dispose de son dossier. Les erreurs produisent un journal et un code non nul ; les sources sont conservées.
/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/reportsPlanifier avec le système d’exploitation
Ces tâches lancent les scripts précédents ; cet usage de create ne nécessite pas Max. L’inscription Windows exige une session ouverte ; configurez le mode déconnecté dans le Planificateur si nécessaire. Ajoutez cron au crontab du compte de sauvegarde après avoir vérifié flock. Les deux exemples s’exécutent à 02:00 locale et évitent les exécutions planifiées simultanées. Vérifiez les droits et testez manuellement.
Windows
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -NonInteractive -File "C:\LockBox\backup.ps1"' -WorkingDirectory 'C:\LockBox'
$trigger = New-ScheduledTaskTrigger -Daily -At '02:00'
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -MultipleInstances IgnoreNew -ExecutionTimeLimit ([TimeSpan]::Zero)
$principal = New-ScheduledTaskPrincipal -UserId ([Security.Principal.WindowsIdentity]::GetCurrent().Name) -LogonType Interactive
Register-ScheduledTask -TaskName 'LockBox backup' -Action $action -Trigger $trigger -Settings $settings -Principal $principal
Start-ScheduledTask -TaskName 'LockBox backup'
Get-ScheduledTaskInfo -TaskName 'LockBox backup'New-ScheduledTaskSettingsSet · New-ScheduledTaskPrincipal
Linux: cron
crontab -e0 2 * * * /usr/bin/flock -n /srv/lockbox/backup.lock /bin/bash /srv/lockbox/backup.sh >> /srv/lockbox/cron.log 2>&1Max : exploiter le planificateur
Créez le compte de service lockbox avec les droits nécessaires, activez Max pour ce compte et préparez le fichier de mot de passe UTF-8 distinct jobs.txt. add ajoute sans mettre à jour : une seule fois par tâche. Utilisez un processus par fichier de tâches et redémarrez-le après modification. Le JSON d’état ne restaure pas l’historique : les occurrences périodiques échues sont sautées, une tâche once échue peut être rejouée. Pour les lancements périodiques du système, utilisez create plutôt que run-once répété. Le planificateur réutilise le nom de sortie.
/opt/lockbox/LockBox.Cli schedule add \
--tasks /srv/lockbox/jobs.lbxjobs \
--password-file /srv/lockbox/secrets/jobs.txt \
--name nightly-data --frequency daily \
--start "$(date -d 'tomorrow 02:00' --iso-8601=seconds)" \
--source /srv/data --output /backup/nightly-data.lbx \
--master-file /srv/lockbox/secrets/master.txt \
--layer-file AES-128-GCM=/srv/lockbox/secrets/layer1.txt
/opt/lockbox/LockBox.Cli schedule list --tasks /srv/lockbox/jobs.lbxjobs --password-file /srv/lockbox/secrets/jobs.txt/etc/systemd/system/lockbox-scheduler.service
[Unit]
Description=LockBox scheduler
After=local-fs.target
RequiresMountsFor=/srv/data /srv/lockbox /backup
[Service]
Type=simple
User=lockbox
WorkingDirectory=/srv/lockbox
UMask=0077
ExecStart=/opt/lockbox/LockBox.Cli schedule run --tasks /srv/lockbox/jobs.lbxjobs --password-file /srv/lockbox/secrets/jobs.txt --state /srv/lockbox/jobs.status.json --poll-seconds 30
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=300
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now lockbox-scheduler.service
systemctl status lockbox-scheduler.service
journalctl -u lockbox-scheduler.service -n 50 --no-pager
/opt/lockbox/LockBox.Cli schedule status --state /srv/lockbox/jobs.status.jsonRéférence des commandes
| Commande | Objectif | Alias |
|---|---|---|
help | Afficher l'aide de la console. | --help, -h, ? |
device-id | Imprimer l'ID de l'appareil PC pour l'émission de licence. | deviceid, machine-id |
license | Afficher l'édition actuelle et le chemin de la licence. | license-status, status |
activate | Installer une clé de licence liée à l'appareil. | activation |
algorithms | Lister les algorithmes et les éditions minimales. | profiles, list-algorithms |
keygen | Générer des clés aléatoires. | generate-key, generate-keys |
create | Créer un conteneur chiffré. | encrypt |
open | Extraire un conteneur chiffré. | decrypt, extract |
schedule | Gérer et exécuter les tâches planifiées. | scheduler, scheduled-tasks |
script | Exécuter un fichier d'automatisation JSON. | --script |
Créer des options
--source, -s | Dossier à empaqueter et chiffrer. |
--output, -o | Chemin de sortie .lbx. |
--master | Mot de passe maître en ligne. |
--master-env | Lire le mot de passe maître depuis une variable d'environnement. |
--master-file | Lire le mot de passe maître depuis un fichier texte UTF-8. |
--layer | Ajouter ALGORITHM=KEY. |
--layer-env | Ajouter ALGORITHM=ENV. |
--layer-file | Ajouter ALGORITHM=FILE. |
--algorithm, -a | Forme d'algorithme alternative associée à --key, --key-env, ou --key-file. |
--compress | Activer la compression. |
--no-compress | Désactiver la compression si elle avait été activée précédemment. |
--padding | Ajouter un bourrage aléatoire chiffré. Unités : B, KB, MB, GB, TB. |
--padding-bytes | Taille du bourrage en octets bruts. |
--split | Diviser la sortie en .lbx, .lbx1, .lbx2. |
--split-bytes | Taille des parties divisées en octets bruts. |
--no-split | Désactiver la division si elle avait été activée précédemment. |
--destruction-password | Mot de passe de destruction Max-only en ligne. Le saisir plus tard comme mot de passe maître écrase immédiatement le conteneur. |
--destruction-password-env | Lire le mot de passe de destruction Max-only depuis une variable d'environnement. |
--destruction-password-file | Lire le mot de passe de destruction Max-only depuis un fichier texte UTF-8. |
--delete-source | Supprimer le dossier source après une création manuelle réussie. |
Options d'ouverture
--container, -c | Conteneur .lbx existant. |
--output, -o | Dossier d'extraction. |
--master, --master-env, --master-file | Source du mot de passe maître. |
--key, -k | Clé de couche en ligne dans l'ordre original. |
--key-env | Clé de couche depuis la variable d'environnement. |
--key-file | Clé de couche depuis un fichier texte UTF-8. |
— | Autorisé pour les flux de travail avec mot de passe de destruction. L'extraction normale échoue après la lecture des métadonnées si les clés requises sont manquantes. |
Options du planificateur
schedule add | Ajouter une tâche à .lbxjobs chiffré. |
schedule list | Afficher les tâches enregistrées. |
schedule run | Exécuter un travailleur de longue durée. |
schedule run-once | Exécuter les tâches dues une seule fois et quitter. |
schedule status | Lire le dernier statut d'exécution JSON. |
--tasks, --file | Chemin du fichier de tâche chiffré. |
--password, --password-env, --password-file | Mot de passe pour le fichier de tâches. |
--state, --status-file | Chemin du JSON du statut d'exécution. |
--name | Nom de la tâche pour schedule add. |
--frequency, --every | Fréquence de la tâche. |
--start, --start-at | Date/heure de début locale. |
--delete-source-contents | Supprimer le contenu du dossier source original après une exécution programmée réussie. |
--poll-seconds | Intervalle de sondage du travailleur pour schedule run. |
Utilisez --language ou --lang pour choisir la langue de la console et --quiet pour masquer la progression habituelle ; les erreurs restent dans le flux d’erreur standard. Ctrl+C demande l’annulation avec le code 1. Le code 2 signale une syntaxe invalide et le code 3 une fonction de création indisponible dans l’édition actuelle. Le code 0 couvre aussi le déclenchement volontaire du mot de passe de destruction et ne prouve donc pas à lui seul que des fichiers ont été extraits. Vérifiez la sortie attendue avant la suite de l’automatisation.
Codes de sortie et surveillance
schedule run-once peut renvoyer zéro malgré une tâche échouée ; schedule status aussi en l’absence d’état. Vérifiez savedAt, lastSuccessAt et lastError ; [OK] peut simplement signifier Ready. Ce moniteur attend des sauvegardes quotidiennes, une interrogation toutes les 30 secondes et un succès depuis moins de 26 heures. Adaptez les seuils. Les états JSON sont numériques ; --quiet supprime les sorties ordinaires de create/open réussis.
$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 -> FailedDépannage
Pourquoi est-ce que j'obtiens le code de sortie 3 ?
L'édition actuelle ne permet pas la fonctionnalité demandée : trop de couches, compression, remplissage crypto, division, planificateur, ou un algorithme plus fort.
Pourquoi l'extraction échoue-t-elle avec une erreur de tag d'authentification ?
Le mot de passe maître, la clé de couche, l'ordre des couches ou le fichier conteneur est incorrect. Pour les conteneurs divisés, vérifiez également que chaque partie est présente dans le même dossier.
Pourquoi le planificateur ne fonctionne-t-il pas après la fermeture de la console ?
schedule run est le processus worker. Gardez-le ouvert, ou lancez-le depuis le Planificateur de tâches Windows ou un wrapper de service.
Pourquoi l'ajout au planificateur échoue-t-il immédiatement ?
Le planificateur valide la licence, le dossier source, le chemin de sortie, les algorithmes, les mots de passe et l'espace disque disponible avant d'enregistrer la tâche.
Puis-je stocker les mots de passe du planificateur dans le fichier .lbxjobs ?
Oui. Le fichier .lbxjobs est chiffré avec le mot de passe du fichier du planificateur et stocke toutes les métadonnées de la tâche, y compris les mots de passe de chiffrement et les clés de couche.
Que se passe-t-il si une exécution planifiée chevauche l'exécution précédente ?
Le nouvel événement est ignoré, la tâche rapporte un statut d'échec avec une explication, et les exécutions futures continuent après la fin de l'exécution en cours.
Comment éviter de laisser des secrets dans l'historique du shell ?
Utilisez --master-env, --master-file, --layer-env, --layer-file, --destruction-password-env, --destruction-password-file, --password-env, et --password-file.