- Fonctionnalités
- Prérequis
- Installation rapide
- Configuration
- Cron exemple
- Logs & Monitoring
- Notes de sécurité (important)
- FAQ
- Contribuer
- Licence
- 🚀 Monte un NAS CIFS et effectue les sauvegardes automatiquement
- 🐳 Export optionnel des conteneurs Docker en archives
tar.gz - 💾 Sauvegarde complète du serveur avec BorgBackup (déduplication + compression)
- 🧹 Suppression automatique des anciennes sauvegardes (Docker >10j, Borg >40j)
- 📲 Notifications SMS via Free Mobile pour suivre succès/erreurs
- 🔁 Paramètres sûrs (
set -euo pipefail) et exclusions intelligentes
- Debian/Ubuntu (testé)
- Droits
sudo - Accès réseau au NAS
- (Optionnel) Docker pour export des conteneurs
- (Optionnel) Compte Free Mobile (user + token) pour SMS
- Copier le script et rendre exécutable :
sudo cp backup /usr/local/bin/backup
sudo chmod +x /usr/local/bin/backup- Créer le dossier de configuration et les fichiers secrets :
sudo mkdir -p /etc/backup_script
sudo nano /etc/backup_script/smb.conf # Identifiants CIFS
sudo nano /etc/backup_script/borg_pass # Mot de passe Borg, chmod 600
sudo chmod 600 /etc/backup_script/*- Tester le script :
sudo /usr/local/bin/backup -h # aide
sudo /usr/local/bin/backup # sauvegarde manuelleModifier les variables en début de script :
SOURCE_DIR="/"
DEST_DIR="/var/backup"
MOUNT_POINT="/var/backup"
NAS_SERVER="192.168.1.10"
CONFIG_FILE="/etc/backup_script/smb.conf"
BORG_PASSPHRASE="$(cat /etc/backup_script/borg_pass)"
DOCKER="1"
BACKUP_DOCKER="/var/backups/docker/"
NAME_FOR_NOTIFY="mon-serveur"
FREE_MOBILE_USER="0123456789"
FREE_MOBILE_CODE_AUTH="abcdEFGhijk"
PHONE_NUMBER="+33XXXXXXXXX"CIFS /etc/backup_script/smb.conf :
username=MON_USER
password=MON_MOT_DE_PASSE
domain=MON_DOMAINE # optionnel
🔒 Protéger le fichier :
chmod 600 /etc/backup_script/smb.conf
Exécution chaque nuit à 03h00 :
0 3 * * * /usr/local/bin/backup >> /var/log/backup_cron.log 2>&1
- Fichier log principal :
/var/log/backup.log - Suivi des exports Docker, sauvegarde Borg, montage/démontage NAS
- Intégration possible avec Prometheus/ELK/syslog
- Ne jamais rendre
BORG_PASSPHRASEworld-readable - Préférer fichier ou variable d'environnement pour secrets
- Ajouter un lockfile pour éviter les exécutions concurrentes
- Tester régulièrement la restauration
Q — Pourquoi Borg ?
A — Déduplication, compression et sécurité intégrée pour vos backups.
Q — Les SMS ne fonctionnent pas ?
A — Tester l’API Free Mobile manuellement :
curl -G --data-urlencode "msg=hello" "https://smsapi.free-mobile.fr/sendmsg?user=USER&pass=CODE"Q — Les exports Docker sont volumineux ?
A — Oui. Préférer docker save ou un registre externe si nécessaire.
- Ajouter un service systemd + timer pour planification propre
- Ajouter un lockfile
- Ajouter mode dry-run / tests unitaires
- Support pour notifications Slack/Teams
MIT © Titithen00b
- Features
- Prerequisites
- Quick start
- Configuration
- Cron example
- Logs & Monitoring
- Security notes (must-read)
- FAQ
- Contributing
- License
- 🚀 Mount a CIFS NAS and run backups automatically
- 🐳 Optional export of Docker containers to
tar.gzarchives - 💾 Full server backup with BorgBackup (deduplication + compression)
- 🧹 Auto-prune old backups (Docker >10d, Borg >40d)
- 📲 SMS notifications via Free Mobile for success/error tracking
- 🔁 Safe defaults (
set -euo pipefail) and smart excludes
- Debian/Ubuntu (tested)
sudoprivileges- Network access to NAS
- (Optional) Docker access
- (Optional) Free Mobile account (user + auth token) for SMS notifications
- Copy script and make executable:
sudo cp backup /usr/local/bin/backup
sudo chmod +x /usr/local/bin/backup- Create config folder and credentials:
sudo mkdir -p /etc/backup_script
sudo nano /etc/backup_script/smb.conf
sudo nano /etc/backup_script/borg_pass
sudo chmod 600 /etc/backup_script/*- Test manually:
sudo /usr/local/bin/backup -h
sudo /usr/local/bin/backupSet variables at the top of the script:
SOURCE_DIR="/"
DEST_DIR="/var/backup"
MOUNT_POINT="/var/backup"
NAS_SERVER="192.168.1.10"
CONFIG_FILE="/etc/backup_script/smb.conf"
BORG_PASSPHRASE="$(cat /etc/backup_script/borg_pass)"
DOCKER="1"
BACKUP_DOCKER="/var/backups/docker/"
NAME_FOR_NOTIFY="my-server"
FREE_MOBILE_USER="0123456789"
FREE_MOBILE_CODE_AUTH="abcdEFGhijk"
PHONE_NUMBER="+33XXXXXXXXX"CIFS file /etc/backup_script/smb.conf:
username=MY_USER
password=MY_PASSWORD
domain=MY_DOMAIN # optional
🔒 Protect credentials:
chmod 600 /etc/backup_script/smb.conf
Nightly at 03:00:
0 3 * * * /usr/local/bin/backup >> /var/log/backup_cron.log 2>&1
- Main log:
/var/log/backup.log - Tracks Docker export, Borg backup, NAS mount/unmount
- Can be integrated into Prometheus/ELK/syslog
- Never make
BORG_PASSPHRASEworld-readable - Prefer environment variable or file for secrets
- Add lockfile to prevent concurrent runs
- Test restores regularly
Q — Why Borg?
A — Deduplication, compression and built-in encryption for backups.
Q — SMS not received?
A — Test Free Mobile API manually:
curl -G --data-urlencode "msg=hello" "https://smsapi.free-mobile.fr/sendmsg?user=USER&pass=CODE"Q — Docker exports are large?
A — Consider docker save or external registry; export containers only if necessary.
- Add systemd service + timer for clean scheduling
- Add lockfile
- Add dry-run / unit tests
- Support for Slack/Teams notifications
MIT © Titithen00b