# 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 ?](#pour-qui) | [Tester](#tester) | [Restaurer un fichier](#restaurer-un-fichier) | | [Ce que ça fait](#ce-que-ça-fait) | [Lire le journal](#lire-le-journal) | [Désinstaller](#désinstaller) | | [Installer (3 commandes)](#installer-en-3-commandes) | [Régler](#régler) | [Limites](#limites-à-connaître) | | [Trouver l'UUID](#trouver-luuid-de-sa-clé) | | [Comment ça marche](#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 : ```bash 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 : ```bash 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 ```bash 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 ```bash 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//…`, 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 : ```bash find /media/$USER/*/.corbeille -iname '*lettre*' ``` **Tout restaurer** (nouvel ordinateur…) : copiez le contenu de `Sauvegarde//` 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 ```bash 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//…`, 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/` si `CORBEILLE_JOURS` > 0.