Faire une sauvegarde sur bande

06.06.2005 | Mis à jour le 07.06.2005 | marcori
3680 visiteurs  -  6 visiteurs aujourd'hui  -  1 commentaire

Réalisation d’un script de sauvegarde sur bande.

Dans le cadre de l’administration des sytème, la sauvegarde des données est un passage primordial, vital pour l’entreprise. Voici une petite réalisation permettant de sauvegarder un ou plusieurs dossier sur une bande. Le lecteur de bande est en général /dev/st0.

Contenu du script :


#!/bin/sh
#
# sauve.sh
# Script de sauvegarde de dossiers passés en paramètres sur une bande
# L'archive générée est une archive cpio compressée en bzip2
# Important: Pour restaurer les fichiers, il faut executer la commande:
# bzip2 -cd /dev/st0 | cpio -mui -d -H newc --no-absolute-filename
# Cette commande a pour effet de des-archiver /dev/st0 dans le dossier courant.
#

unset NbArgs
NbArgs=$#

#...............................................................................
# Tester le nombre d'argument. Si < 1, on sort !
#...............................................................................
if [ ${NbArgs} -lt 2 ]
then
  echo -e "Syntaxe incorrecte!\n$0 suffixe_log dossiers_a_sauvegarder"
  exit 1
fi

unset LogFolder
LogFolder=/var/log/sauvegarde

unset LogFile
LogFile=${LogFolder}/log_$1_`date --iso-8601`.log

cd /

#...............................................................................
# On vient tester si le dossier des logs existe
#...............................................................................
if [ ! -d ${LogFolder} ]
then
  mkdir ${LogFolder}
fi

#...............................................................................
# On vient tester si le second argument contient un dossier existant
# Sinon, on génère une erreur, et on sort du programme
#...............................................................................
if [ ! -d $2 ]
then
  echo "ERREUR: Le dossier /$2 n'existe pas." >${LogFile}
  exit 1
fi

#...............................................................................
# On teste si le fichier contenant la liste des fichiers à sauvegarder existe
# Si tel est le cas, on le supprime
#...............................................................................
if [ -f /tmp/liste_backup.$$ ]
then
  rm -f /tmp/liste_backup.$$
fi

#...............................................................................
# On retire le premier argument de la liste des arguments, et pour chaque
# dossier, on vient constituer la liste des fichiers à sauvegarder
#...............................................................................
shift

unset Folder
for Folder in "$@"
do
  if [ -d ${Folder} ]
  then
     find ${Folder} -depth -xdev -type f -print >>/tmp/liste_backup.$$
  fi
done

#...............................................................................
# Debut de la sauvegarde
# On liste les fichiers trouvés, que l'on transmet à cpio
# La sortie standard de cpio est transmise à bzip2
# Le tout est sauvegardé sur le lecteur /dev/st0
#...............................................................................
echo "###############################################################################" >${LogFile}
echo "# Debut de la sauvegarde ($*): " `date +%d/%m/%Y\ %H:%M:%S` >>${LogFile}
echo "###############################################################################" >>${LogFile}

cat /tmp/liste_backup.$$ | nice -n 10 cpio -o -H newc 2>>${LogFile} | nice -n 10 bzip2 -c -s -q >/dev/st0

echo "###############################################################################" >>${LogFile}
echo "# Debut de la verification de la sauvegarde ($*): " `date +%d/%m/%Y\ %H:%M:%S` >>${LogFile}
echo "###############################################################################" >>${LogFile}
nice -n 10 bzcat -s -q /dev/st0 | nice -n 10 cpio -muit -H newc >/tmp/verif_backup.$$ 2>/dev/null

echo "###############################################################################" >>${LogFile}
echo "# Difference entre éléments à sauvegarder et éléments sauvegardés" >>${LogFile}
echo "# "`date +%d/%m/%Y\ %H:%M:%S` >>${LogFile}
echo "# < signifie Fichiers a sauvegarder et manquant sur la sauvegarde" >>${LogFile}
echo "###############################################################################" >>${LogFile}
diff /tmp/liste_backup.$$ /tmp/verif_backup.$$ >>${LogFile} 2>/dev/null

#...............................................................................
# Fin du script de sauvegarde + nettoyage
#...............................................................................
if [ $? -eq 0 ]
then
        echo "Sauvegarde ok" >>${LogFile}
else
        echo "probleme de sauvegarde" >>${LogFile}
fi

rm -f /tmp/liste_backup.$$
rm -f /tmp/verif_backup.$$

echo "###############################################################################" >>${LogFile}
echo "# Fin de la sauvegarde ($*): " `date +%d/%m/%Y\ %H:%M:%S` >>${LogFile}
echo "###############################################################################" >>${LogFile}

-  Copiez ce script dans /usr/local/bin/sauv_dat.sh
-  Editez votre crontab, et ajoutez la ligne suivante :

0 21 * * 1-6 /usr/local/bin/sauve_dat.sh cron etc opt home

-  Cela génèrera une sauvegarde sur bande des dossiers /etc, /opt, /home, et génèrera un log dans /var/log/sauvegarde/log_cron_YYYY-MM-DD.log

Bien entendu, ce script peut-être largement complété par d’autres automatismes, tels que prévenir l’administrateur par mail en cas de problème,etc.

1 commentaire

Faire une sauvegarde sur bande 22 mai 2007 Ivorhh
très joli script mais comment récuperer un seul fichier ?

Poster un nouveau commentaire


Modération de ce forum :

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d'indiquer ci-dessous l'identifiant personnel qui vous a été fourni. Si vous n'êtes pas enregistré, vous devez vous inscrire.


[s'inscrire] [mot de passe oublié ?]

Derniers Commentaires

Articles les plus consultés

Téléchargez Firefox !

Libricks.org est motorisé par le logiciel libre Spip 1.8.3 associé au squelette graphique BliP 0.91

16 rubriques ... 32 articles ... 20 commentaires ... 28 sites référencés ... 90 visiteurs par jour (129825 au total)

Haut de page | XHTML 1.0 | CSS 2