Script de backup linux – Partie 1-6



Toute donnée importante doit être sauvegardée. Pour éviter de le faire à la main, on automatise au maximum. Pour cela,  j’ai créé un petit script de sauvegarde, utilisant des sous-scripts, et un partage nfs. L’utilité des sous-scripts est de compartimenter les rôles des scripts : en cas de plantage, on peut faire un « kill » d’un sous-script, sans arrêter tout le processus de sauvegarde. De plus, toute modification de script devient plus ciblée et compréhensible.

Schéma du script de backup :

je fais tourner le script de sauvegarde SUR la machine à sauvegarder.

La machine qui doit sauvegarder ses propres répertoires va se connecter à un serveur de sauvegarde en NFS, afin d’y créer des dossiers datés et y déposer les fichiers à sauvegarder.

A la fin de la sauvegarde, un nettoyage des anciennes sauvegardes s’effectue, afin de libérer de l’espace.

Un exercice intéressant serait de transformer cet ensemble de script de backup en faisant en sorte que LE SERVEUR DE SAUVEGARDE se connecte à la machine à sauvegarder …    😉

Voici donc LE « Script de backup en shell » ! Cette page est la première d’une série de 6 pages.

script_e_sauvegarde

Il s’agit du script principal. Il appelle des sous-scripts et trace les phases principales de la sauvegarde dans le fichier de log. C’est ce script que nous appellerons depuis les tâches planifiées avec crontab.

#!/bin/bash
 # SCRIPT PRINCIPAL DE SAUVEGARDE
 # nom du fichier : script_e_sauvegarde
 # AUTEUR : MultiMrPat
 # Dernière modification : 
 # -> Creation le 5dec2014 

# RECUPERATION DE LA DATE
 a=`date --rfc-3339=date`

# FICHIER DE LOG daté
 log="/script_sauvegarde_$a.log"

# Ecriture dans le fichier de log
 echo "*** `date +"%Y-%m-%d:%HH%MM"`: DEBUT SCRIPT BACKUP DU $a ***" >> $log

# VERIFICATION DE LA PRESENCE DES REPERTOIRES DE MONTAGE DANS /MNT

 sh /script_a_presence_repertoires_de_montage "$log"

# MONTAGE DE TOUS LES REPERTOIRES A SAUVEGARDER
 # Attention !! Partage NFS : le serveur doit être autorisé a se connecter !!

 sh /script_b_montage_repertoires "$log"

# CREATION DES REPERTOIRES CIBLE SUR LES SERVEURS DE SAUVEGARDE
 # Prend 3 arguments
 # Exemple : ./script_c_creation_repertoires "cheminbackup" "datedujour" "cheminlog"

sh /script_c_creation_repertoires "/mnt/RAIDON" "$a" "$log"

# COPIE DES FICHIERS
 # Prend 3 arguments
 # Exemple:
 # ./script_d_copie "/mnt/syno/montreuil_backup" "$a" "$log" &

sh /script_d_copie "/mnt/RAIDON" "$a" "$log"

# NETTOYAGE DES SAUVEGARDES ANCIENNES
 # Exemple : ./script_e_nettoyage_sauvegardes "/mnt/RAIDON" "datedujour" "cheminlog"

sh /script_e_nettoyage_sauvegardes "/mnt/RAIDON" "$a" "$log"

echo "`date +"%Y-%m-%d:%HH%MM"`: FIN $0 du $a *****" >> $log

La suite : Script de backup linux : Test de présence des répertoires de montage