Faire une sauvegarde sur bande

06.06.2005 | Mis à jour le 07.06.2005 | marcori
2414 visiteurs  -  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 :

Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.


Emoticones :

(Pour insérer un émoticone, cliquez simplement sur l'image.)

:Thumbs::aime::bof::clindoeil::diable::en_colere::etoile::exclamation::fleur::interrogation::langue::lol::lunettes::mouai::pas_content::pleure_de_rire::rigolo::sourire::surprit::triste::xtra:

Titre :

Texte de votre message :

(Pour créer des paragraphes, laissez simplement des lignes vides.)


Lien hypertexte (optionnel)

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d'informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)


Qui êtes-vous ? (optionnel)


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 ... 30 articles ... 18 commentaires ... 28 sites référencés ... 50 visiteurs par jour (99041 au total)

Haut de page | XHTML 1.0 | CSS 2