Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:sauvegarder_home_avec_rsync [Le 02/02/2024, 12:47]
geole [Environnement]
tutoriel:sauvegarder_home_avec_rsync [Le 24/03/2024, 18:35] (Version actuelle)
geole [Plusieurs exemples de lignes de commande pour la sauvegarde de /home/]
Ligne 2: Ligne 2:
  
 ====== Sauvegarder "/​home"​ avec rsync ====== ====== Sauvegarder "/​home"​ avec rsync ======
 +===== Introduction =====
 +
 <note tip>De façon standard, les données personnelles sont stockées dans le répertoire **home**. d'où le titre du document. Cependant, certains utilisateurs peuvent choisir de les stocker ailleurs. Utiliser rsync pour dupliquer rapidement, à l'​identique les données sauvegardées dans un NAS n'est pas superflu. Le logiciel ​ du [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2079381|NAS]] peut très bien dysfonctionner suite à un événement [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2078226|imprévu]] ​ et rendre impossible l'​accès aux données.</​note>​ <note tip>De façon standard, les données personnelles sont stockées dans le répertoire **home**. d'où le titre du document. Cependant, certains utilisateurs peuvent choisir de les stocker ailleurs. Utiliser rsync pour dupliquer rapidement, à l'​identique les données sauvegardées dans un NAS n'est pas superflu. Le logiciel ​ du [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2079381|NAS]] peut très bien dysfonctionner suite à un événement [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2078226|imprévu]] ​ et rendre impossible l'​accès aux données.</​note>​
 <note warning>​Cette documentation propose une utilisation simple de [[:rsync]] afin de créer une copie du répertoire ''/​home''​. <note warning>​Cette documentation propose une utilisation simple de [[:rsync]] afin de créer une copie du répertoire ''/​home''​.
Ligne 148: Ligne 150:
  
   */home/ : répertoire source   */home/ : répertoire source
