--- title: Borg created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, backups, deduplication, encryption, compression, borg, snapshot, incremental, versionning, ssh, sftp, docker, python, bsd] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Backups, https://github.com/borgbackup/borg] --- # đŸ’Ÿ Borg (BorgBackup) > **Le doyen des backup tools modernes (2010)**, toujours parmi les plus rapides et les plus efficaces sur de gros volumes. Compression, chiffrement, dĂ©duplication bloc — tout est dans un seul binaire et un seul format propriĂ©taire (mais bien documentĂ©). ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [borgbackup.readthedocs.io](https://borgbackup.readthedocs.io) | | **GitHub** | [borgbackup/borg](https://github.com/borgbackup/borg) | | **License** | BSD-3-Clause | | **Langage** | Python + extensions C (borgbackup) | | **Étoiles GitHub** | 13,4k ⭐ | | **DerniĂšre MAJ** | 2026-06-05 | | **CatĂ©gorie** | [[cat-backups|Backups]] | ## 📝 Description **BorgBackup** (souvent appelĂ© simplement « **Borg** ») est un **archiveur dĂ©dupliquĂ© avec compression et chiffrement**. Le projet a dĂ©marrĂ© en **2010** sous le nom d'`attic` avant d'ĂȘtre forkĂ© en `borg` en 2015, ce qui en fait le **plus ancien** des outils de backup modernes encore largement utilisĂ©s (avec `rsnapshot`, qui est trĂšs diffĂ©rent). Sa maturitĂ© est un de ses grands atouts : l'API est stable, les cas limites sont connus, et la base installĂ©e est Ă©norme. Le cƓur de Borg est un **format de repository propriĂ©taire** (`.borg` segments + manifests), optimisĂ© pour la **dĂ©duplication bloc-level** au sein d'un mĂȘme repo. Les fichiers sont dĂ©coupĂ©s en **chunks de taille variable** (algorithme `buzhash`, par dĂ©faut 64 KB moyen), puis **chiffrĂ©s en AES-256-OCB** (mode OCB depuis 1.1 ; avant c'Ă©tait AES-CTR, et avant cela AES-CBC). Borg est **plus rapide que restic** sur de trĂšs gros volumes locaux grĂące Ă  : - un **cache local** (`~/.cache/borg`) qui accĂ©lĂšre drastiquement les incrĂ©ments, - une **segmentation** plus efficace, - un mode de compression configurable (`lz4` par dĂ©faut, `zstd` depuis 1.1.4, `zlib`, `lzma`) qui compresse *avant* chiffrement (donc utile, contrairement Ă  restic qui refuse de compresser pour des raisons de sĂ©curitĂ©). CĂŽtĂ© backends, Borg supporte nativement : `local`, `ssh` (un agent Borg tourne sur la machine cible, c'est le mode le plus courant pour les serveurs), `sftp` (plus lent que ssh car pas de protocole binaire dĂ©diĂ©), et **tout backend supportĂ© par `rclone`** (S3, B2, GCS, Azure, WebDAV
) via le couple `borg mount` / `rclone` ou via des fuse mount. La grosse limitation historique : **pas de backend S3 natif** (il faut un serveur SSH distant ou rclone), ce qui rend Borg moins naturel que [[app-restic]] pour du pur cloud S3. Le format **Borg est spĂ©cifique** : un repo Borg ne peut ĂȘtre lu **que par Borg**. C'est le compromis classique : on gagne en vitesse et en compression, on perd en interopĂ©rabilitĂ©. Si un jour le projet s'arrĂȘte, vos backups deviennent des blobs opaques (mĂȘme si leur structure interne est bien documentĂ©e et qu'un parseur Python tiers existe). [[app-restic]], [[app-kopia]] et [[app-duplicati]] ont tous fait le choix inverse (format spĂ©cifique aussi, mais plus simple ou avec une dĂ©duplication transversale multi-snapshot plus efficace). ComparĂ© Ă  ses principaux rivaux : - **vs [[app-restic]]** : Borg est plus rapide sur de gros volumes (cache local + compression), plus efficace en espace grĂące Ă  la compression, mais son format est plus fermĂ© et il n'a pas de backend S3 natif. Pour du **LAN** ou du **SSH vers un serveur dĂ©diĂ©**, Borg gagne. Pour du **cloud S3/B2 direct**, restic gagne. - **vs [[app-kopia]]** : Kopia est plus moderne (2017), plus multi-cloud nativement, et offre une UI desktop. Borg reste plus rapide et plus Ă©prouvĂ©. - **vs [[app-borg-ui|Borg UI]] et [[app-backrest]]** : Borg n'a pas d'UI officielle. Il faut soit la ligne de commande, soit une UI tierce. **Public cible** : **intermĂ©diaire Ă  avancĂ©**. IdĂ©al pour les sysadmins qui ont un serveur de backup dĂ©diĂ© (NAS Synology, machine Linux, location OVH) et qui sauvegardent des volumes importants. ## 🚀 Installation ### Option 1 : Docker Compose (UI Borg tierce) Borg lui-mĂȘme n'est qu'un **binaire Python+C** qu'on invoque depuis un cron. Pour avoir une UI, on s'appuie sur des frontends comme [[app-borg-ui]] ou Borg Web (un projet plus ancien). Voici un exemple avec [[app-borg-ui]] : ```yaml # docker-compose.yml version: '3.8' services: borg-ui: image: karanhudia/borg-ui:latest container_name: borg-ui restart: unless-stopped environment: - BORG_UI_PORT=8081 - BORG_UI_HOST=0.0.0.0 - DOCKER_HOST=unix:///var/run/docker.sock volumes: - /var/run/docker.sock:/var/run/docker.sock - borg-ui-data:/app/data - /mnt/repos-borg:/repos - /mnt/source:/source:ro - ~/.ssh/mount:/root/.ssh:ro # clĂ© SSH pour le repo distant labels: - "traefik.enable=true" - "traefik.http.routers.borg-ui.rule=Host(`borg.example.com`)" - "traefik.http.routers.borg-ui.entrypoints=websecure" - "traefik.http.routers.borg-ui.tls.certresolver=letsencrypt" volumes: borg-ui-data: ``` ### Option 2 : Binaire natif (mĂ©thode recommandĂ©e) ```bash # Debian / Ubuntu sudo apt install borgbackup # Fedora / RHEL sudo dnf install borgbackup # macOS brew install borgbackup # pip (si on veut une version plus rĂ©cente) pip install --user borgbackup # VĂ©rification borg --version ``` ### Exemple d'init + premier backup ```bash # Repo local borg init --encryption=repokey-blake2 /mnt/backup-repo # Repo SSH distant (le plus courant) borg init --encryption=repokey-blake2 ssh://user@backup-server//path/to/repo # Premier backup avec compression zstd borg create --compression zstd ::archive-{now} /home /etc # Lister les archives borg list ssh://user@backup-server//path/to/repo # Restaurer borg extract ssh://user@backup-server//path/to/repo::archive-2026-06-07 ``` ## ⚙ Configuration Initiale 1. **Choisir le mode de chiffrement** : - `repokey-blake2` (dĂ©faut recommandĂ©) : clĂ© AES stockĂ©e dans le repo, protĂ©gĂ©e par une passphrase. Le hash utilise BLAKE2b. - `repokey` : idem mais avec SHA-256. - `keyfile` : la clĂ© AES est exportĂ©e dans un fichier **Ă  stocker hors-ligne**. - `authenticated` : idem `repokey` mais les chunks sont authentifiĂ©s (intĂ©gritĂ© garantie). - `none` : ⚠ **pas de chiffrement** — Ă  Ă©viter pour tout ce qui sort de la machine. 2. **Initialiser le repo** : `borg init --encryption=... ssh://...` ou `borg init --encryption=... /chemin/local`. 3. **Premier backup test** : `borg create --stats ::test-{now} /chemin/Ă /sauvegarder`. Inspecter les stats : la taille **compressĂ©e** doit ĂȘtre bien infĂ©rieure Ă  la taille source si les donnĂ©es s'y prĂȘtent. 4. **Automatiser** : un script bash appelĂ© par cron qui enchaĂźne `borg create`, `borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6`, et `borg compact` (pour rĂ©organiser le repo aprĂšs pruning). Le `borg compact` libĂšre rĂ©ellement l'espace — sans lui, les segments supprimĂ©s restent allouĂ©s. 5. **Sauvegarder la clĂ©** : si mode `repokey`, exporter la clĂ© (`borg key export`) et la stocker **sĂ©parĂ©ment** (gestionnaire de mots de passe, papier, etc.). Si mode `keyfile`, copier le fichier `key` sur un support hors-ligne. 6. **Tester la restauration** : sur une machine vierge, `borg extract` une archive, puis vĂ©rifier l'intĂ©gritĂ© de quelques fichiers. Les backups non testĂ©s ne sont **pas** des backups. ## 🔄 Alternatives ### Open Source - [[app-restic]] — Plus moderne, format plus simple, backend S3 natif, mais pas de compression. - [[app-kopia]] — UI desktop, multi-cloud natif, mais plus jeune. - [[app-borg-ui]] — UI web simple pour Borg (le projet qui complĂšte cet Ă©cosystĂšme). - [[app-borg-backup-server]] — Orchestrateur pour gĂ©rer plusieurs clients Borg depuis un serveur central. - **Restic** vs **Borg** : choix cornĂ©lien classique — voir le tableau ci-dessous. ### Comparaison Borg vs restic vs Kopia | CritĂšre | Borg | [[app-restic]] | [[app-kopia]] | | :--- | :--- | :--- | :--- | | AnnĂ©e de naissance | 2010 (fork d'attic) | 2014 | 2017 | | Langage | Python + C | Go (pur) | Go (pur) | | Compression | ✅ lz4, zstd, lzma, zlib | ❌ (dĂ©libĂ©rĂ©) | ❌ (dĂ©libĂ©rĂ©) | | DĂ©duplication | Bloc-level, par archive + transversale | Bloc-level (CDC), transversale | Bloc-level (CDC), transversale | | Chiffrement | AES-256-OCB + BLAKE2b | AES-256-CTR + Poly1305 | AES-256-GCM | | Backend S3 natif | ❌ (via rclone) | ✅ | ✅ | | Backend SSH | ✅ (le plus rapide) | ✅ (SFTP) | ✅ (SFTP) | | Cache local | ✅ (trĂšs efficace) | ❌ | ❌ | | UI native | ❌ (tiers : [[app-borg-ui]]) | ❌ (tiers : [[app-backrest]]) | ✅ (desktop) | | Format de repo | SpĂ©cifique, fermĂ© | SpĂ©cifique, simple | SpĂ©cifique, fermĂ© | | Licence | BSD-3-Clause | BSD-2-Clause | Apache-2.0 | | `borg check` / Ă©quivalent | ✅ trĂšs complet | `restic check` | `kopia repository validate` | **Verdict** : Borg reste **le roi des performances brutes** sur de gros volumes, surtout si on a un serveur SSH dĂ©diĂ© et qu'on veut compresser. Pour un homelab qui veut du cloud-first ([[app-restic]] ou [[app-kopia]]) ou une UI ([app-kopia], [[app-backrest]]), on regarde ailleurs. Pour un backup **local** rapide et efficace, Borg est imbattable. ### PropriĂ©taires (ce que Borg remplace) - **Veeam Backup & Replication** — Le standard entreprise pour VM, mais hors de prix pour un homelab et pas self-hosted simple. - **Acronis Backup Advanced** — RĂ©fĂ©rence SMB, fermĂ©, licence annuelle. - **Druva** — Backup cloud SaaS, fermĂ©. - **Time Machine** (Apple) — Excellent pour les Macs, mais limitĂ© Ă  un seul disque/dossier et non scriptable. - **Windows Server Backup** — IntĂ©grĂ© Ă  Windows Server, mais pas cross-platform et pas de cloud natif. ### Backends de stockage (pour un repo Borg) | Solution | Type | CoĂ»t approx. | IdĂ©al pour | | :--- | :--- | :--- | :--- | | **Serveur SSH dĂ©diĂ©** (Hetzner, OVH) | Local distant | 4-8 € / To / mois (Hetzner Storage Box) | LAN/serveur de backup | | **BorgBase** | SaaS spĂ©cialisĂ© | 3,5-10 € / To / mois | Borg/restic clĂ© en main | | **Hetzner Storage Box** | NAS distant | 3,5 € / mois / 1 To | EU, SMB | | **rsync.net** | Stockage SSH/SFTP | 0,025 $ / Go / mois | Pro, EU | | **Scaleway Stardust** (B2-like) | S3-compatible | 7,5 € / To | EU, via rclone | | **Disque USB local** | Air-gapped | 50-100 € one-shot | Rançongiciels | ## 🔐 SĂ©curitĂ© - **Chiffrement AES-256-OCB + BLAKE2b** : par dĂ©faut, le repo est **chiffrĂ© avant Ă©criture** sur le backend. MĂȘme un administrateur du serveur de backup ne peut pas lire les fichiers. Le mode `repokey-blake2` est le **sweet spot** entre sĂ©curitĂ© et commoditĂ© (la clĂ© est dans le repo, mais protĂ©gĂ©e par passphrase). - **RĂšgle 3-2-1** : Borg ne fait pas la politique — c'est Ă  l'utilisateur de la mettre en place. Un setup classique Borg : - Backup **local** sur un disque USB branchĂ© au serveur (rotation mensuelle, hors-ligne le reste du temps → air-gap contre les rançongiciels). - Backup **distant** sur un serveur SSH (Hetzner, OVH, maison de campagne). - Pas de backup cloud direct (Borg n'a pas de backend S3 natif), mais on peut mitiger avec rclone. - **ClĂ© du repo** : si mode `repokey`, exporter la clĂ© (`borg key export repo /tmp/keyfile`) et la stocker **ailleurs** — papier dans un coffre, KeePassXC, Bitwarden. **Un repo sans clĂ© = poubelle chiffrĂ©e**. - **Test de restauration rĂ©gulier** : programmer un `borg check --verify-data` mensuel (lit *tous* les chunks, donc lent et I/O-intensif) **et** un test de restauration applicative sur un serveur de test. - **Air-gapped backup** : un disque USB mensuel sorti du serveur est l'ultime dĂ©fense contre un rançongiciel qui aurait compromis Ă  la fois le serveur principal et le serveur de backup. ## 📚 Ressources - [Documentation officielle](https://borgbackup.readthedocs.io/) - [GitHub borgbackup/borg](https://github.com/borgbackup/borg) - [FAQ / wiki](https://github.com/borgbackup/borg/wiki) - [Site de la communautĂ©](https://www.borgbackup.org/) - [BorgBackup support commercial](https://www.borgbackup.com/) ## Pages LiĂ©es - [[cat-backups]] — CatĂ©gorie Backups - [[strategie-backup-321]] — La rĂšgle 3-2-1 expliquĂ©e - [[app-restic]] — Concurrent direct, format ouvert - [[app-kopia]] — Concurrent moderne, UI desktop - [[app-borg-ui]] — UI web pour Borg - [[app-backrest]] — UI web pour restic - [[app-portainer]] — Visualiser les conteneurs - [[app-traefik]] — Reverse-proxy HTTPS - [[securisation-home-lab]] — Bonnes pratiques de sĂ©curitĂ© - [[glossaire-homelab]] — DĂ©finitions