alpinux.presentations/slides/sauvegardes/script/LISEZMOI.md
Cédrix a04a72054a
Ajouter la sauvegarde automatique sur clé USB
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
2026-11-05 17:44:54 +01:00

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échargements peut ê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 ligne crypt (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 SOURCES est 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.