-  */​media/​save_homes/​ : répertoire destination+  */​media/​save_homes/​ : répertoire destination== 
  
 +== Propositions diverses ==
 + ​[[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22740679#​p22740679|A]] : Avoir la possibilité de synchroniser le Home et différents Dossiers de ce dernier séparément , avoir un retour du déroulement par mail, et ceci en trois clics.
 +
 +[[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22747080#​p22747080|B]] : Sauvegarde des données de tous les utilisateurs managée par les services de [[:​systemd|systemd]] ​ au lieu des commandes cron avec alertes ​ à l'​écran de l'​utilisateur connecté. Conservation des très vieilles données dans une autre partition. Sauvegardes lentes régulières et sauvegardes rapides à l'​arrêt machine.
 +
 +
 +Les options sont -aPv --delete --exclude=
  
 == À vous ! == == À vous ! ==
Ligne 327: Ligne 336:
 <note important>​Noter que l'​ordinateur doit fonctionner à 23 heures ​ et 23 heures 30 le vendredi pour que ces sauvegardes soient exécutées.</​note>​ <note important>​Noter que l'​ordinateur doit fonctionner à 23 heures ​ et 23 heures 30 le vendredi pour que ces sauvegardes soient exécutées.</​note>​
 ==== Sauvegarde utilisant une fois l'​espace disque émetteur augmenté de la taille cumulée des modifications ==== ==== Sauvegarde utilisant une fois l'​espace disque émetteur augmenté de la taille cumulée des modifications ====
 +=== Créer le script de sauvegarde ===
 + ​Prendre le soin de renseigner les répertoires à traiter et de vérifier que le répertoire sortie est aussi accessible en écriture à root.
 +<code bash>​cat>/​$HOME/​Rsync.sh<<​EOF
 +#!/bin/bash
 +#######################################​
 +source="​REPERTOIRE_A_SAUVER" ​            #### Exemple source=$HOME/'​Mon Répertoire'​
 +destination="​REPERTOIRE_DE_SAUVEGARDE" ​  #### Sans espaces ni caractères spéciaux. Exemple destination=/​media/​Sauvegarde/​MaSauvegarde
 +Conservation=366 ​                        #### Toutes les modifications des fichiers sont conservées pendant 366 jours.
 +##################################​
 +#  Epuration et Sauvegarde des fichiers de REPERTOIRE_A_SAUVER.
 +###################################​
 +shopt -s globstar
 +   find "​\$destination" ​ -name "​*.OLD-*" ​ -mtime +\$Conservation -exec rm -v {}\; 
 +   rsync -aRbcx --delete --suffix="​.OLD-\$(date +"​%y%m%d%H"​)" ​ "​\$source" ​ \$destination ​
 +EOF  ​
 +sleep 1
 +chmod +x $HOME/​Rsync.sh
 +cat  $HOME/​Rsync.sh ​  #### afin de vérifier que les anti-slash ont bien été éliminés.</​code>​
 +=== Créer le fichier service de la sauvegarde, l'​activer et vérifier qu'il fonctionne. ===
 +<code bash>​mkdir -pv $HOME/​.config/​systemd/​user
 +cat>​$HOME/​.config/​systemd/​user/​Rsync.service<<​EOF ​
 +[Unit]
 +Description=Duplication du répertoire $source dans le répertoire $destination
 +DefaultDependencies=no
 +[Service]
 +Type=oneshot
 +ExecStart=$HOME/​Rsync.sh
 +TimeoutSec=15minutes
 +#### Durée exécution maxima d'​exécution avant plantage ​     ​
 +[Install]
 +WantedBy=timers.target
 +EOF
 +sleep 1 
 +systemctl --user enable Rsync
 +systemctl --user start  Rsync
 +systemctl --user --no-pager status Rsync</​code>​
 +
 +=== Créer et Activer le   ​service cyclique ​ horaire et journalier ===
 +Voir les codifications [[https://​wiki.archlinux.org/​title/​systemd/​Timers|possible.]]
 +Adapter si besoin.
 +<code bash>​cat>​$HOME/​.config/​systemd/​user/​Rsync.timer<<​EOF
 +[Unit]
 +Description=Lance une sauvegarde toutes les deux heures et à 16 heures 45
 +[Timer]
 +OnActiveSec=1h
 +OnUnitActiveSec=2h
 +OnCalendar=*-*-* 16:45:00
 +[Install]
 +WantedBy=timers.target
 +EOF
 +sleep 1
 +systemctl --user enable Rsync.timer
 +systemctl --user start Rsync.timer ​
 +systemctl --user --no-pager status Rsync.timer</​code>​
  
  
Ligne 335: Ligne 398:
  
  
-La mise au point de cette méthode se fait en quatre étapes assez simples. Au final, elle permet, d'un seul clic sur un bouton de la barre des tâches, d'​arrêter l'​ordinateur en faisant précéder cet arrêt d'une sauvegarde de tous les éléments nouveaux ou modifiés sur /home. La solution idéale pour toujours disposer d'une sauvegarde totalement à jour. +La mise au point de cette méthode se fait en quatre étapes assez simples. Au final, elle permet, d'un seul clic sur un bouton de la barre des tâches, d'​arrêter l'​ordinateur en faisant précéder cet arrêt d'une sauvegarde de tous les éléments nouveaux ou modifiés sur /home.
-Objectif : disposer d'une sauvegarde à l'​identique (avec option %%--del%%) de '/​home'​... et en plus une sauvegarde en double du bureau (Desktop) et du dossier "​Documents",​ (sans l'​option %%--%%del) pour ne pas avoir à regretter de ne disposer que d'une sauvegarde ayant fidèlement effacé des documents qui auraient été effacés par erreur du bureau ou du dossier "​Documents"​.+
  
-=== 1ère étape : créer le script ​de sauvegarde. ===+Il existe une variante permettant d'​utiliser les boutons d'​arrêt normal ​de l'​ordinateur **mais** elle ne permet pas d'​empêcher l'​arrêt de l'​ordinateur ​ si la sauvegarde ​comporte des erreurs!!!
  
 +La solution idéale pour toujours disposer d'une sauvegarde totalement à jour.
 +
 +Objectif : disposer d'une sauvegarde à l'​identique (avec option %%--del%%) de '/​home'​... et en plus une sauvegarde en double du bureau (Desktop) et du dossier "​Documents",​ (sans l'​option %%--%%del) pour ne pas avoir à regretter de ne disposer que d'une sauvegarde ayant fidèlement effacé des documents qui auraient été effacés par erreur du bureau ou du dossier "​Documents"​.
 +==== 1ère étape : créer le script de sauvegarde ====
 En voici un modèle. À vous de l'​adapter selon vos besoins : En voici un modèle. À vous de l'​adapter selon vos besoins :
-<​code>​ +<​code ​bash>#​!/​bin/​bash
-#!/bin/bash+
 # Vérifie la présence du volume : le script effectue la vérification du montage de la partition "​Sauve_home"​ du disque dur externe usb. # Vérifie la présence du volume : le script effectue la vérification du montage de la partition "​Sauve_home"​ du disque dur externe usb.
-# Si cette partition est montée, l'​autre partition de ce même disque externe (qui sert dans ce script +# Si cette partition est montée, l'​autre partition de ce même disque externe (qui sert dans ce script à la sauvegarde du contenu d'une partition fat32), est forcément montée aussi.).
-à la sauvegarde du contenu d'une partition fat32), est forcément montée aussi.+
 if [ ! -e "/​media/​Sauve_home/"​ ] if [ ! -e "/​media/​Sauve_home/"​ ]
 then then
 echo "​Erreur,​ le volume de sauvegarde est absent."​ echo "​Erreur,​ le volume de sauvegarde est absent."​
 exit exit
 +fi
 +if [ ! "​$(mountpoint /​media/​Sauve_home)"​ = "/​media/​Sauve_home est un point de montage"​ ]
 +then
 +echo "​Erreur,​ le volume de sauvegarde n'est pas monté."​
 fi fi
 #titre de lancement de la sauvegarde générale #titre de lancement de la sauvegarde générale
Ligne 373: Ligne 441:
   ​   ​
 # Sauvegarde du bureau (/​home/​votre_identité/​Desktop) vers la partition ext4 du disque dur externe : # Sauvegarde du bureau (/​home/​votre_identité/​Desktop) vers la partition ext4 du disque dur externe :
-rsync -av --stats --filter "- *.iso" /​home/​votre_identité/​Desktop/ /​media/​Sauve_home/​SauvHomeLieuDesktop/​ 2>> $backup+rsync -av --stats --filter "- *.iso" /​home/​votre_identité/​Bureau/ /​media/​Sauve_home/​SauvHomeLieuDesktop/​ 2>> $backup
   ​   ​
 # Sauvegarde du dossier '​Documents'​ (/​home/​votre_identité/​Documents) vers la partition ext4 du disque dur externe : # Sauvegarde du dossier '​Documents'​ (/​home/​votre_identité/​Documents) vers la partition ext4 du disque dur externe :
Ligne 384: Ligne 452:
   date >> $backup   date >> $backup
 } }
-fi +fi</​code>​ 
-   +Choix éventuel d'​ajouter l'​arrêt de l'​ordinateur dans le script. 
-# Arrêt de l'​ordinateur :+<code bash># Arrêt de l'​ordinateur :
 # Sous LUCID : # Sous LUCID :
 dbus-send --print-reply --dest=org.gnome.SessionManager /​org/​gnome/​SessionManager org.gnome.SessionManager.RequestShutdown dbus-send --print-reply --dest=org.gnome.SessionManager /​org/​gnome/​SessionManager org.gnome.SessionManager.RequestShutdown
Ligne 395: Ligne 463:
 # Sous KARMIC : # Sous KARMIC :
 #/​usr/​lib/​indicator-session/​gtk-logout-helper --shutdown #/​usr/​lib/​indicator-session/​gtk-logout-helper --shutdown
 +# Sous JAMMY :
 +systemectl poweroff
 </​code>​ </​code>​
  
Ligne 413: Ligne 483:
 </​note>​ </​note>​
  
-=== 2ème étape : créer le lanceur ​=== +==== 2ème étape : Lancement de la sauvegarde ==== 
 +=== Il est possible de fabriquer un lanceur qui contiendra l'​arrêt de l'​ordinateur. ===
 Ajouter au tableau de bord un "​lanceur d'​application personnalisé"​ (clic droit sur celui des tableaux de bord où se trouve l'​icône d'​arrêt de l'​ordinateur)... Ajouter au tableau de bord un "​lanceur d'​application personnalisé"​ (clic droit sur celui des tableaux de bord où se trouve l'​icône d'​arrêt de l'​ordinateur)...
 Nom du lanceur : "​Sauvegarde Générale + Arrêt"​ Nom du lanceur : "​Sauvegarde Générale + Arrêt"​
  
 Commande : Commande :
-<​code>​xterm -geometry 170x60 -sb -rightbar -hold -e /​home/​votre_identité/​Documents/​Sauvegardes/​sauvegarde_generale</​code>​ +<​code ​bash>xterm -geometry 170x60 -sb -rightbar -hold -e /​home/​votre_identité/​Documents/​Sauvegardes/​sauvegarde_generale</​code>​ 
-//Vous pouvez régler la taille du terminal xterm "​-geometry 170x60"​ en fonction de la taille de votre écran. Pour faire défiler les données avec l'​ascenseur : utiliser clic droit/clic gauche.//+//Vous pouvez régler la taille du terminal xterm "​-geometry 170x60"​ en fonction de la taille de votre écran. Pour faire défiler les données avec l'​ascenseur : utiliser clic droit/clic gauche.//</​code>​
  
 On peut utiliser une icône semblable à celle d'​arrêt de l'​ordinateur... et signifiant en même temps la sauvegarde. Il est judicieux de placer l'​icône de ce lanceur juste à côté de celle commandant l'​arrêt du PC (pour association d'​idée). On peut utiliser une icône semblable à celle d'​arrêt de l'​ordinateur... et signifiant en même temps la sauvegarde. Il est judicieux de placer l'​icône de ce lanceur juste à côté de celle commandant l'​arrêt du PC (pour association d'​idée).
Ligne 427: Ligne 497:
   * sans sauvegarde, clic sur l'​icône d'​arrêt de l'​ordinateur :​{{tutoriel:​stop.png|}}\\ (ce qui permet d'​accéder aux autres choix habituels : Redémarrer,​ Hibernation,​ etc.)   * sans sauvegarde, clic sur l'​icône d'​arrêt de l'​ordinateur :​{{tutoriel:​stop.png|}}\\ (ce qui permet d'​accéder aux autres choix habituels : Redémarrer,​ Hibernation,​ etc.)
   * avec sauvegarde, clic sur l'​icône :​{{tutoriel:​sauv_and_stop.png|}}\\ (avec dans ce cas obligatoirement l'​arrêt de l'​ordinateur).   * avec sauvegarde, clic sur l'​icône :​{{tutoriel:​sauv_and_stop.png|}}\\ (avec dans ce cas obligatoirement l'​arrêt de l'​ordinateur).
 +=== Il est possible de lancer le script pendant l'​arrêt standard de l'​ordinateur ===
 +Prendre [[:​creer_un_service_avec_systemd|connaissance]] du fonctionnement des services de systemd.
 +
 +Se mettre administrateur et faire un copier/​coller de ces commandes après avoir adapté le nom du script à lancer et la durée d'​exécution prévisible.
 +<code bash>
 +cat>/​etc/​systemd/​system/​Sauvegarde.service<<​EOF ​   ​
 +[Unit]
 +Description=Sauvegarde Générale
 +DefaultDependencies=no
 +Before=shutdown.target sleep.target ​
 +[Service]
 +Type=oneshot
 +ExecStart=/​Lieu/​de/​stockage/​du/​script/​de/​Sauvegarde
 +StandardOutput=journal+console
 +StandardError=journal+console
 +TimeoutSec=15minutes
 +#### Durée exécution avant plantage ​     ​
 +[Install]
 +WantedBy=shutdown.target sleep.target
 +EOF
 +sleep 1
 +systemctl enable Sauvegarde
 +###​Vérifier qu'il se lance sans erreur
 +systemctl --no-pager status Sauvegarde;​journalctl --no-pager -b -g Sauvegarde</​code>​
 +Quitter le mode administrateur.
 +
 +
  
  
Ligne 469: Ligne 566:
 </​note>​ </​note>​
  
-=== 4ème étape : créer un script nommé "​signalement_erreurs"​ ===+==== 4ème étape : créer un script nommé "​signalement_erreurs" ​====
  
 Ce script, lancé au démarrage, affiche le fichier backuperror au démarrage de l'​ordinateur si ce fichier backuperror n'est pas vide. Ce script, lancé au démarrage, affiche le fichier backuperror au démarrage de l'​ordinateur si ce fichier backuperror n'est pas vide.
Ligne 491: Ligne 588:
  
 N.B. : dans ce script, remplacez si besoin "​gedit"​ par l'​éditeur de fichier disponible sur votre version d'​Ubuntu,​ Kubuntu, Xubuntu ou Edubuntu... N.B. : dans ce script, remplacez si besoin "​gedit"​ par l'​éditeur de fichier disponible sur votre version d'​Ubuntu,​ Kubuntu, Xubuntu ou Edubuntu...
- 
-Pour que ce script soit lancé au démarrage : 
-**Système->​Préférences->​Sessions->​Onglet "​Programmes au démarrage"​->​Ajouter->​Parcourir (pour indiquer le chemin du script "​signalement_erreurs"​)->​Valider** 
  
 Alors, la sauvegarde se fait juste avant l'​arrêt de l'​ordinateur. Au démarrage : RAS s'il n'y a eu aucune erreur lors de la sauvegarde... Alors, la sauvegarde se fait juste avant l'​arrêt de l'​ordinateur. Au démarrage : RAS s'il n'y a eu aucune erreur lors de la sauvegarde...
 ... mais s'il y a eu la moindre erreur lors de la sauvegarde, le fichier "​backuperror"​ est ouvert par gedit (ou autre éditeur de fichier). ... mais s'il y a eu la moindre erreur lors de la sauvegarde, le fichier "​backuperror"​ est ouvert par gedit (ou autre éditeur de fichier).
 +Pour que ce script soit lancé au démarrage, deux possibilités :
 +
 +**Soit ajout classique.**
 +
 +**Système->​Préférences->​Sessions->​Onglet "​Programmes au démarrage"​->​Ajouter->​Parcourir (pour indiquer le chemin du script "​signalement_erreurs"​)->​Valider**
 +
 +**Soit ajout d'un service** reprenant le script.
 +<code bash>
 +cat>​$HOME/​.config/​systemd/​user/​Gedit.service<<​EOF ​
 +[Unit]
 +Description=Lancer gedit
 +[Service]
 +Type=oneshot ​
 +ExecStartPre=sleep 30
 +#### Afin de permettre à la partie graphique de finir de  s'​initialiser. 10 secondes sont probablement suffisantes.
 +ExecStart=/​home/​%u/​signalement_erreurs
 +ExecStartPost=systemct --user stop Gedit
 +[Install] ​
 +WantedBy=default.target  ​
 +EOF
 +systemctl --user enable Gedit</​code>​
 +
 +
 +
  
  
Ligne 520: Ligne 638:
  
 Si vous obtenez le message "​Sauvegardes réussies",​ cela signifie que le processus s'est déroulé sans erreur. Lors des premières utilisations de votre script, vérifiez cependant la qualité de vos sauvegardes en effectuant les tests qui conviennent. Si vous obtenez le message "​Sauvegardes réussies",​ cela signifie que le processus s'est déroulé sans erreur. Lors des premières utilisations de votre script, vérifiez cependant la qualité de vos sauvegardes en effectuant les tests qui conviennent.
 +
 +<​note>​Dans un contexte, d'​arrêt automatique,​ il faut enlever les options ​   [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=571231|quiet splash ]] du grub pour pouvoir visualiser le message.(non testé)</​note>​
  
  
  • tutoriel/sauvegarder_home_avec_rsync.1706874460.txt.gz
  • Dernière modification: Le 02/02/2024, 12:47
  • par geole