Skip to main content
Voir en Markdown

Cycle de vie et quotas

Un fichier téléversé via les opérations sur les fichiers demeure jusqu'à ce que quelque chose le retire. Deux choses le peuvent : un DELETE explicite, ou la suppression définitive de l'enregistrement qui le référençait. Tout le reste — y compris un enregistrement en suppression douce — laisse les octets en place.

Les fichiers et leurs enregistrements

Les pièces jointes suivent la posture de suppression douce par défaut de Sovrium : la présence du fichier suit donc la présence de l'enregistrement, et non la demande de suppression.

Ce qui arrive à l'enregistrement Ce qui arrive au fichier
Suppression douce (le défaut) Conservé. Une restauration récupère la pièce jointe intacte.
Restauration Rien à faire — les octets n'ont jamais bougé.
Purge (?purge=true) Retiré du stockage, puis la ligne est supprimée.
Suppression dure (?permanent=true) Conservé. La ligne part ; les octets sont orphelins.
Pièce jointe remplacée lors d'une mise à jour Le fichier précédent est retiré.
Pièce jointe vidée à null Le fichier précédent est retiré.
Clé référencée par un autre enregistrement Conservé, même pendant une purge.

Deux lignes méritent attention. La dernière vous sauve : avant de supprimer des octets pendant une purge, Sovrium vérifie qu'aucun autre enregistrement ne pointe vers la même clé — enregistrements en suppression douce inclus — de sorte que deux enregistrements partageant un téléversement ne peuvent pas s'orpheliner mutuellement.

La ligne ?permanent=true est le piège. C'est la suppression dure réservée aux administrateurs, et elle retire la ligne sans toucher au stockage. Utilisez ?purge=true quand le fichier doit partir aussi : elle ne demande que la permission de suppression ordinaire et nettoie les deux côtés.

Plafonds de taille

Deux limites contrôlées par l'opérateur bornent les téléversements. Toutes deux sont validées au démarrage : une valeur non entière ou non positive fait refuser le démarrage plutôt que d'ignorer silencieusement votre plafond.

Variable Défaut Portée
STORAGE_MAX_FILE_SIZE 104857600 (100 Mo) Un téléversement. Le maxFileSize d'un bucket prime dessus.
STORAGE_MAX_TOTAL_SIZE illimité La somme de tous les octets stockés par l'application.
>_ terminal
STORAGE_MAX_FILE_SIZE=52428800      # 50 Mo par fichier
STORAGE_MAX_TOTAL_SIZE=10737418240  # 10 Go au total

Un téléversement trop lourd répond 413 ; un téléversement qui ferait dépasser le quota répond 507. Sans STORAGE_MAX_TOTAL_SIZE défini, aucune vérification de quota n'a lieu : les téléversements ne sont bornés qu'unitairement.

Lire l'usage courant

>_ terminal
curl https://app.example.com/api/admin/buckets/overview \
  -H "Cookie: $ADMIN_SESSION"
app.json
{
  "totals": {
    "buckets": 1,
    "files": 1284,
    "totalBytes": 524288000,
    "by_provider": { "s3": 1, "local": 0, "bytea": 0 }
  },
  "series": {
    "interval": "1h",
    "points": [{ "timestamp": "2026-08-13T09:42:00.000Z", "uploads": 12, "bytes": 4194304 }]
  }
}

Le point de terminaison est ouvert aux rôles administrateur et opérateur, et rapporte ce qui est stocké maintenant, pas ce qui est permis — comparez totals.totalBytes à votre propre STORAGE_MAX_TOTAL_SIZE pour connaître la marge restante. totals.totalBytes et totals.files sont lus en direct depuis le backend de stockage plutôt que suivis par un compteur : supprimer des fichiers les fait donc baisser immédiatement. totals.buckets compte les buckets que votre configuration déclare ; une application qui n'en déclare aucun rapporte l'unique bucket virtuel default, et une application dont le fournisseur de stockage ne se résout pas en rapporte zéro.

Historique des téléversements

Le bloc series répond à la question quand ces octets sont arrivés, ce que totals ne peut pas faire. Chaque point rapporte le nombre d'uploads et la somme de bytes d'un intervalle, lus depuis le catalogue de stockage — chaque voie de téléversement et chaque backend y écrivent, si bien que la série sommée sur la fenêtre égale totals.

?period choisit la fenêtre et vaut 24h par défaut : 24h renvoie 24 points horaires, 7d sept points journaliers, 30d trente. Chaque point porte l'instant où son intervalle s'ouvre, et la fenêtre se mesure à rebours du moment de l'appel plutôt que d'être calée sur les heures rondes ou sur minuit. period n'affecte jamais totals. Le catalogue ne retient que les fichiers qui existent encore : supprimer un fichier fait donc baisser l'intervalle où il avait été téléversé.

Fichiers temporaires d'automatisation

Les automatisations qui écrivent des fichiers de travail les placent sous tmp/automations/. Ceux-ci sont récupérés de façon opportuniste : la prochaine écriture temporaire balaie tout ce qui dépasse le seuil d'âge. Rien n'est planifié, la valeur est donc un âge, pas un intervalle.

Variable Défaut Signification
STORAGE_TEMP_CLEANUP_AFTER 86400000 (24 h) Âge en millisecondes à partir duquel un fichier temporaire est balayable.

Mettez-la à 0 pour désactiver entièrement le balayage applicatif — le bon choix quand une règle de cycle de vie S3 récupère déjà le préfixe. Toute autre valeur malformée retombe sur 24 heures plutôt que de désactiver le balayage, car une croissance silencieusement illimitée est la pire des défaillances.

Pages associées

Dernière mise à jour 1 septembre 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium