Mise en place du script de sauvegarde WordPress vers TrueNAS
SP 0 : Architecture de prototypage pour le site du BTS réalisé par les SLAM
Mission 7 : Sauvegarde automatique des fichiers du site sur un serveur NAS et sécurisation des transferts FTP (SFTP ou FTPS)

Informations générales
- Date de création : 22/11/2025
- Dernière modification : 22/11/2025
- Auteur : MEDO Louis
- Version : 1
Objectif
Cette procédure décrit l’installation et la configuration du script permettant la sauvegarde automatique du site WordPress (172.16.51.1) vers un serveur TrueNAS.
Le script permet :
- Une sauvegarde quotidienne à 23h
- Un nom de fichier incluant la date
- Une rétention de 30 jours
- Un suivi via des logs
- Un transfert sécurisé avec SSH / SCP
Sommaire
- A. Présentation du script
- B. Mise en place du script
- C. Configuration du cron
- D. Configuration d’une clé SSH privée (clé récupérée depuis Bitwarden)
A. Présentation du script
#!/bin/bash
# --- CONFIGURATION ---
DATE=$(date +%Y-%m-%d)
# Configuration MySQL
# Les identifiants de connexion sont dans le fichier ~/.my.cnf
DB_NAME="tilleul"
# Chemins
SOURCE_FILES="var/www/html/"
TEMP_DIR="/tmp"
ARCHIVE_NAME="wp_backup_$DATE.tar.gz"
# Configuration NAS
# Vérifier que la clé privée et le host "truenas" sont bien configurés dans ~/.ssh/config
NAS_HOST="truenas"
NAS_PATH="wordpress/"
# --- 1. DUMP SQL ---
mysqldump $DB_NAME > $TEMP_DIR/db.sql
# --- 2. COMPRESSION ---
tar -czvf $TEMP_DIR/$ARCHIVE_NAME -C $TEMP_DIR db.sql -C / $SOURCE_FILES
# --- 3. TRANSFERT SCP ---
scp $TEMP_DIR/$ARCHIVE_NAME $NAS_HOST:$NAS_PATH
# --- 4. RÉTENTION ---
ssh $NAS_HOST "find $NAS_PATH -mtime +30 -iname 'wp_backup_*.tar.gz' -delete"
# --- 5. NETTOYAGE ---
rm $TEMP_DIR/db.sql
rm $TEMP_DIR/$ARCHIVE_NAME
Explication des étapes
- Configuration : toutes les variables sont regroupées pour simplifier la maintenance.
- Dump MySQL :
mysqldumpexporte la base dans/tmp/db.sql. - Compression :
tarcrée une archive nommée avec la date. - Transfert :
scpenvoie la sauvegarde vers TrueNAS via SSH. - Rétention :
findsupprime les archives de plus de 30 jours. - Nettoyage : suppression des fichiers temporaires.
B. Mise en place du script
- Créer un dossier pour les scripts
mkdir ~/script
- Aller dans ce dossier
cd ~/script
- Créer le script
vi backup_wp.sh
- Coller le contenu du script (Shift + Ctrl + V)
(script identique à celui de la section A)
- Modifier les variables
Exemple :
DB_NAME=ROSE
- Enregistrer et quitter
Échap → :wq
- Rendre le script exécutable
chmod +x backup_wp.sh
- Créer un fichier
.my.cnfpour éviter les mots de passe dans le script
cd ~
touch .my.cnf
vi .my.cnf
Y coller :
[client]
user=MON_USER
password=MON_PASSWORD
- Tester la connexion MySQL
mysql
- Tester le script
./script/backup_wp.sh
Si vous avez une erreur de permissions sur TrueNAS :
Dans TrueNAS → Dataset “backup” → Activer “Apply permissions recursively”
Ou créer un sous-dataset et mettre l’utilisateur
backupen propriétaire.
C. Configuration du cron
- Ouvrir la crontab
crontab -e
- Ajouter la ligne suivante
0 23 * * * /home/user/script/backup_wp.sh >> /var/log/backup_wp.log 2>&1
Le fonctionnement du temps d'éxecution du script :
* * * * *
| | | | |
| | | | └── Jour de la semaine (0–7)
| | | └──── Mois (1–12)
| | └─────── Jour du mois (1–31)
| └────────── Heure (0–23)
└───────────── Minute (0–59)
- Créer un fichier de log
sudo touch /var/log/backup_wp.log
sudo chown user:user /var/log/backup_wp.log
D. Configuration d’une clé SSH privée (clé récupérée depuis Bitwarden)
La clé SSH n’est pas générée, elle est récupérée depuis Bitwarden. Le but est de pouvoir se connecter à TrueNAS simplement avec :
ssh truenas
Étape 1. Récupérer la clé privée depuis Bitwarden
- Ouvrir Bitwarden
- Rechercher l’entrée : Clé SSH TrueNAS - Privée
- Copier le contenu complet de la clé privée
- Sur le serveur WordPress, créer le fichier :
mkdir -p ~/.ssh
vi ~/.ssh/id_ed25519
- Coller la clé privée dans ce fichier
- Enregistrer →
Échap+:wq
Puis appliquer les permissions :
chmod 600 ~/.ssh/id_ed25519
Étape 2. Ajouter la clé publique sur TrueNAS
La clé publique doit être ajoutée à l’utilisateur backup dans TrueNAS.
Sur TrueNAS → Accounts → Users → backup → SSH Public Key
Coller la clé publique correspondante (également stockée dans Bitwarden).
Étape 3. Créer le fichier de configuration SSH
vi ~/.ssh/config
Y mettre :
Host truenas
HostName 172.16.51.10 # IP de votre TrueNAS
User backup # utilisateur sur TrueNAS
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Ensuite :
chmod 600 ~/.ssh/config
Étape 4. Tester la connexion SSH
ssh truenas
Si vous arrivez sur TrueNAS sans mot de passe, c’est OK.
Étape 5. Tester le SCP
- Créer un fichier test
mkdir ~/test
echo "test" > ~/test/fichier.txt
- Envoyer le fichier vers TrueNAS
scp ~/test/fichier.txt truenas:~/
Si aucun mot de passe n’est demandé → la configuration SSH est bonne.