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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:philou92:tutos:sauvegarde-systeme-leger [05/07/2017 23:26] Philou92 [Mes sources d'inspiration] |
utilisateurs:philou92:tutos:sauvegarde-systeme-leger [01/05/2023 22:43] (Version actuelle) Philou92 [Sauvegarde légère et rapide du système] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Sauvegarde légère et rapide du système ====== | ====== Sauvegarde légère et rapide du système ====== | ||
- | * Objet : du tuto Sauvegarde légère et rapide du système FIXME | + | * Objet : du tuto Sauvegarde légère et rapide du système |
- | * Niveau requis : FIXME {{tag>avisé en-chantier}} | + | * Niveau requis : {{tag>avisé}} |
- | * Commentaires : //Tout est dans le titre. // FIXME | + | * Suivi : {{tag>en-chantier}} |
+ | * Commentaires : //Tout est dans le titre. // | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
+ | * Création :[[https://debian-facile.org/utilisateurs:philou92|philou92]] le 4/07/17 | ||
+ | * Mise à jour : le 8/12/17 | ||
+ | * Testé par :[[https://debian-facile.org/utilisateurs:philou92|philou92]] le 4/07/17 | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=18405|https://debian-facile.org/viewtopic.php?id=18405]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 112: | Ligne 117: | ||
BANK2 | BANK2 | ||
</file> | </file> | ||
+ | |||
+ | Créer les trois fichiers suivants : | ||
+ | <code root>touch restaurestart | ||
+ | chmod 744 restaurestart | ||
+ | touch restaurepaquets | ||
+ | chmod 744 restaurepaquets | ||
+ | touch restauredebian | ||
+ | chmod 744 restauredebian | ||
+ | </code> | ||
+ | |||
+ | Editez les et y ajouter les scripts qui sont là : [[https://debian-facile.org/utilisateurs:philou92:tutos:sauvegarde-systeme-leger?&#scripts-de-restauration-systeme]] | ||
Taper la commande : | Taper la commande : | ||
Ligne 135: | Ligne 151: | ||
Créer le fichier suivant : sauvegarde.service dans le répertoire /etc/systemd/system/ | Créer le fichier suivant : sauvegarde.service dans le répertoire /etc/systemd/system/ | ||
+ | <note important>Précisions sur TimeoutStopSec. | ||
+ | |||
+ | Dès l'arrêt du système si une sauvegarde est déclenchée, elle doit se terminer avant le temps fixé par "TimeoutStopSec", temps au delà duquel le système mettra fin de façon rédhibitoire au script de sauvegarde. (un compteur de temps s'affiche à ce moment). | ||
+ | |||
+ | Par défaut ce paramètre est fixé à 90s soit 1mn30. Personnellement Mes sauvegardes n'ont jamais dépassées 1mn. Néanmoins par précaution j'ai fixé le temps à 360s (6mn). | ||
+ | A vous de voir s'il faut régler plus de temps selon vos usages et délais entre deux sauvegardes. | ||
+ | |||
+ | Le délai TimeoutStopSec est un délai maximum d'attente (un garde fou). Dès que le script de sauvegarde a terminé sont travail le système embraye immédiatement l'arrêt complet du système. | ||
+ | |||
+ | |||
+ | Vous pourriez également fixer ce paramètre à "Infinity", cela revient à inhiber le garde fou). Là pas de risque d'arrêt du script de sauvegarde, mais en contrepartie, si le script vient à planter alors le système ne pourra pas s'arrêter correctement. Je déconseille cette dernière option.</note> | ||
+ | |||
<file config sauvegarde.service> | <file config sauvegarde.service> | ||
Ligne 143: | Ligne 171: | ||
[Service] | [Service] | ||
Type=oneshot | Type=oneshot | ||
+ | TimeoutStopSec=360 | ||
ExecStart=/bin/true | ExecStart=/bin/true | ||
ExecStop=/root/backup/rsync-backup.sh | ExecStop=/root/backup/rsync-backup.sh | ||
Ligne 213: | Ligne 242: | ||
Editer le fichier rsync-backup.sh et ajouter le script suivant: | Editer le fichier rsync-backup.sh et ajouter le script suivant: | ||
- | <note>(modifier la ligne 24 avec l'UUID de votre disque)</note> | + | <note important> |
+ | Les lignes encadrées en haut et en bas par les caractères "#A-CORRIGER" sont à modifier : | ||
+ | |||
+ | - Modifier la ligne 26 avec l'UUID de votre disque. | ||
+ | |||
+ | - Modifier <USER> à la ligne 102 en le remplaçant par le nom du répertoire utilisateur dans lequel vous avez stocké le fichier ".clefsauvegarde". | ||
+ | </note> | ||
+ | |||
<file bash rsync-backup.sh> | <file bash rsync-backup.sh> | ||
Ligne 240: | Ligne 277: | ||
fi | fi | ||
# Essaye de monter le disque dur et recherche dans quel conteneur enregistrer la sauvegarde | # Essaye de monter le disque dur et recherche dans quel conteneur enregistrer la sauvegarde | ||
- | mount UUID=8498c62b-ad6f-4966-990e-822f729a01c3 $MONTAGE | + | #A-CORRIGER |
+ | mount UUID=8498c62b-ad6f-4966-990e-822f729a01c3 $MONTAGE # A modifier avec l'UUID de votre de disque de sauvegarde | ||
+ | #A-CORRIGER | ||
if [ -f $BANKSTATUS ]; then | if [ -f $BANKSTATUS ]; then | ||
echo "`date` Montage disque OK" >> $JOURNAL | echo "`date` Montage disque OK" >> $JOURNAL | ||
Ligne 313: | Ligne 352: | ||
chmod 750 $DESTINATION/backuphome | chmod 750 $DESTINATION/backuphome | ||
#Déchiffrage du répertoire | #Déchiffrage du répertoire | ||
- | cat /home/virtualdebian/Documents/.clefsauvegarde | encfs --stdinpass -v "$DESTINATION/.backuphome" "$DESTINATION/backuphome" | + | #Remplacer <USER> par l'utilisateur de confiance où est stocké le mot de passe |
+ | #A-CORRIGER | ||
+ | cat /home/<USER>/Documents/.clefsauvegarde | encfs --stdinpass -v "$DESTINATION/.backuphome" "$DESTINATION/backuphome" | ||
+ | #A-CORRIGER | ||
# Coffre ouvert la sauvegarde sécurisée va démarrer! | # Coffre ouvert la sauvegarde sécurisée va démarrer! | ||
# crée le répertoire Backup du jour | # crée le répertoire Backup du jour | ||
Ligne 399: | Ligne 441: | ||
faire un : | faire un : | ||
<code root>touch rsync-backup-include2</code> | <code root>touch rsync-backup-include2</code> | ||
- | et ajouter les lignes suivantes : | + | et ajouter les lignes suivantes (à adapter selon les besoins) : |
<file config rsync-backup-include2> | <file config rsync-backup-include2> | ||
Ligne 415: | Ligne 457: | ||
- /initrd.img | - /initrd.img | ||
- /vmlinuz | - /vmlinuz | ||
+ | |||
+ | # A titre d'exemple, les deux lignes ci-dessous <USER1> et <USER2> sont deux répertoires utilisateurs pour lesquels | ||
+ | # on ne souhaite pas sauvegarder le contenu du répertoire .cache. | ||
+ | |||
- /home/<USER1>/.cache | - /home/<USER1>/.cache | ||
- /home/<USER2>/.cache | - /home/<USER2>/.cache | ||
Ligne 429: | Ligne 475: | ||
</file> | </file> | ||
- | Créer un fichier .clefsauvegarde dans le répertoire <USER> de confiance : | + | Créer un fichier .clefsauvegarde dans le répertoire <USER> de confiance (le même que celui déclaré à la ligne 102 du script "rsync-backup.sh") : |
<code root>touch /home/<USER>/Documents/.clefsauvegarde</code> | <code root>touch /home/<USER>/Documents/.clefsauvegarde</code> | ||
Ligne 470: | Ligne 516: | ||
Voilà... C'est fini. :-) | Voilà... C'est fini. :-) | ||
===== Scripts de restauration système ===== | ===== Scripts de restauration système ===== | ||
+ | <file bash restaurestart.sh> | ||
+ | #!/bin/bash | ||
+ | # Variables d'environnement | ||
+ | SOURCE="/mnt/restauration" | ||
+ | # Codes d'erreur | ||
+ | E_REPABSENT=65 | ||
+ | E_PASDERESEAU=66 | ||
+ | |||
+ | # test 1 | ||
+ | if [ -d $SOURCE ] ; | ||
+ | then # le répertoire existe | ||
+ | echo "Répertoire restauration trouvé." | ||
+ | else # Le répertoire n'existe pas | ||
+ | |||
+ | echo "Le répertoire de restauration n'a pas été trouvé." | ||
+ | echo "Vérifier si le support de restauration est monté" | ||
+ | echo "dans le répertoire /mnt/restauration" | ||
+ | echo" Ensuite relancer le script restaurestart" | ||
+ | exit $E_REPABSENT | ||
+ | fi # fin test 1 | ||
+ | # test 2 | ||
+ | if ping -c 1 debian-facile.org &> /dev/null | ||
+ | then | ||
+ | echo "Réseau OK" | ||
+ | else | ||
+ | echo "A priori le réseau n'a pas accès à internet" | ||
+ | echo "Vérifier vos paramètres réseau" | ||
+ | echo | ||
+ | echo "Lien d'aide pour installer la connexion réseau : " | ||
+ | echo "https://debian-facile.org/doc:reseau:interfaces" | ||
+ | exit $E_PASDERESEAU | ||
+ | fi # fin test 2 | ||
+ | |||
+ | |||
+ | |||
+ | echo "Choix répertoire de restauration : 1=BANK1, 2=BANK2" | ||
+ | echo "Une valeur différente de 1 ou 2 = fin programme" | ||
+ | read VALEUR | ||
+ | |||
+ | if [ $VALEUR -eq 1 ];then | ||
+ | BANK="BANK1" | ||
+ | elif [ $VALEUR -eq 2 ];then | ||
+ | BANK="BANK2" | ||
+ | else | ||
+ | exit | ||
+ | fi | ||
+ | echo "Copie du fstab de la sauvegarde au cas où..." | ||
+ | cp -av $SOURCE/$BANK/etc/fstab $SOURCE/$BANK/etc/fstab.bak | ||
+ | echo "Copie du fstab du nouveau système dans la sauvegarde" | ||
+ | cp -av /etc/fstab $SOURCE/$BANK/etc/fstab | ||
+ | echo "Copie le fichier sources.list de la sauvegarde vers le nouveau système" | ||
+ | cp -av $SOURCE/$BANK/etc/apt/sources.list /etc/apt/sources.list | ||
+ | echo "Copie du cache apt de la sauvegarde vers le nouveau système" | ||
+ | cp -a $SOURCE/$BANK/var/cache/apt /var/cache | ||
+ | apt-get update | ||
+ | echo "************************************" | ||
+ | echo "* Lancer le script restaurepaquets *" | ||
+ | echo "************************************" | ||
+ | exit 0 | ||
+ | </file> | ||
+ | <file bash restaurepaquets.sh> | ||
+ | #!/bin/bash | ||
+ | # Variables d'environnement | ||
+ | SOURCE="/mnt/restauration" | ||
+ | MesPaquets="dpkg-selections.list" | ||
+ | ConfDebian="debconf-selections" | ||
+ | # Codes d'erreur | ||
+ | E_REPABSENT=65 | ||
+ | # test 1 | ||
+ | if [ -d $SOURCE ] ; | ||
+ | then # le répertoire existe | ||
+ | echo "Répertoire restauration trouvé." | ||
+ | else # Le répertoire n'existe pas | ||
+ | |||
+ | echo "Le répertoire de restauration n'a pas été trouvé." | ||
+ | echo "Vérifier si le support de restauration est monté" | ||
+ | exit $E_REPABSENT | ||
+ | fi # fin test 1 | ||
+ | |||
+ | echo "Choix répertoire de restauration : 1=BANK1, 2=BANK2" | ||
+ | echo "Une valeur différente de 1 ou 2 = fin programme" | ||
+ | read VALEUR | ||
+ | |||
+ | if [ $VALEUR -eq 1 ];then | ||
+ | BANK="BANK1" | ||
+ | elif [ $VALEUR -eq 2 ];then | ||
+ | BANK="BANK2" | ||
+ | else | ||
+ | exit | ||
+ | fi | ||
+ | cd $SOURCE/$BANK | ||
+ | apt-cache dumpavail | dpkg --merge-avail | ||
+ | dpkg --clear-selections | ||
+ | dpkg --set-selections <$MesPaquets | ||
+ | apt-get dselect-upgrade | ||
+ | echo "*******************************************************" | ||
+ | echo "* Terminé : Si besoin exécutez les opérations 1 et 2 *" | ||
+ | echo "* dans l'ordre. *" | ||
+ | echo "* *" | ||
+ | echo "* 1- Installer manuellement les paquets issus d'autres*" | ||
+ | echo "* dépôts que stable *" | ||
+ | echo "* exemple : *" | ||
+ | echo "* apt-get -t jessie-backports install paquet1 paquet2 *" | ||
+ | echo "* *" | ||
+ | echo "* 2 - Si vous restaurez également le répertoire /home *" | ||
+ | echo "* faites le maintenant. *" | ||
+ | echo "* *" | ||
+ | echo "* Ensuite lancer le script restauredebian *" | ||
+ | echo "*******************************************************" | ||
+ | exit 0 | ||
+ | </file> | ||
+ | <file bash restauredebian.sh> | ||
+ | #!/bin/bash | ||
+ | # Variables d'environnement | ||
+ | SOURCE="/mnt/restauration" | ||
+ | |||
+ | # Codes d'erreur | ||
+ | E_REPABSENT=65 | ||
+ | # test 1 | ||
+ | if [ -d $SOURCE ] ; | ||
+ | then # les répertoires existent | ||
+ | echo "Répertoire restauration trouvé." | ||
+ | else # Les répertoires n'existent pas | ||
+ | |||
+ | echo "Le répertoire de restauration n'a pas été trouvé." | ||
+ | echo "Vérifier si le support de restauration est monté" | ||
+ | exit $E_REPABSENT | ||
+ | fi # fin test 1 | ||
+ | |||
+ | echo "Choix répertoire de restauration : 1=BANK1, 2=BANK2" | ||
+ | echo "Une valeur différente de 1 ou 2 = fin programme" | ||
+ | read VALEUR | ||
+ | |||
+ | if [ $VALEUR -eq 1 ];then | ||
+ | BANK="BANK1" | ||
+ | elif [ $VALEUR -eq 2 ];then | ||
+ | BANK="BANK2" | ||
+ | else | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | cd $SOURCE/$BANK | ||
+ | echo "Copie du répertoire usr/local" | ||
+ | cp -a usr/local/sauvegarde /usr/local | ||
+ | echo "Copie du répertoire var/log" | ||
+ | cp -a var/log /var | ||
+ | echo "Copie du répertoire var/mail" | ||
+ | cp -a var/mail /var | ||
+ | echo "Copie du répertoire var/spool" | ||
+ | cp -a var/spool /var | ||
+ | echo "Copie du répertoire etc" | ||
+ | cp -a etc / | ||
+ | echo "Copie du répertoire root" | ||
+ | cp -a root / | ||
+ | echo "******************************************" | ||
+ | echo "* restauration fichiers système terminée *" | ||
+ | echo "* Lancer la commande : shutdown -r *" | ||
+ | echo "******************************************" | ||
+ | exit 0 | ||
+ | </file> | ||
===== Mes sources d'inspiration ===== | ===== Mes sources d'inspiration ===== |