Table des matières

, , , , ,

Sauvegarder ses données

Quelles sont les données à sauvegarder ?

On va considérer deux cas : celui d'un ordinateur personnel et celui d'un serveur.

Dans le cas d'un ordinateur personnel, on va distinguer la partie système de la partie données personnelles. On considérera que l'on dispose du disque dur principal de l'ordinateur correctement partitionné, et d'un disque dur externe rapide.

Dans le cas d'un serveur, tout son contenu sera sauvegardé à distance (sur un autre serveur), via une liaison sécurisée.

Un disque principal bien partitionné

Il est crucial de bien séparer les données du système de ses données personnelles. C'est pour cela qu'il faut partitionner correctement son disque dur lors de l'installation de Linux.

Cf. Préparer son disque dur avant une installation de LinuxMint.

Installer un disque secondaire

J'ai choisi d'installer un disque externe rapide neuf.

Démontez toutes vos clés USB et retirez-les. Puis branchez le nouveau disque dur. Dans mon cas, il est reconnu comme disque /dev/sdb n'ayant qu'une partition (primaire) : /dev/sdb1.

La première chose à faire est de formater /dev/sdb1 en ext4 (toutes les données que cette partition peut contenir seront effacées) avec l'utilitaire gparted (à installer si ce n'est déjà fait).

Une fois ce disque formaté, fermez gparted, puis débranchez et rebranchez le disque.

Ouvrez un terminal et entrez :

ls /dev/disk/by-id/

Dans la liste qui s'affiche, vous devez reconnaître votre disque et sa partition n°1, dont le nom se termine par -part1.

ls -l /dev/disk/by-id/<identifiant de votre disque>-part1

doit retourner qu'il s'agit d'un lien symbolique vers ../../sdb1.

Il faut maintenant faire en sorte que ce disque soit monté automatiquement à chaque démarrage de votre ordinateur.

Si votre ordinateur est portable, il vous faudra brancher le disque externe avant de le démarrer. Si c'est un ordinateur de bureau, laissez ce disque branché en permanence.

Ajoutez à la fin de votre fichier /etc/fstab la ligne suivante :

/dev/disk/by-id/<identifiant de votre disque>-part1 /mnt/usb-SAUVEGARDES auto nosuid,nodev,nofail,x-gvfs-show 0 0

où <identifiant de votre disque> est à remplacer par l'identifiant que vous a donné la commande ls /dev/disk/by-id/ précédente.

Enregistrez votre fichier /etc/fstab et redémarrez votre ordinateur. Votre partition de sauvegarde devrait apparaître dans la liste des partitions montées. Ne la démontez jamais.

Le fichier /etc/fstab est un fichier sensible. Sauvegardez-le avant toute modification :
sudo cp /etc/fstab /etc/fstab.SVG

Puis, utilisez nano avec les droits root pour le modifier :

sudo nano /etc/fstab

Ajoutez votre ligne, puis une ligne vide en-dessous. Ensuite, pour sortir de nano tout en enregistrant les modifications, utilisez la combinaison de touches : [ctrl][x] puis répondez par O ou Y à la question posée et validez.

Sauvegarder le système d'un ordinateur personnel avec timeshift

Linux Mint fournit le logiciel timeshift, qui se lance à partir du menu Administration.

Pour vérifier que timeshift est bien installé :

which timeshift

La réponse doit être : /usr/bin/timeshift. Sinon, installez-le.

Lors de sa première utilisation, timeshift (qui nécessite que vous entriez votre mot de passe) vous demande de renseigner quelques paramètres :

Une fois tout ceci renseigné, créez une première sauvegarde ; cela prend quelques dizaines de minutes. Il est normal (enfin… presque) que le temps restant estimé reste plusieurs minutes à 00:00:00.

Vous n'aurez pas à vous préoccuper des sauvegardes suivantes, elles suivront le planning que vous avez défini.

Une fois votre sauvegarde effectuée, vous pouvez modifier votre système à votre guise (installer une nouvelle distribution, par exemple). Pour revenir en arrière, il vous suffit de lancer timeshift et de demander la restauration de votre dernière sauvegarde.

Sauvegarder les données personnelles d'un utilisateur avec rsnapshot

Installer rsnapshot

apt install rsnapshot anacron

Modifier le fichier de configuration

Faire une copie du fichier de configuration original, par précaution :

sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf_ORIG

