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.
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.
/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 :
- Type d'instantané : RSYNC.
- Emplacement : une partition ayant une grande capacité sur votre disque dur (avec les exemples donnés ici :
/dev/sda5
ou/dev/sdb1
.) - Planning : Choisissez la fréquence de vos sauvegardes.
- Utilisateurs : Normalement, le choix est préconfiguré à “Exclude All Files” pour tous les utilisateurs et pour root ; c'est correct.
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 :
- 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. - Ligne 2 : Le dossier
/mnt/usb-SAUVEGARDES/daily.0/
sera ensuite créé, avec des droits permettant à tous les utilisateurs d'y accéder. - Lignes 3 et 4 : La sauvegarde du répertoire
/home/<identifiant>/
sera effectuée, à l'aide du programme rsync. - Lignes 6 et 7 : La sauvegarde du répertoire
/etc/
sera effectuée. - Lignes 9 et 10 : La sauvegarde du répertoire
/usr/local/
sera effectuée. - 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 :
- rsnapshot (en anglais)
- [https://man.archlinux.org/man/systemd.time.7|systemd - time]] (en anglais)
- systemd - Using units (en anglais)
Autres pistes que rsnapshot :
- Borg Backup et Sauvegarde des données avec Borg (Wiki Arch)
- Borg Backup sur ReadTheDocs (en anglais)
3 personnes ont visité cette page aujourd'hui et 1643 en tout.