logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
Prochaine révision Les deux révisions suivantes
utilisateurs:philou92:tutos:sauvegarde-systeme-leger [03/07/2017 22:57]
Philou92 [Installation]
utilisateurs:philou92:tutos:sauvegarde-systeme-leger [04/07/2017 00:07]
Philou92 [Introduction]
Ligne 9: Ligne 9:
 Ce tuto donne une méthode pour sauvegarder son système d'​exploitation debian et le répertoire /home Ce tuto donne une méthode pour sauvegarder son système d'​exploitation debian et le répertoire /home
  
-Motivation principale de ce tuto :+__**Motivation principale de ce tuto :**__ 
 Hormis la sauvegarde du répertoire /home sur lequel on trouve pléthore d'​excellentes solutions sur le net, ce tuto essaye d'​apporter une façon de sauvegarder le système de façon légère et rapide. Légère en taille d'​enregistrement en ne gardant que les fichiers utiles et rapide en ne sauvegardant que ce qui a changé entre deux sauvegardes. Hormis la sauvegarde du répertoire /home sur lequel on trouve pléthore d'​excellentes solutions sur le net, ce tuto essaye d'​apporter une façon de sauvegarder le système de façon légère et rapide. Légère en taille d'​enregistrement en ne gardant que les fichiers utiles et rapide en ne sauvegardant que ce qui a changé entre deux sauvegardes.
 +
 Le système est sauvegardé alternativement dans deux conteneurs BANK1 et BANK2. dans le cas ou une sauvegarde serait corrompue la deuxième sert de roue de secours. Le système est sauvegardé alternativement dans deux conteneurs BANK1 et BANK2. dans le cas ou une sauvegarde serait corrompue la deuxième sert de roue de secours.
-Pour le répertoire /home j'ai opté pour une sauvegarde incrémentale qui garde l'​historique des fichiers modifiés ou supprimés. En cas de besoin il sera possible de revenir ​en chercher des fichiers à la demande des utilisateurs du PC.+ 
 +Pour le répertoire /home j'ai opté pour une sauvegarde incrémentale qui garde l'​historique des fichiers modifiés ou supprimés. En cas de besoin il sera possible de revenir chercher des fichiers ​perdus ​à la demande des utilisateurs ​du PC. 
 + 
 +Par défaut les sauvegardes sont programmées à intervalle minimale de 7 jours. Les utilisateurs du groupe "​sauvegarde"​ pourront à tous moment déclencher ponctuellement une demande de sauvegarde. 
 + 
 +Les sauvegardes ont lieu à l'​arrêt ​du PC.
  
 Bien sûre une sauvegarde sans méthode de restauration n'a aucun intérêt. C'est l'​objet du deuxième tuto : lien FIXME. Bien sûre une sauvegarde sans méthode de restauration n'a aucun intérêt. C'est l'​objet du deuxième tuto : lien FIXME.
Ligne 18: Ligne 25:
 <note important>​Prérequis systeme : Votre systeme d'​initialisation est **systemd**. <note important>​Prérequis systeme : Votre systeme d'​initialisation est **systemd**.
  