Modifier avec les droits root le fichier /etc/rsnapshot.conf. Il doit contenir les lignes suivantes (utiliser la touche de tabulation comme séparateur dans chaque ligne, au lieu de la touche d'espace) :

config_version	1.2

snapshot_root	/mnt/usb-SAUVEGARDES/

no_create_root	1

cmd_cp		/bin/cp

cmd_rm		/bin/rm

cmd_rsync	/usr/bin/rsync

cmd_logger	/usr/bin/logger

cmd_du		/usr/bin/du

cmd_rsnapshot_diff	/usr/bin/rsnapshot-diff

retain	daily	7
retain	weekly	4

verbose		2

loglevel	3

lockfile	/var/run/rsnapshot.pid

backup	/home/<votre_identifiant>/		localhost/
backup	/etc/		localhost/
backup	/usr/local/	localhost/

Vérifier la configuration

La vérification de la configuration se fait à l'aide de la commande :

rsnapshot configtest

La réponse doit être :

Syntax OK

Si la réponse ressemble à celle ci-dessous, cela ne signifie pas forcément que l'erreur se situe ligne 99. Vérifiez que vos chemins vers des répertoires se terminent bien par un / et que vos séparateurs sont bien des tabulations.

----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot configtest 
----------------------------------------------------------------------------
ERROR: /etc/rsnapshot.conf on line 99:
ERROR: retain daily 7 
ERROR: ---------------------------------------------------------------------
ERROR: Errors were found in /etc/rsnapshot.conf,
ERROR: rsnapshot can not continue. If you think an entry looks right, make
ERROR: sure you don't have spaces where only tabs should be.

Comme nous avons défini deux types de sauvegardes, daily (quotidienne) et weekly (hebdomadaire), nous allons tester chacune d'elles sans qu'aucune sauvegarde ne soit effectuée :

rsnapshot -t daily

La réponse ressemble à cela :

echo 10292 > /var/run/rsnapshot.pid 
mkdir -m 0755 -p /mnt/usb-SAUVEGARDES/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/<identifiant>/ /mnt/usb-SAUVEGARDES/daily.0/localhost/ 
mkdir -m 0755 -p /mnt/usb-SAUVEGARDES/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \
    /mnt/usb-SAUVEGARDES/daily.0/localhost/ 
mkdir -m 0755 -p /mnt/usb-SAUVEGARDES/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local/ /mnt/usb-SAUVEGARDES/daily.0/localhost/ 
touch /mnt/usb-SAUVEGARDES/daily.0/

Explications :

  1. Ligne 1 : L'identifiant du process (PID, ici de valeur 10292) sera sauvegardé dans /var/run/rsnapshot.pid afin d'éviter que plusieurs sauvegardes ne s'exécutent simultanément.
  2. Ligne 2 : Le dossier /mnt/usb-SAUVEGARDES/daily.0/ sera ensuite créé, avec des droits permettant à tous les utilisateurs d'y accéder.
  3. Lignes 3 et 4 : La sauvegarde du répertoire /home/<identifiant>/ sera effectuée, à l'aide du programme rsync.
  4. Lignes 6 et 7 : La sauvegarde du répertoire /etc/ sera effectuée.
  5. Lignes 9 et 10 : La sauvegarde du répertoire /usr/local/ sera effectuée.
  6. Ligne 11 : Affectera la date et l'heure de la fin de ces sauvegardes au dossier /mnt/usb-SAUVEGARDES/daily.0/

Remarque : Les 7 sauvegardes quotidiennes sont effectuées dans des répertoires numérotés, de daily.0 à daily.6. Une sauvegarde hebdomadaire ne pourra s'effectuer que si le répertoire daily.6 existe.

rsnapshot -t weekly

La réponse sera, si le répertoire daily.6 n'existe pas (encore) qu'il n'y a rien à copier :

echo 10310 > /var/run/rsnapshot.pid 
/mnt/usb-SAUVEGARDES/daily.6 not present (yet), nothing to copy

Automatisation

Il est temps de créer le service et les timers pour automatiser ces sauvegardes.

Création du service

Créer avec les droits root le fichier /etc/systemd/system/rsnapshot@.service contenant :

[Unit]
Description=Sauvegarde rsnapshot (%I)

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=idle
ExecStart=/usr/bin/rsnapshot %I

Création des timers

Pour les sauvegardes quotidiennes, créer avec les droits root le fichier /etc/systemd/system/rsnapshot-daily.timer contenant :

[Unit]
Description=Sauvegarde quotidienne rsnapshot

[Timer]
OnCalendar=*-*-* 20:30:00
Persistent=true
Unit=rsnapshot@daily.service

[Install]
WantedBy=timers.target

Pour les sauvegardes hebdomadaires, créer avec les droits root le fichier /etc/systemd/system/rsnapshot-weekly.timer contenant :

[Unit]
Description=Sauvegarde hebdomadaire rsnapshot

[Timer]
OnCalendar=Mon *-*-* 19:00:00
Persistent=true
Unit=rsnapshot@weekly.service

[Install]
WantedBy=timers.target

La ligne OnCalendar définit l'horaire de la sauvegarde. Pour les quotidiennes, c'est chaque jour à 20h30. Pour les hebdomadaires, c'est chaque lundi (Mon pour Monday) à 19h00. Adaptez ces horaires de façon à ce que les sauvegardes s'exécutent à des moments où l'ordinateur est allumé mais peu utilisé. Plus de précisions ici (en anglais).

Vous pouvez vérifier votre ligne OnCalendar grâce à la commande :

systemd-analyze calendar "Mon *-*-* 19:00:00"

Activation des timers

Elle s'effectue grâce aux commandes :

sudo systemctl enable --now rsnapshot-daily.timer
sudo systemctl enable --now rsnapshot-weekly.timer

Pour vérifier leur bonne activation :

sudo systemctl list-timers rsnapshot*

La sortie doit ressembler à ceci :

NEXT                        LEFT        LAST                        PASSED       UNIT                   ACTIVATES               
Tue 2022-11-01 20:30:00 CET 7h left     Mon 2022-10-31 20:30:01 CET 17h ago      rsnapshot-daily.timer  rsnapshot@daily.service
Mon 2022-11-07 19:00:00 CET 6 days left Mon 2022-10-31 19:00:01 CET 18h ago      rsnapshot-weekly.timer rsnapshot@weekly.service

2 timers listed.
Pass --all to see loaded but inactive timers, too.
Éventuellement, quitter par un appui sur la touche Q.

C'est terminé. Les sauvegardes se feront automatiquement aux moments définis.

Optionnel : Raccourci sur le bureau

Pour effectuer une sauvegarde quotidienne, qui n'entrera pas en concurrence avec celle qui est programmée, grâce à un raccourci sur le bureau, voici comment procéder.

Script sauvegarde_quotidienne.sh

Créer, s'il n'existe pas déjà, le dossier $HOME/bin/ :

mkdir -p $HOME/bin

Dans ce dossier, créer le fichier sauvegarde_quotidienne.sh contenant :

#!/bin/bash
[ -d /mnt/usb-SAUVEGARDES/ ] || notify-send -u critical -i mintbackup-data "Brancher le disque des sauvegardes !" "Fermer ceci une fois fait"

notify-send -u normal -i mintbackup-data "La sauvegarde quotidienne commence..." "Merci de patienter"

sudo rsnapshot daily ||  { 
    notify-send -u critical -i mintbackup-data "Sauvegarde impossible" 
    exit 1
} && {
    notify-send -u normal -i mintbackup-data "La sauvegarde quotidienne est terminée"
    exit 0
}

Rendez-le exécutable :

chmod +x $HOME/bin/sauvegarde_quotidienne.sh

Exécuter sudo rsnapshot sans mot de passe

sudo visudo /etc/sudoers.d/rsnapshot

Copier dans l'éditeur qui vient de s'ouvrir la ligne :

%sudo ALL = NOPASSWD: /usr/bin/rsnapshot

Sauvegarder avec Ctrl+X puis O ou Y. Valider.

Raccourci sur le bureau

Créer le fichier du raccourci.

touch $HOME/Bureau/Sauvegarde\ Quotidienne.desktop

Clic-droit sur le fichier qui vient d'apparaître sur le Bureau, Ouvrir avec… éditeur de texte.

Y copier les lignes suivantes, en renseignant <votre_identifiant> :

[Desktop Entry]
Name=Sauvegarde quotidienne
Exec=/home/<votre_identifiant>/bin/sauvegarde_quotidienne.sh
Comment=Brancher le disque des sauvegardes avant !
Terminal=false
Icon=mintbackup-data
Type=Application

Enregistrer.

Clic-droit sur le fichier → Propriétés… → Permissions → cocher “Autoriser l'exécution du fichier comme un programme”.

C'est prêt !

Sauvegarder les données d'un serveur avec rsnapshot

Liens

Mise en place de rsnapshot :

Autres pistes que rsnapshot :

4 personnes ont visité cette page aujourd'hui et 1644 en tout.