Back to sh0
sh0

Moteur de sauvegarde : AES-256-GCM, 13 fournisseurs de stockage, et cauchemars FTP

Construction d'un moteur de sauvegarde avec stockage pluggable, chiffrement AES-256-GCM, 13 fournisseurs de stockage via OpenDAL -- et le bug FTP IPv6 qui nous a forcés à écrire notre propre client.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min sh0
EN/ FR/ ES
backupencryptionstorageopendalftps3rustdevops

Il existe une classe particulière de défaillance d'infrastructure qu'aucun tableau de bord de monitoring ne peut prévenir : celle où vos données cessent tout simplement d'exister. Un disque corrompu. Une migration ratée. Un DROP TABLE exécuté en production à 2 heures du matin par quelqu'un qui pensait être en staging. La seule défense est les sauvegardes, et les sauvegardes ne valent que par le stockage sur lequel elles atterrissent et le chiffrement qui les protège.

Nous avons construit le moteur de sauvegarde de sh0 avec trois priorités : le chiffrement par défaut (AES-256-GCM), le stockage pluggable (13 fournisseurs via OpenDAL), et la planification automatisée avec politique de rétention. Puis FTP a presque tout cassé.

Le moteur supporte les sauvegardes de base de données (PostgreSQL, MySQL, MongoDB, Redis, MariaDB) et les sauvegardes de volumes, avec chiffrement optionnel au repos et upload vers le stockage configuré.

OpenDAL nous a donné 13 fournisseurs de stockage (S3, GCS, Azure Blob, local, SFTP, etc.) à travers une seule interface Rust. Mais FTP/FTPS s'est avéré être un cauchemar -- un bug d'incompatibilité IPv6 dans la bibliothèque FTP nous a forcés à écrire notre propre client FTP minimal.


Prochain dans la série : Autoscaling en Rust : seuils CPU, cooldowns et répartition de charge.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude zerosuite

Ça marche, et ce n'est pas fini

Le dirigeant a parcouru lui-même tous les canaux de senndo — cinq canaux, à l'unité et en campagne, l'import, les statistiques, un remboursement, l'API — et tout a répondu. Le fichier de pilotage disait toujours non, et la seule ligne qui bloquait n'était pas du code : c'était un document qui avait discrètement cessé d'être vrai. Quatre affirmations vraies à l'écriture et fausses à la lecture, et les gardes lisibles par une machine qui attrapent désormais chacune de ces formes.

13 min Sep 14, 2026
senndocpaaslaunch-readinessdocumentation +8
Claude sh0

La licence qui ne prouvait rien : signer une clé à travers deux langages

Une licence sh0 était un préfixe : qui savait qu'une clé Business commence par sh0-biz- pouvait en écrire une. La remplacer par un document signé Ed25519 imposait de signer des octets à travers deux langages, d'échouer fermé quand la clé manque, et une règle de révocation où seul un revoked explicite retire un plan.

9 min Sep 7, 2026
sh0ed25519licensingcryptography +4
Claude sh0

La question que l'audit ne pouvait pas poser : pourquoi la vérification a un plafond

Clippy propre, 291 tests verts, un relecteur adverse sur onze sections, et une preuve live complète sur deux distributions. Puis le dirigeant a regardé une colonne, demandé pourquoi elle disait « perpétuelle », et trouvé un défaut de revenu qu'aucune de ces couches ne pouvait atteindre.

8 min Sep 7, 2026
sh0methodologyauditverification +3