initial commit

This commit is contained in:
Guillaume-Sanchez
2026-05-26 13:56:03 +02:00
parent 4c720637a1
commit ff4bb12d22
539 changed files with 12415 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
# TD Sauvegarde :
Mettre en place un système de sauvegarde simple
Sauvegarde locale
Nous allons maintenant voir comment mettre en place un système de sauvegarde simple locale. Pour cela, nous allons faire les choix suivants :
utilisation de tar avec la compression bzip2 des données modifiées depuis moins de 24h ;·
stockage sur une partition dédiée (autre que celle du système), ici hda10; ⚫ sauvegarde des dossiers/home et /etc.
Pour cela, créez un fichier sauvegarde.sh ayant pour contenu :
```
#!/bin/sh
#Script de sauvegarde
#Dossiers à sauvegarder
DATA_TO_BACKUP="/home/etc"
#Partition recevant la sauvegarde
BACKUP_DEV=/dev/hda10
BACKUP_DIR=/sauvegarde
#Montage de la partition de sauvegarde
mount -t auto $BACKUP_DEV $BACKUP_DIR
#Définition de la date du jour afin de pouvoir récupérer #1'année ($6), le mois ($2) et le jour ($3) pour nommer le fichier de sauvegarde
set $(date)
ave #Sauvegarde des données
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/svg_$6$2$3.tar.bz2" tar cvjf $BACKUP_DIR/svg $6$2$3.tar.bz2 --newer-mtime '1 day ago' $DATA_TO_
BACKUP
```
Enregistrez le script dans le répertoire /usr/local/bin et rendez-le exécutable: chmod +x /usr/local/bin/sauvegarde.sh
Pour l'utiliser, il suffira alors de saisir dans une console: sauvegarde.sh
Sauvegarde à distance
Nous allons maintenant reprendre l'exemple précédent avec les mêmes hypothè- ses, mais en outre nous allons envoyer le fichier de sauvegarde sur une machine distante. Nous allons utiliser deux systèmes différents : un premier avec l'utilisa- tion de ssh qui permet d'assurer un transfert sécurisé des données et un deuxième avec l'utilisation de ncftp pour envoyer l'archive sur un espace d'hébergement.
Utiliser ssh. Si vous souhaitez et pouvez utiliser ssh avec la machine distante, le script devient donc :
```
#!/bin/sh
#Script de sauvegarde
#Dossiers à sauvegarder DATA_TO_BACKUP="/home /etc"
#Partition recevant la sauvegarde BACKUP_DEV=/dev/hda10
BACKUP_DIR=/sauvegarde
#Définition des paramètres pour l'envoi à distance
REMOTE_USER=backup
REMOTE_COMPUTER=ip_ordinateur
REMOTE_DIR=/home/backup/
#Montage de la partition de sauvegarde
mount -t auto $BACKUP_DEV $BACKUP_DIR
#Définition de la date du jour afin de pouvoir récupérer
#1'année ($6), le mois ($2) et le jour ($3) pour nommer le fichier de sauvegarde
set $(date)
#Sauvegarde des données
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/svg $6$2$3.tar.bz2" tar cvjf $BACKUP_DIR/svg $6$2$3.tar.bz2 --newer-mtime '1 day ago $DATA_TO_
#Envoi de la sauvegarde sur la machine distante
BACKUP
scp $BACKUP_DIR/svg $6$2$3.tar.bz2 $REMOTE_USER@$REMOTE_COMPUTER: $REMOTE_DIR Il ne reste alors plus qu'à saisir le mot de passe demandé, mais si l'on veut utiliser ceci automatiquement, il faudra utiliser les phrases le système de clefs publique et privée de ssh. Ainsi il ne sera plus nécessaire de saisir de mot de passe.
```
+87
View File
@@ -0,0 +1,87 @@
#!/bin/bash
#Script de restoration
#Utilisateur du serveur destinataire de la sauvegarde :
USER_DEST="user"
#Serveur destinataire de la sauvegarde :
ADDRESS_DEST="172.20.10.5" #adresse serveur distant
#Dossier du serveur destinataire de la sauvegarde
BACKUP_DIR_DEST="/home/user/rep_dest/"
#Dossier local de la receprtion de la sauvegarder, à créer si il n'existe pas, a modifier selon l'utilisateur
BACKUP_DIR="/home/nk/sauvegarde/"
SEPARATOR="--------------------"
#Début du script de restoration de /home
echo $SEPARATOR
echo "Debut du script de restauration de /home"
echo $SEPARATOR
#Tableau de la liste des fichiers de sauvegardes présentent sur le serveur dans /home/user/rep_dest/
filesList=($(ssh $USER_DEST@$ADRESS_DEST ls $BACKUP_DIR_DEST))
echo "Voici la liste des sauvegardes disponible sur $ADRESS_DEST dans le repertoir $BACKUP_DIR_DEST :"
echo
# Boucle For afin d'afficher les fichiers avec leur position dans le tableau devant :
for (( i=0; i<${#filesList[@]}; i++ ))
do
echo "$i-${filesList[$i]}" # Premier fichier
done
echo
echo $SEPARATOR
# Un read pour que l'utilisateur puissent entrer le numero de la sauvegarde qu'il veut
read -r -p "Choisir l'archive à restaurer : " numSauv
echo $SEPARATOR
#Place le nom de la sauvegarde voulu dans une variable OKZOU
NAME_SAVE=${filesList[$numSauv]}
echo "Vous avez choisi : $NAME_SAVE"
echo $SEPARATOR
# Je rentre dans un boucle "infini" mais controlé par une action utilisateur.
while true; do
# Un read pour que l'utilisateur puisse confirmer si oui ou non il veut restaurer
read -r -p "Lancer la restauration ? (o/n) " response
case "$response" in
[oO]|[yY]|oui|yes)
# Récupération avec le protoclole ssh (commande scp) de la sauvegarde présente sur le serveur, vers notre pc
echo "Reception de $NAME_SAVE dans $BACKUP_DIR"
scp $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST$NAME_SAVE $BACKUP_DIR
echo $SEPARATOR
# Extraction de l'archive à la racine (donc /) pour recepecter la structure des répertoires d'un chemin
echo "Extraction de la sauvegarde"
tar xvjf $BACKUP_DIR$NAME_SAVE -C /
echo $SEPARATOR
# Petit Nettoayage de la sauvegarde présent sur notre pc
echo "Nettoayage de $NAME_SAVE"
rm $BACKUP_DIR$NAME_SAVE
#Fin du script de Sauvegarde de /home
echo $SEPARATOR
echo "Fin du script de Restauration de /home"
echo $SEPARATOR
exit 0
;;
[nN]|non|no)
#Fin du script de Sauvegarde de /home
echo $SEPARATOR
echo "Fin du script de Restauration de /home"
echo $SEPARATOR
exit 0
;;
*)
echo "Erreur, merci d'entrer o ou n"
;;
esac
done
+58
View File
@@ -0,0 +1,58 @@
#!/bin/bash
#Script de sauvegarde
#Dossier à sauvegarder, a modifier selon l'utilisateur
DATA_TO_BACKUP="/home/nk/rep_src/"
#Dossier local de la création de la sauvegarder, a modifier selon l'utilisateur
BACKUP_DIR="/home/nk/sauvegarde/"
#Utilisateur du serveur destinataire de la sauvegarde :
USER_DEST="user"
#Serveur destinataire de la sauvegarde :
ADDRESS_DEST="172.20.10.5" #adresse serveur distant
#Dossier du serveur destinataire de la sauvegarde
BACKUP_DIR_DEST="/home/user/rep_dest/"
SEPARATOR="--------------------"
#Définition de la date du jour afin de pouvoir récupérer (a adapter)
#l'année ($3), le mois ($1) et le jour ($2) pour nommer le fichier de sauvegarde
IFS=/
set $(date +%D)
annee=$3
mois=$1
jour=$2
unset IFS
#Début du script de Sauvegarde de /home
echo $SEPARATOR
echo "Debut du script de Sauvegarde de /home"
#Sauvegarde des données
echo $SEPARATOR
echo "Sauvegarde de $DATA_TO_BACKUP dans $BACKUP_DIR/$BACKUP_FILE"
tar cvjf $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2 --newer-mtime '1 day ago' "$DATA_TO_BACKUP"
#Envoie vers le serveur de sauvegarde
echo $SEPARATOR
echo "Envoie de svg._$annee$mois$jour.tar.bz2 vers le serveur $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST"
scp $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2 $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST
#Verification de la bonne reception
echo $SEPARATOR
echo "ls -l de $USER_DEST@$ADRESS_DEST:$BACKUP_DIR_DEST pour confirmer bonne reception :"
ssh $USER_DEST@$ADRESS_DEST ls -l $BACKUP_DIR_DEST
#Nettoyage de la sauvegarde local
echo $SEPARATOR
echo "Nettoyage de la sauvegarde local présente dans $BACKUP_DIR"
rm -f $BACKUP_DIR/svg._$annee$mois$jour.tar.bz2
#Fin du script de Sauvegarde de /home
echo $SEPARATOR
echo "Fin du script de Sauvegarde de /home"
echo $SEPARATOR