{{tag>sauvegarde données rsnapshot rsync timeshift linuxmint}} ====== 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. [[linuxaddict:installer:preparer_le_disque_dur|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 [[https://doc.ubuntu-fr.org/gparted|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/-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/-part1 /mnt/usb-SAUVEGARDES auto nosuid,nodev,nofail,x-gvfs-show 0 0 où 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 : * 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// 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// /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//'' 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é. [[https://man.archlinux.org/man/systemd.time.7#CALENDAR_EVENTS|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 : [Desktop Entry] Name=Sauvegarde quotidienne Exec=/home//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// : * [[https://wiki.archlinux.org/title/rsnapshot#External_Drives|rsnapshot]] (en anglais) * [https://man.archlinux.org/man/systemd.time.7|systemd - time]] (en anglais) * [[https://wiki.archlinux.org/title/Systemd#Using_units|systemd - Using units]] (en anglais) * [[https://doc.ubuntu-fr.org/rsnapshot|rsnapshot - Doc Ubuntu fr]] Autres pistes que rsnapshot : * [[https://wiki.archlinux.org/title/Borg_backup_(Fran%C3%A7ais)|Borg Backup]] et [[https://wiki.archlinux.fr/Sauvegarde_des_donn%C3%A9es_avec_BORG|Sauvegarde des données avec Borg]] (Wiki Arch) * [[https://borgbackup.readthedocs.io/en/stable/usage/general.html|Borg Backup sur ReadTheDocs]] (en anglais) * [[https://doc.ubuntu-fr.org/borgbackup|Borg Backup sur Doc Ubuntu]] * [[https://connect.ed-diamond.com/Linux-Pratique/LP-098/Ne-procrastinez-plus-vos-sauvegardes-grace-a-Borg3|Ne procrastinez plus vos sauvegardes grâce à Borg (Linux Pratique)]] {{counter|today| personne a visité cette page aujourd'hui| personnes ont visité cette page aujourd'hui}} et {{counter}} en tout.