Connecteur Fichiers / dossiers 📁
Sauvegarde un répertoire (ou un fichier) du système de fichiers sous forme d'archive tar, et le restaure par dé-tarage. Pur Go, image distroless — le connecteur le plus léger.
- Image :
ilygo/bridge-files:1(distroless, ~15 MB) - Sous-commande :
ilygo-bridge files - Implémentation :
archive/tarGo natif (aucun binaire externe)
Variables d'environnement
En plus des variables communes :
| Variable | Obligatoire | Description |
|---|---|---|
FILES_PATH |
oui | Chemin du fichier ou dossier à sauvegarder, tel que monté dans le conteneur |
Surchargeable par commande via payload.path.
Prérequis
- Le dossier source doit être monté en lecture dans le conteneur bridge (volume Docker ou bind mount).
- Pour la restauration : montez-le aussi en écriture (ou un dossier cible distinct).
Déploiement (docker-compose)
services:
ilygo-bridge:
image: ilygo/bridge-files:1
restart: unless-stopped
networks: [default] # juste l'accès sortant HTTPS
environment:
ILYGO_ENDPOINT: https://backup.example/api/v1
ILYGO_API_KEY: ik_xxx
ILYGO_PASSPHRASE: ${ILYGO_PASSPHRASE}
ILYGO_RESTORE_SECRET: 3f87d2022d95...
ILYGO_LABEL: fileserver-docs
FILES_PATH: /data
volumes:
- /srv/documents:/data:ro # bind mount en lecture seule (backup)
# Pour autoriser la restauration in_place, montez en lecture-écriture :
# - /srv/documents:/data
Astuce : pour un backup strictement lecture seule (sécurité maximale), gardez
:ro. Pour restaurer, déployez temporairement un second bridge avec le montage en écriture, ou retirez:ro.
Mécanisme de backup
- Parcourt récursivement
FILES_PATH(filepath.Walk). - Crée une archive tar préservant l'arborescence, les modes (permissions) et les dates de modification.
- Les fichiers réguliers sont inclus avec leur contenu ; les dossiers comme entrées de structure.
- L'archive est compressée (zstd) puis chiffrée.
Mécanisme de restauration
Avec un RAT, le bridge déchiffre/décompresse l'archive tar et la dé-tare :
side_by_side (recommandé) : extrait dans <FILES_PATH>.restored (ex : /data.restored). Vous comparez avant de promouvoir.
in_place (exige confirm_destructive) : extrait dans FILES_PATH, écrasant les fichiers de même chemin. (Ne supprime pas les fichiers ajoutés depuis le backup.)
Les permissions et arborescence sont restaurées à l'identique.
Réseau & sécurité
- Le bridge n'a besoin que du réseau
default(sortie HTTPS) — il ne parle à aucune base. - Image distroless, non-root.
- Montez la source en
:ropour le backup. - En prod :
read_only: true(sauf le volume cible de restauration),cap_drop: [ALL].
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
stat /data: no such file or directory |
volume non monté | Vérifiez le bloc volumes: |
permission denied au backup |
droits de lecture insuffisants | Ajustez les droits ou l'UID du conteneur |
restore : read-only file system |
volume monté :ro |
Montez en écriture pour restaurer |
| archive volumineuse | dossier très gros (tar en mémoire en v1) | Voir limites |
Limites & roadmap
- v1 : archive tar en mémoire — adapté jusqu'à quelques Go. Pas de déduplication ni d'incrémental.
- Roadmap : tar streamé (To-scale), backup incrémental par mtime/hash, exclusions (
.ilygoignore).