Dès qu'on branche la clé déclarée (reconnue par son UUID), udev demande à systemd de lancer une sauvegarde rsync des dossiers choisis. Ce qui a disparu de l'ordinateur est retiré de la clé, mais conservé 30 jours dans une corbeille datée sur la clé. Notifications de bureau, journal systemd, garde-fous contre une destination erronée. Installateur, tests sans sudo et mode d'emploi fournis. Refs #1
10 KiB
Sauvegarde automatique sur clé USB
Petit outil pour Linux Mint 22 (Cinnamon) : on branche sa clé de sauvegarde, la copie de ses documents démarre toute seule, une notification dit quand on peut la retirer.
Accompagne la séance Alpinux « Ranger et sauvegarder ses documents ».
Sommaire
| Pour commencer | Au quotidien | En cas de besoin |
|---|---|---|
| Pour qui ? | Tester | Restaurer un fichier |
| Ce que ça fait | Lire le journal | Désinstaller |
| Installer (3 commandes) | Régler | Limites |
| Trouver l'UUID | Comment ça marche |
Pour qui ?
Pour qui veut une copie de ses documents sans y penser : on branche la
clé, on attend le message, on la débranche. Il faut savoir ouvrir un
terminal et taper une commande avec sudo (une fois, pour l'installation).
Ce que ça fait
- Seule la clé déclarée déclenche la sauvegarde (reconnue par son identifiant UUID). Une autre clé ne fait rien.
- Le dossier personnel (ou une liste de dossiers) est copié dans
Sauvegarde/sur la clé. Les fois suivantes, seul ce qui a changé est recopié : c'est rapide. - Ce qui a été supprimé de l'ordinateur est retiré de la clé, pour que la copie reste fidèle.
Synchroniser n'est pas sauvegarder. Une copie « miroir » recopie aussi les erreurs : un fichier effacé par mégarde disparaîtrait de la clé au branchement suivant. C'est pourquoi, par défaut, rien n'est effacé d'un coup : ce qui est retiré ou remplacé sur la clé est d'abord mis de côté dans
.corbeille/AAAA-MM-JJ_HHMMSS/, et gardé 30 jours.
- Notifications : « Sauvegarde en cours… », puis « Sauvegarde terminée, vous pouvez retirer la clé », ou un message d'erreur (clé pleine…).
- Un fichier
derniere-sauvegarde.txtà la racine de la clé indique la date et le résultat de la dernière sauvegarde. - Ne sont pas copiés : caches (
.cache), corbeille de l'ordinateur, miniatures, fichiers temporaires.Téléchargementspeut être exclu.
Installer en 3 commandes
Branchez d'abord la clé de sauvegarde, puis dans un terminal :
git clone --depth 1 https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.presentations.git
cd alpinux.presentations/slides/sauvegardes/script
sudo ./installer.sh
(Si git manque : sudo apt install git.)
L'installateur affiche les clés USB branchées, demande laquelle utiliser et pour quel utilisateur, puis met tout en place. On peut le relancer sans risque (changer de clé, mettre à jour) : vos réglages sont conservés.
Ensuite : débranchez et rebranchez la clé, la première sauvegarde part. Elle peut être longue ; les suivantes sont rapides.
Sans questions : sudo ./installer.sh --uuid E234-70AF --utilisateur marie
Trouver l'UUID de sa clé
L'installateur le fait pour vous. Pour le voir vous-même :
lsblk -o NAME,LABEL,UUID,FSTYPE,SIZE,TRAN
Repérez votre clé (colonne TRAN = usb, taille, nom LABEL) : l'UUID est
sur la ligne de la partition (sdb1…), par exemple E234-70AF pour une
clé FAT, ou 3d6f976c-1822-… pour une clé ext4.
Attention : reformater la clé change son UUID ; relancez alors
sudo ./installer.sh.
Tester
sudo sauvegarde-cle-usb --simulation # montre ce qui serait copié/supprimé, sans rien faire
sudo systemctl start sauvegarde-cle-usb # lance une vraie sauvegarde maintenant
Pour vérifier la logique sans clé ni sudo (développeurs) :
./tester-sans-sudo.sh — un dossier temporaire joue le rôle de la clé.
Lire le journal
journalctl -u sauvegarde-cle-usb # tout l'historique
journalctl -u sauvegarde-cle-usb -b # depuis le démarrage
journalctl -u sauvegarde-cle-usb -f # en direct, pendant une sauvegarde
Ou plus simplement, ouvrez derniere-sauvegarde.txt sur la clé.
Restaurer un fichier
Un fichier qui existe encore dans la sauvegarde : ouvrez la clé dans le
gestionnaire de fichiers, dossier Sauvegarde/<votre nom>/…, et copiez le
fichier où vous voulez (copier, pas déplacer).
Un fichier supprimé ou une ancienne version : il est dans la corbeille de
la clé, un dossier caché. Dans le gestionnaire de fichiers, appuyez sur
Ctrl+H pour voir les dossiers cachés, puis ouvrez .corbeille/. Chaque
sous-dossier porte la date de la sauvegarde où le fichier a été retiré
(ex. 2026-11-05_183012) et reprend l'arborescence de vos dossiers.
Pour chercher un fichier par son nom :
find /media/$USER/*/.corbeille -iname '*lettre*'
Tout restaurer (nouvel ordinateur…) : copiez le contenu de
Sauvegarde/<votre nom>/ dans votre dossier personnel.
Régler
Tout est dans /etc/sauvegarde-cle-usb.conf, commenté :
sudo xed /etc/sauvegarde-cle-usb.conf
| Réglage | Rôle | Par défaut |
|---|---|---|
SOURCES |
dossiers à sauvegarder | le dossier personnel |
DOSSIER_DESTINATION |
dossier sur la clé | Sauvegarde |
CORBEILLE_JOURS |
durée de conservation de .corbeille ; 0 = miroir pur, sans filet (déconseillé) |
30 |
EXCLUSIONS |
ce qu'on ne copie pas (enlever le # devant Téléchargements/ pour l'exclure) |
caches, corbeille, temporaires |
VERIFIER_ESPACE |
vérifier la place libre avant de commencer | oui |
Pris en compte au prochain branchement.
Désinstaller
sudo ./installer.sh --desinstaller
Retire le script, le service, la règle et la configuration. Les copies présentes sur la clé ne sont pas touchées.
Limites à connaître
- Une clé n'est qu'une copie, et elle reste à la maison. Un cambriolage ou un dégât des eaux emporte l'ordinateur et la clé. Gardez aussi une copie ailleurs (une 2ᵉ clé chez un proche, au travail, ou en ligne).
- Attendez la notification « Sauvegarde terminée » avant de retirer la clé. Retirée en cours de route, la copie est incomplète (elle se complétera au branchement suivant).
- Clé FAT32 / exFAT / NTFS (les clés vendues en magasin) : les documents
sont bien copiés, mais pas les droits Linux ni les liens symboliques
(ignorés, ce n'est pas une erreur). En FAT32, pas de fichier de plus de
4 Go (signalé par une notification) et certains caractères sont interdits
dans les noms (
: * ? " < > | \) : ces fichiers-là ne sont pas copiés, la sauvegarde est dite « avec avertissements » et, par prudence, rien n'est supprimé de la clé ce jour-là. Pour une copie fidèle, formatez la clé en ext4 (Disques ou Formater dans le menu de la clé) — elle ne sera plus lisible sous Windows. - Papiers sensibles (impôts, banque, santé, pièces d'identité) : une clé
se perd facilement. Chiffrez-la (Disques → Formater → « Protégé par mot
de passe (LUKS) »). Après le déverrouillage, le démarrage automatique n'est
pas garanti : lancez alors
sudo systemctl start sauvegarde-cle-usb, et choisissez dans l'installateur la lignecrypt(clé déverrouillée). - La corbeille de la clé prend de la place. Si la clé est pleine, supprimez
les plus vieux dossiers de
.corbeille/. - Les fichiers en cours d'écriture pendant la copie (base de données de Thunderbird ou Firefox ouverts…) peuvent être copiés dans un état incohérent : fermez ces logiciels pour une copie parfaite.
- Si la clé est branchée au démarrage de l'ordinateur, la sauvegarde part aussitôt, avant même la connexion (sans notification).
Comment ça marche
clé branchée ─► udev reconnaît l'UUID ─► systemd lance sauvegarde-cle-usb.service
─► le script monte la clé sur /run/sauvegarde-cle-usb
─► vérifications ─► rsync ─► purge des vieilles corbeilles
─► sync, démontage ─► notification « vous pouvez retirer la clé »
| Fichier (dans ce dossier) | Installé dans |
|---|---|
sauvegarde-cle-usb (le script) |
/usr/local/sbin/ |
sauvegarde-cle-usb.conf (modèle) |
/etc/sauvegarde-cle-usb.conf |
sauvegarde-cle-usb.service |
/etc/systemd/system/ |
99-sauvegarde-cle-usb.rules.modele |
/etc/udev/rules.d/99-sauvegarde-cle-usb.rules |
installer.sh, tester-sans-sudo.sh |
(non installés) |
Pourquoi udev + systemd ? udev voit la clé arriver, mais ne doit pas lancer lui-même une tâche longue (il la tuerait au bout de quelques secondes) : il demande donc à systemd de démarrer le service, qui tourne aussi longtemps que nécessaire et écrit dans le journal.
Pourquoi un montage dédié ? Quand on branche la clé, Cinnamon (Nemo,
udisks) la monte souvent dans /media/<utilisateur>/…, mais pas toujours
(personne de connecté, automontage désactivé) et pas forcément avant le
démarrage de la sauvegarde. Le script monte donc lui-même la clé sur
/run/sauvegarde-cle-usb, que Nemo l'ait montée ou non : Linux accepte
plusieurs montages du même système de fichiers. Avantages : le chemin est
toujours le même, les options sont maîtrisées (clé FAT montée au nom de
l'utilisateur), pas de course avec l'automontage, et un « Éjecter » dans Nemo
pendant la copie ne retire que le montage de Nemo, pas celui de la
sauvegarde. Si ce montage échoue, le script réutilise le montage de Nemo
s'il est en écriture. À la fin : sync puis démontage de son seul montage
(celui de Nemo reste, la clé reste visible).
Garde-fous (une erreur de chemin avec suppression peut effacer des données) :
- la sauvegarde refuse de partir si la destination n'est pas un sous-dossier de la clé montée et portant l'UUID attendu (même à travers un lien symbolique) ;
- refus si
SOURCESest vide, si un dossier source est absent ou vide (disque non monté, dossier chiffré verrouillé : sinon tout serait retiré de la clé), ou si deux sources portent le même nom ; - jamais deux sauvegardes en même temps (verrou) ;
- vérification de la place libre avant de commencer ;
- si rsync rencontre une erreur de lecture, il ne supprime rien.
Options rsync : clé ext4 → -aH (tout est conservé) ;
FAT/exFAT/NTFS → -rt --modify-window=2 (dates à 2 s près, sans droits) ;
toujours --delete --one-file-system, plus
--backup --backup-dir=.corbeille/<date> si CORBEILLE_JOURS > 0.