Ou une solution pour sauvegarder les données sur un volume externe chiffré, mais lisible sur un autre PC.
(En l’état et sans aucune autre action, les données ne seront lisibles sur un autre PC qu’avec une session utilisant le même user)
Genèse/introduction
Théoriquement, je suis devenu « Concepteur de Systèmes d’Information« .
Et je suis actuellement en formation en interne pour une certification « Sécurité des SI et des Réseaux ».
Et puis je suis un homme prudent et surtout hyper bien organisé, c’est connu (Oui, ben, je dis ce que je veux et je ne veux entendre personne ricaner)
Bon, bref, petit article pour un truc utile sous Linux :
Se faire un disque dur externe chiffré et y coller ses données en mode fainéant.
Pour se faire, on va suivre 3 étapes
- Formater un volume externe (ici, un SSD avec adaptateur USB) et Chiffrer ledit disque avec LUKS
- Faire un script de clonage (
rsync
en mode copie conforme avec--delete-after
) - Créer un lanceur sur le bureau de l’utilisatrice (ici, je cause de n°2, n°1 et mon épouse)
J’ai donc réalisé cela 3 fois ces derniers mois ; tout d’abord pour mes 2 aînées, un peu poussé par la désactivation de la synchronisation du PC de Numéro 2 sur mon Nextcloud autohébergé (elle collait des trucs trop sensibles à mon avis) alors même qu’elle partait quelques mois à l’étranger.
Il fallait une solution de sauvegarde qui reste simple (tout le monde n’est pas nécessairement intéressé par l’informatique) et sécurisée.
Et là, je viens (enfin) de le faire sur le PC de ma femme (un vieux Mac Mini sous LinuxMint).
Comme souvent, cet article vient de la réalité de terrain 😉
Je précise que chaque personne à son PC (vive la récupération) et que chaque personne a son propre disque de sauvegarde.
Séparation complète de l’Église et de l’État 😀
But recherché
Le but est de n’avoir qu’à faire un double clic sur une icône (sur le bureau par exemple) pour lancer une sauvegarde sur un disque externe.
Mais que ce disque soit chiffré (puisque le PC l’est) pour la confidentialité.
Et que le disque reste lisible sur un autre PC (nécessairement un Linux puisque Windows ne sait pas faire).
Dans mon cas, je sauvegarde tout le dossier /home/user, mais vous pouvez faire comme bon vous semble.
L’avantage du /home/user complet ?
En cas de crash important, il suffit de réinstaller Linux et de faire un Rsync inverse pour tout récupérer (mais on pourra en recauser).
A noter : j’utilise 1 disque externe par personne.
Les différentes étapes
1 – Préparer un volume externe : formatage et chiffrement avec Disk
Pour commencer, connectez votre disque externe sur le PC de la personne pour qui vous le configurez et ouvrez l’outil « Disk » (ou « Disques ») sous Linux.
Sélectionnez le volume souhaité, puis formatez-le en ext4.
Cette étape garantit un système de fichiers performant et compatible avec Linux.
Pour sécuriser vos données, activez le chiffrement LUKS lors de la configuration.
Ce chiffrement protège vos informations contre tout accès non autorisé, même si le disque est perdu ou volé*.
Voici une capture d’écran pour illustrer :
* : En effet, ça serait couillon de chiffrer son home et de tout mettre en clair sur un volume facile à perdre ou se faire dérober 😀
Mais attention, ne perdez pas le mot de passe sinon, les données seront inaccessibles !
A l’insertion du disque sur un PC tournant sous Linux, vous verrez ceci (capture faite avec une clef USB pour illustrer)
2 – Script de sauvegarde : automatisation avec rsync
Une fois le disque prêt, il suffit de créer un script de sauvegarde à l’aide de rsync
. Ce puissant outil synchronise vos fichiers ; en gros, à chaque lancement, il ne copie que ce qui est nouveau ou ce qui a changé.
Et grâce à l’option --delete-after
, il va même le faire tout en supprimant les données obsolètes (en gros, ce qui a été effacé du PC entre 2 sauvegardes sera également effacé du disque externe (puisque je veux une mode « clone » ou « copie conforme ») à la fin de la synchronisation).
Voici un exemple de script « à la Alban » (un peu crado, je sais)
#!/bin/bash
# Variables
MOUNT_POINT="/media/USER/SSD_externe" # À adapter à ton cas
RSYNC_SOURCE="/home/USER" # À adapter à ton cas
RSYNC_DESTINATION="$MOUNT_POINT/backup" # À adapter à ton cas
# Vérifie si le SSD est monté
if mount | grep "$MOUNT_POINT" > /dev/null; then
echo "Bonjour"
sleep 2
echo "Script de sauvegarde lancé"
sleep 2
echo "Vérifications en cours"
sleep 2
echo "Le SSD est connecté, lancement de rsync..."
sleep 2
# Lance rsync (options à adapter selon tes besoins)
rsync -avh --progress -delete-after "$RSYNC_SOURCE" "$RSYNC_DESTINATION"
sleep 2
echo " "
echo "Hé ; j'ai fini ! :-D '"
echo " "
sleep 2
echo "Maintenant, il faut éjecter le SSD"
sleep 2
echo "En faisant 'clic droit' sur le volume, puis"
sleep 2
echo "Choisir 'Retirer le volume sans risque' et"
sleep 2
echo "Attendre la confirmation avant de le débrancher."
sleep 2
echo "Au revoir"
echo " "
sleep 5
else
echo "Bonjour"
sleep 2
echo "Script de sauvegarde lancé"
sleep 2
echo "Vérifications en cours"
sleep 2
echo "Erreur : Le SSD n'est pas connecté."
echo "Veuillez le brancher pour lancer la synchronisation."
sleep 2
echo "Au revoir"
sleep 5
fi
Attention, il faut adapter les chemins en fonction de vos besoins, puis rendre le script exécutable avec la commande chmod +x
.
Genre chmod +x /home/alban/Documents/sauvegarde_SSD_externe.sh
pour donner un exemple.
3 – Créer un lanceur : exécuter votre script en un simple (double) clic
Pour simplifier l’utilisation, j’ai souhaité ajouter un lanceur sur leur bureau puisque mes enfants et mon épouse ne vont pas dégainer leur Terminal et jouer de la console 😀
(on va potentialiser l’usage du truc puisque le but est qu’elles sauvegardent les données)
Il suffit de créer un fichier .desktop
. (perso, je le fais via le Terminal, mais libre à vous de faire comme vous le souhaitez).
Voici un modèle :
[Desktop Entry]
Version=1.0
Type=Application
Name=Script de clone vers SSD
Comment=Exécuter un script Bash Rsync en mode clone
Exec=/home/USER/Documents/sauvegarde_USER.sh
Icon=utilities-terminal
Terminal=true
Categories=Utility;
Rappel :
En plus d’enregistrer le fichier, il faudra rendre le lanceur exécutable (chmod +x
).
C’est fait ?
Bien…
Vous pouvez maintenant lancer votre sauvegarde d’un simple double-clic.
Cool…
Récupération (au cas où)
On va imaginer 2 cas :
- J’ai effacé un fichier et je sais lequel
- j’ai besoin de réinstaller mon système
Si j’ai perdu un fichier (corrompu, effacé par erreur, modifié alors qu’il ne fallait pas, …), il suffit de connecter le SSD externe et de copier/coller le fichier voulu.
Pas besoin de faire un rsync pour ça (mais vous pouvez évidemment).
Si mon système déconne vraiment et que je me dis « Bon, Ben, zou, je repars sur une installation propre de la dernière version« , alors c’est très simple.
Si je garde le même user sur la nouvelle installation, je connecterais le SSD externe sur le PC (autre PC ou même PC évidemment) et je ferais un rsync du SSD externe vers le disque système.
Genre :
rsync -avh –progress -delete-after /media/user/ /home/user/
Je l’ai déjà expérimenté de nombreuses fois et c’est hyperpratique 😀
Conclusion
Grâce à ces quelques étapes plutôt simples, vous disposez d’une solution complète et sécurisée pour sauvegarder vos données personnelles sous Linux.
Une méthode simple, efficace, et accessible à tous les utilisateurs souhaitant protéger leurs fichiers essentiels.
Alors, plus la moindre excuse à la procrastination ; hop hop hop, au boulot !
Notes additionnelles
Voici les différences entre trois commandes rsync très proches :
rsync -avz /home/user_01/ /media/user_01/
Cette commande copiera le contenu du répertoire/home/user_01
directement dans/media/user_01/
.
Le slash final dans la source indique à rsync de copier le contenu du répertoire, pas le répertoire lui-même.rsync -avz /home/user_01/ /media/user_01
Cette commande aura le même effet que la première. Le slash final dans la destination n’a pas d’importance pour rsync.rsync -avz /home/user_01 /media/user_01
Cette commande créera un répertoire user_01 à l’intérieur de/media/user_01/
.
Donc, vous aurez/media/user_01/user_01/
contenant les fichiers de/home/user_01
.
La différence clé est le slash final dans le chemin source :
- Avec un slash final (/home/user_01/), rsync copie le contenu du répertoire.
- Sans slash final (/home/user_01), rsync copie le répertoire lui-même et son contenu.
Pour copier tout le contenu de /home/user_01 directement dans /media/user_01, utilisez la première ou la deuxième option.