-Prérequis Matériel : Vous aurez besoin d'un support de sauvegarde __dédié__. Personnellement j'ai fais le choix d'un Disque dur USB du commerce. Dans ce que va suivre je pars du principe que c'est ce type de support qui est utilisé.</​note>​+Prérequis Matériel : Vous aurez besoin d'un support de sauvegarde __dédié__. Personnellement j'ai fais le choix d'un Disque dur USB du commerce. ​ 
 + 
 +Le Disque dur est formaté dans un format équivalent à votre système (exemple ext4).  
 + 
 +Si besoin voir la commande mkfs [[https://​debian-facile.org/​doc:​systeme:​mkfs?​s[]=ext4]]. 
 + 
 +Dans ce que va suivre je pars du principe que c'est ce type de support qui est utilisé.</​note>​
  
 Maintenant en avant toute... Maintenant en avant toute...
Ligne 29: Ligne 42:
 L'​installation des deux paquets suivants est facultative : L'​installation des deux paquets suivants est facultative :
  
-<​note>​j'​ai noté dans les scripts les parties peuvent-être ajoutées ou supprimées selon la convenance</​note>​+<​note>​j'​ai noté dans les scripts les parties peuvent-être ajoutées ou supprimées selon la convenance ​encadrés par des lignes #​----------#​ en haut et en bas</​note>​
  
 __**l'​outil debconf-utils**__ ​ __**l'​outil debconf-utils**__ ​
Ligne 51: Ligne 64:
  
  
-===== Utilisation ​=====+===== Mise en place du système de sauvegarde ​=====
  
 +
 +==== Préparation du disque dur ====
 +
 +Récupérer l'UUID du disque de sauvegarde :
 +blkid
 +
 +repérez votre disque comme ici :
 +LABEL="​Sauvegarde"​ UUID="​8498c62b-ad6f-4966-990e-822f729a01c3"​ TYPE="​ext4"​ PARTUUID="​f239042f-01"​
 +
 +editez votre fichier /etc/fstab avec votre éditeur favori (nano, vim) et ajoutez la ligne suivante
 +#​UUID=8498c62b-ad6f-4966-990e-822f729a01c3 /​mnt/​sauvegarde ​ ext4  defaults,​nofail
 +    ,​noauto ​   0     
 +
 +La ligne est pour l'​instant commentée
 +
 +==== Création du service de sauvegarde ====
 +
 +
 +Créer le fichier suivant : sauvegarde.service dans le répertoire /​etc/​systemd/​system/​
 +
 +<file config service.sauvegarde>​
 +[Unit]
 +Description=Sauvegarde systeme et home
 +Before=shutdown.target reboot.target halt.target
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/​bin/​true
 +ExecStop=/​root/​backup/​rsync-backup.sh
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +
 +</​file>​
 +Puis démarrer le service en saisissant les commandes suivantes :
 +<code root>​systemctl daemon-reload
 +systemctl enable sauvegarde.service
 +systemctl start sauvegarde.service</​code>​
 +
 +
 +
 +
 +
 +==== Création d'un groupe utilisateurs "​sauvegarde"​ ====
 +Ce groupe va permettre à des utilisateurs de confiance (vous à priori) à déclencher une sauvegarde ponctuelle.
 +
 +Créer le groupe sauvegarde
 +
 +<code root>​addgroup sauvegarde</​code>​
 +<code config retour de la commande>​Ajout du groupe « sauvegarde » (GID 1003)...
 +Fait.</​code>​
 +
 +
 +Ajouter un ou plusieurs <​USER>​ habilité(s) à déclencher une sauvegarde ponctuelle au groupe "​sauvegarde"​.
 +<code root>​adduser <​USER1>​ sauvegarde</​code>​
 +<code config retour de la commande>​Ajout de l'​utilisateur « <​USER1>​ » au groupe « sauvegarde »...
 +Ajout de l'​utilisateur <​USER1>​ au groupe sauvegarde
 +Fait.</​code>​
 +
 +Créer le répertoire /​usr/​local/​sauvegarde/​
 +<code root>cd /usr/local
 +mkdir sauvegarde
 +cd sauvegarde</​code>​
 +A l'​intérieur du répertoire faire un 
 +<code root>​touch rsync-backup-user.date
 +touch rsync-backup-user.sh</​code>​
 +
 +Ajouter le script suivant au fichier rsync-backup-user.sh avec votre éditeur préféré :
 +
 +<file bash rsync-backup-user.sh>​
 +#! /bin/sh
 +touch /​usr/​local/​sauvegarde/​rsync-backup-user.date
 +exit
 +</​file>​
 +
 +
 +Ajouter les deux fichier au groupe sauvegarde
 +<code root>​chgrp sauvegarde rsync-backup-user.date
 +chgrp sauvegarde rsync-backup-user.sh</​code>​
 +Modifiez les droits des deux fichiers comme suit:
 +<code root>​chmod 750 rsync-backup-user.sh
 +chmod 660 rsync-backup-user.date</​code>​
 +Vérifiez les droits :
 +<code root>ls -al</​code>​
 +<code config retour de la commande>​drwxr-sr-x ​ 2 root staff      4096 juin  29 22:05 .
 +drwxrwsr-x 11 root staff      4096 juin  29 22:03 ..
 +-rw-rw---- ​ 1 root sauvegarde ​   0 juin  29 22:03 rsync-backup-user.date
 +-rwxr-x--- ​ 1 root sauvegarde ​  68 juin  29 22:05 rsync-backup-user.sh
 +</​code>​
 +
 +==== Le script de sauvegarde ====
 +
 +
 +Créer le répertoire /​root/​backup/​
 +<code root>cd /root
 +mkdir backup
 +cd backup</​code>​
 +
 +A l'​intérieur créer les trois fichiers suivants :
 +<code root>​touch rsync-backup.log
 +touch rsync-backup.date
 +touch rsync-backup.sh</​code>​
 +
 +<​note>​Comme son extension le souligne, le fichier rsync-backup.log enregistre les événements d'​erreur ou de réussite de la sauvegarde.</​note>​
 +
 +Editer le fichier rsync-backup.sh et ajouter le script suivant:
 +<​note>​(modifier la ligne 24 avec l'UUID de votre disque)</​note>​
 +
 +<file bash rsync-backup.sh>​
 +#! /bin/sh
 +SOURCE="/"​
 +MONTAGE="/​mnt/​sauvegarde"​
 +DESTINATION1="/​mnt/​sauvegarde/​BANK1"​
 +DESTINATION2="/​mnt/​sauvegarde/​BANK2"​
 +BANKSTATUS="/​mnt/​sauvegarde/​BANK.status"​
 +JOURNAL="/​root/​backup/​rsync-backup.log"​
 +LASTDATE="/​root/​backup/​rsync-backup.date"​i
 +NBJOUR=$((($(date -u +%s) - $(date -ur $LASTDATE ​ +%s))/​86400))
 +APPELUSER="/​usr/​local/​sauvegarde/​rsync-backup-user.date"​
 +NBJOURUSER=$((($(date -u +%s) - $(date -ur $APPELUSER +%s))/​86400))
 +
 +# test si la date d'​échéance est arrivée
 +if [ $NBJOUR -lt 7 ]; 
 +then
 + echo "​`date` Pas le moment"​ >> $JOURNAL
 + if [ $NBJOURUSER -lt 7 ]; 
 + then
 + touch -t 201701010000 $APPELUSER
 + else
 + exit
 + fi
 +fi
 +# Essaye de monter le disque dur et recherche dans quel conteneur enregistrer la sauvegarde
 +mount UUID=8498c62b-ad6f-4966-990e-822f729a01c3 $MONTAGE
 +if [ -f $BANKSTATUS ]; then
 + echo "​`date` Montage disque OK" >> $JOURNAL
 + VALSAUVEGARDE=`cat $BANKSTATUS`
 + if [ "​$VALSAUVEGARDE"​ = "​BANK1" ​ ]; then
 + DESTINATION=$DESTINATION2
 + VALSAUVEGARDE="​BANK2"​
 + elif [ "​$VALSAUVEGARDE"​ = "​BANK2" ​ ]; then
 + DESTINATION=$DESTINATION1
 + VALSAUVEGARDE="​BANK1"​
 + else
 + echo "​`date` Echec sauvegarde SYSTEME:​ Contenu $BANKSTATUS non conforme"​ >> $JOURNAL
 + umount $MONTAGE
 + exit
 + fi
 +else
 + echo "​`date` Echec sauvegarde SYSTEME:​ fichier $BANKSTATUS introuvable"​ >> $JOURNAL
 + exit
 +fi
 +
 +# Sauvegarde du système
 +if [ -d $DESTINATION ] ;
 +then
 + rsync_backup_include='/​root/​backup/​rsync-backup-include'​
 + dpkg --get-selections "​*"​ > $DESTINATION/​dpkg-selections.list
 + #​---section facultative. Nécéssite l'​installation du paquet debconf-utils---#​
 + debconf-get-selections > $DESTINATION/​debconf-selections
 +        #​---------------------------------------------------------------------------#​
 + /​usr/​bin/​rsync -av --delete-after $SOURCE $DESTINATION --exclude-from=$rsync_backup_include --exclude='​**' ​
 + touch $LASTDATE
 + echo "​`date` Sauvegarde SYTEME OK: sur $DESTINATION"​ >> $JOURNAL
 + echo $VALSAUVEGARDE > $BANKSTATUS
 +# umount $MONTAGE
 +else
 + echo "​`date` Echec sauvegarde SYSTEME:​ répertoire $DESTINATION introuvable"​ >> $JOURNAL
 + umount $MONTAGE
 + exit 
 +fi
 +
 +# Variables d'​environnement
 +SOURCE="/​home"​
 +DESTINATION="/​mnt/​sauvegarde"​
 +ACTUEL="/​mnt/​sauvegarde/​backuphome/​Actuel"​
 +BACKUP="/​mnt/​sauvegarde/​backuphome/​$(date +'​%d-%m-%Y'​)"​
 +T="​$DESTINATION/​backuphome/​.superpointeur.txt"​
 +LISTEEXCLUSIONS="/​root/​backup/​rsync-backup-include2"​
 +
 +# Codes d'​erreur
 +E_REPABSENT=65
 +E_POINTEURABSENT=66
 +
 +# test 1
 +if [ -d $DESTINATION/​backuphome ] && [ -d $DESTINATION/​.backuphome ]  ; 
 + then # les répertoires existent ​
 + echo "​répertoires trouvés"​
 +
 + else 
 +
 + echo "​`date` Echec sauvegarde HOME: répertoires de sauvegarde introuvables."​ >> $JOURNAL
 + # Vérifier si le support de sauvegarde est monté
 + umount $MONTAGE
 + exit $E_REPABSENT
 +fi # fin test 1
 +
 +# Test 2
 +if [ -e "​$T"​ ] ;
 + then # le répertoire d'​archivage sécurisé est déjà monté
 + echo "​`date` Echec sauvegarde HOME Le dossier sécurisé est déjà monté."​ >> $JOURNAL
 + # Démonter le répertoire sécurisé avant l'​utilisation du script."​
 + umount $MONTAGE
 + exit $E_POINTEURABSENT
 +
 + else # Il faut monter le répertoire d'​archivage sécurisé
 + chmod 750 $DESTINATION/​backuphome
 + #​Déchiffrage du répertoire
 + cat /​home/​virtualdebian/​Documents/​.clefsauvegarde | encfs --stdinpass -v "​$DESTINATION/​.backuphome"​ "​$DESTINATION/​backuphome"​
 + # Coffre ouvert la sauvegarde sécurisée va démarrer!
 + # crée le répertoire Backup du jour
 + mkdir -p "​$BACKUP"​
 + # crée la sauvegarde
 + /​usr/​bin/​rsync -av --delete --exclude-from $LISTEEXCLUSIONS --backup --backup-dir="​$BACKUP"​ "​$SOURCE"​ "​$ACTUEL"​ --exclude='​**'​
 + # supprime le répertoire backup s'il est vide
 + rmdir --ignore-fail-on-non-empty "​$BACKUP"​
 + # démonte le répertoire en clair
 + fusermount -u "​$DESTINATION/​backuphome"​
 + chmod 440 $DESTINATION/​backuphome
 + echo "​`date` Sauvegarde HOME OK" >> $JOURNAL
 + umount $MONTAGE
 +fi # fin test 2 
 +
 +exit 0
 +</​file>​
 +
 +Modifier les droits du fichier rsync-backup.sh
 +<code root>​chmod 700 rsync-backup.sh</​code>​
 +
 +==== Fichiers de configuration rsync ====
 +
 +faire un 
 +<code root>​touch rsync-backup-include</​code> ​
 +
 +et ajouter les lignes suivantes :
 +
 +<file config rsync-backup-include>​
 +# La commande rsync utilisée inclue / (root) et exclue tout. Cela ne sauvegarde rien. Le fichier rsync-backup-include permet d'​inclure ce que l'on veur sauvegarder.
 +# (note : pour plus d'​information voir la page de manuel de rsync dans les sections : FILTER RULES, INCLUDE/​EXCLUDE PATTTERN RULES, MERGE-FILE FILTviER RULES)
 +# à la visite d'un dossier, penser à exclure ce que l'on ne veut pas sauvegarder avant de mettre la règle contenant les *
 +# + [pattern] inclu un motif
 +# - [pattern] exclu un motif
 +# '​*'​ remplace tout et s'​arrête au premier slash.
 +# '​**'​ remplace tout, incluant les slashs.
 +# + /dossier/ visite un dossier mais ne sauvegarde rien
 +# + /dossier/ sauvegarde tous les fichiers et dossiers mais de manière non récursive (les dossiers seront vides)
 +# + /dossier/** sauvegarde tous le contenu du dossier récursivement
 +# exclure les fichiers
 +- /initrd.img
 +- /vmlinuz
 +
 +# sauvegarder le contenu du dossier /etc
 ++ /etc/
 ++ /etc/**
 +
 +# sauvegarder le contenu du dossier /var
 ++ /var/
 ++ /var/spool/
 ++ /​vat/​spool/​**
 ++ /​var/​backups/​
 ++ /​var/​backups/​**
 ++ /var/lib/
 ++ /var/lib/**
 ++ /var/games/
 ++ /​var/​games/​**
 ++ /var/lock/
 ++ /​var/​lock/​**
 ++ /var/log/
 ++ /var/log/**
 ++ /var/mail/
 ++ /​var/​mail/​**
 ++ /var/opt/
 ++ /var/opt/**
 ++ /var/cache/
 ++ /​var/​cache/​apt/​
 ++ /​var/​cache/​apt/​**
 +
 +# sauvegarder le contenu du dossier /usr
 ++ /usr/
 ++ /usr/local/
 ++ /​usr/​local/​**
 +
 +# sauvegarder le contenu de /root
 ++ /root/
 ++ /root/**
 +
 +# exclure tout (comme ça on est sûr)
 +- **
 +
 +</​file>​
 +
 +
 +faire un :
 +<code root>​touch rsync-backup-include2</​code>​
 +et ajouter les lignes suivantes :
 +
 +<file config rsync-backup-include2>​
 +# La commande rsync utilisée inclue / (root) et exclue tout. Cela ne sauvegarde rien. Le fichier rsync-backup-include permet d'​inclure ce que l'on veur sauvegarder.
 +# (note : pour plus d'​information voir la page de manuel de rsync dans les sections : FILTER RULES, INCLUDE/​EXCLUDE PATTTERN RULES, MERGE-FILE FILTER RULES)
 +# à la visite d'un dossier, penser à exclure ce que l'on ne veut pas sauvegarder avant de mettre la règle contenant les *
 +# + [pattern] inclu un motif
 +# - [pattern] exclu un motif
 +# '​*'​ remplace tout et s'​arrête au premier slash.
 +# '​**'​ remplace tout, incluant les slashs.
 +# + /dossier/ visite un dossier mais ne sauvegarde rien
 +# + /dossier/ sauvegarde tous les fichiers et dossiers mais de manière non récursive (les dossiers seront vides)
 +# + /dossier/** sauvegarde tous le contenu du dossier récursivement
 +# exclure les fichiers
 +- /initrd.img
 +- /vmlinuz
 +- /​home/<​USER1>/​.cache
 +- /​home/<​USER2>/​.cache
 +
 +
 +# sauvegarder le contenu de /home
 ++ /home/
 ++ /home/**
 +
 +
 +# exclure tout (comme ça on est sûr)
 +- **
 +
 +</​file>​
 +
 +Créer un fichier .clefsauvegarde dans le répertoire <​USER>​ de confiance :
 +<code root>​touch /​home/<​USER>/​Documents/​.clefsauvegarde</​code>​
 +
 +Editer le fichier et y écrire votre mot de passe super secret :
 +<code root>​nano /​home/<​USER>/​Documents/​.clefsauvegarde</​code>​
 +<​code>​Monmotdepassesupersecret</​code>​
 +
 +Affecter les droits unique de lecture pour root.
 +<code root>​chmod 400 /​home/<​USER>/​Documents/​.clefsauvegarde</​code>​
  
  
Ligne 68: Ligne 415:
  
 [[https://​wiki.debian-fr.xyz/​Sauvegarder_sa_Debian_en_vue_d%27une_R%C3%A9installation_ou_Reconstruction_-_Racine_et_Home_s%C3%A9par%C3%A9s]] [[https://​wiki.debian-fr.xyz/​Sauvegarder_sa_Debian_en_vue_d%27une_R%C3%A9installation_ou_Reconstruction_-_Racine_et_Home_s%C3%A9par%C3%A9s]]
 +
 +La référence debian : [[https://​www.debian.org/​doc/​manuals/​debian-reference/​ch10.fr.html#​_backup_and_recovery]]
  
 Le tuto encfs de ubuntu : Le tuto encfs de ubuntu :
  
 [[https://​doc.ubuntu-fr.org/​encfs]] [[https://​doc.ubuntu-fr.org/​encfs]]
utilisateurs/philou92/tutos/sauvegarde-systeme-leger.txt · Dernière modification: 01/05/2023 22:43 par Philou92

Pied de page des forums

Propulsé par FluxBB