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

Ceci est une ancienne révision du document !


Titre de Votre Tuto

Introduction

Ce tuto donne une méthode pour sauvegarder son système d'exploitation debian et le répertoire /home

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.

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 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.

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é.

Maintenant en avant toute…

Installation

L'installation des deux paquets suivants est facultative :

j'ai noté dans les scripts les parties peuvent-être ajoutées ou supprimées selon la convenance

l'outil debconf-utils

Il permet de récupérer les configurations des paquets du système. Bien que je n'ai pas eu à m'en servir, ce serait bête de ne pas les avoirs sous la main le jour ou votre barbu local vous dira c'est c.. de ne pas les avoirs sauvegarder…

En matière de sauvegarde le mieux est l'ami du bien. ;-)

Pour l'installer

apt-get update && apt-get install debconf-utils

l'outil de chiffrage “encfs”

Afin de ne pas laisser les données personnelles à la merci des Rapetout en tout genre j'ai ajouté une petite fantaisie en utilisant l'outil “encfs” pour chiffrer mon /home.

Pour l'installer

apt-get update && apt-get install encfs

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=“8486c62b-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=8486c62b-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/

service.sauvegarde
[Unit]
Description=backupbidule
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

Puis démarrer le service en saisissant les commandes suivantes :

systemctl daemon-reload
systemctl enable sauvegarde.service
systemctl start sauvegarde.service

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 addgroup sauvegarde Ajout du groupe « sauvegarde » (GID 1003)… Fait.

-ajouter un ou plusieurs <USER> habilité(s) à déclencher une sauvegarde ponctuelle au groupe “sauvegarde”. adduser <USER> sauvegarde Ajout de l'utilisateur « <USER> » au groupe « sauvegarde »… Ajout de l'utilisateur <USER> au groupe sauvegarde Fait.

-Créer le répertoire /usr/local/sauvegarde/ cd /usr/local mkdir sauvegarde -A l'intérieur faire un touch rsync-backup-user.date touch rsync-backup-user.sh avec les droits d'exécution pour root uniquement et ajouter le script suivant : #! /bin/sh touch /usr/local/sauvegarde/rsync-backup-user.date exit -ajouter les deux fichier au groupe sauvegarde chgrp sauvegarde rsync-backup-user.date chgrp sauvegarde rsync-backup-user.sh -modifiez les droits des deux fichiers comme suit: chmod 750 rsync-backup-user.sh chmod 660 rsync-backup-user.date - vérifiez les droits : ls -al 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

créer le répertoire /root/backup/ A l'intérieur Faire un touch rsync-backup.log Faire un touch rsync-backup.date créer le fichier rsync-backup.sh avec les droits d'exécution pour root uniquement et ajouter le script suivant: (modifier la ligne 27 avec l'UUID de votre disque) #! /bin/sh nom_hote=`hostname` 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=$1)/86400)) APPELUSER=“/usr/local/sauvegarde/rsync-backup-user.date” NBJOURUSER=$2)/86400)) if [ $NBJOUR -lt 7 ]; then echo “`date` Pas le moment” » $JOURNAL if [ $NBJOURUSER -lt 7 ]; then touch -t 201701010000 $APPELUSER else exit fi fi #rsync_backup_conf='/root/backup/rsync-backup.conf' mount UUID=8486c62b-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 if [ -d $DESTINATION ] ; then rsync_backup_include='/root/backup/rsync-backup-include' dpkg –get-selections > $DESTINATION/dpkg-selections.list # 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 #exit 0

# 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

echo $DESTINATION

# 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

faire un touch rsync-backup-include et ajouter les lignes suivantes : # 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 - /home/virtualdebian/.cache - /home/test/.cache # 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/ # sauvegarder le contenu de /home + /home/ + /home/

# exclure tout (comme ça on est sûr) - * faire un touch rsync-backup-include2 et ajouter les lignes suivantes : # 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/virtualdebian/.cache - /home/test/.cache # sauvegarder le contenu de /home + /home/ + /home/

# exclure tout (comme ça on est sûr) - *** Créer un fichier .clefsauvegarde dans le répertoire <USER> de confiance : /home/<USER>/Documents/.clefsauvegarde

Affecter les droits unique de lecture pour root. en root : chmod 400 /home/<USER>/Documents/.clefsauvegarde Ajouter le mot de passe en texte à l'intérieur.

Mes sources d'inspiration

Les excellents tuto dont je me suis largement inspiré :

rsync-backup https://debian-facile.org/doc:systeme:rsync:backup.

J'ai repris beaucoup de principes de ce tuto, notamment l'admirable et instructive façon d'utiliser rsync (merci à gksam).

Deux tutos expliquant comment faire une sauvegarde - restauration complète du système (donc lourde) :

https://wiki.debian-fr.xyz/Restauration_ou_Reconstruction_de_sa_Debian_-_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 :

https://doc.ubuntu-fr.org/encfs

1)
($(date -u +%s) - $(date -ur $LASTDATE +%s
2)
($(date -u +%s) - $(date -ur $APPELUSER +%s
utilisateurs/philou92/tutos/sauvegarde-systeme-leger.1499116579.txt.gz · Dernière modification: 03/07/2017 23:16 par Philou92

Pied de page des forums

Propulsé par FluxBB