:: Apinc :: Archilinux :: Fro4nix :: GeexdB :: Gnuworld-fr :: Knoppix-fr ::  Lea-linux :: Linucie ::  Octoz ::  Les pingunautes ::

Purée de Linux

Dernière mise à jour de la page le 06 novembre 2006.

Menu

SCRIPT DE SAUVEGARDE MODE D'EMPLOI

Auteurs: Freddec | ebdomino

Préambule

Le script expliqué dans ce tutoriel n'est pas le résultat de mon travail, mais celui d' ebdomino, co-maître de ces lieux et Grand Gourou du canal IRC #knoppixfr sur irc.freenode.org (où je vous invite à nous retrouver). Qu'il en soit remercié...

Pré-requis

Mode d'emploi

Recopiez le script fourni et collez le dans un éditeur de texte.

Si vous utilisez un éditeur tel kvim évitez l'emploi de tabulations pour aligner les textes, j'ai constaté que cela pose parfois problème. (Insertion de caractères non imprimables ?) Classiquement les lignes avec # en début sont des commentaires et sont ignorées lors de l'exécution du script. Je précise que j'ai volontairement "sur-commenté" le script en pensant aux newbies qui, comme moi ,veulent être surs de comprendre ce qu'ils font.

Les commentaires vous indiquent pour chaque étape le but de la ligne de script pour cette étape:

Debut du script

#!/bin/sh
#Script de sauvegarde
#0 Etapes du Script
# Commentaires et/ou Syntaxe
#1 Montage du répertoire d'accueil
# Synthaxe mount /dev/PartitionAmonter
# Commentaire Le point de montage de /dev/Partition doit exister dans /etc/fstab
# Exemple 1 Montage 2eme partition primaire du 1er disque USB --> mount /dev/sda2
# Exemple 2 Montage 1ere partition primaire du 2nd disque USB --> mount /dev/sdb1
# Nota Pour un disque USB selon la version du Noyaux remplacer sd par ud --> mount /dev/uda1
# Exemple 3 Montage de la 3eme partition logique du second disque dur IDE
mount /dev/hdb7
#2 Delai pour être sur que le periphérique est monté
sleep 3
#Insertion de la date.
date=$(date)
set -- $date
#3 Suppression du(des) log(s) de la veille (anciens)
# Syntaxe rm -f /CheminFichierLog/NomFichierLog.*
# Exemple Suppression des logs resultatBackup.date se trouvant sous /home/toto/tmp/
rm -f /home/toto/tmp/resultatBackup.*
#4 Suppression du fichier de sauvegarde de la veille > création du fichier log du jour
# Syntaxe rm -f /mnt/PointMontage/CheminDossier/Dossier/*.bz2 > /CheminFichierLog/NomFichierLog.$3$2$6
# Commentaire DossierDestination et CheminFichierLog doivent exister avant le lancement du script
# Commentaire La variable $3$2$6 ajoute la date en fin de nom de fichier
# Exemple Suppression des sauvegardes précédentes (*.bz2) dans /mnt/hdb7/Backup , et création du log (resultatBackup.date) dans /home/toto/tmp/
rm -f /mnt/hdb7/Backup/*.bz2 > /home/toto/tmp/resultatBackup.$3$2$6
#5 Sauvegarde d'un dossier >> ajout des infos au fichier log précédemment créer
# Syntaxe tar cpjvf /mnt/PointMontage/CheminDossier/NomFichierSauvegarde.$3$2$6.tar.bz2 /CheminDossier/DossierASauver >> /CheminFichierLog/NomFichierLog.$3$2$6
# Exemple Sauvegarde du home de toto dans le fichier = backup_home.date.tar.bz2 sur hdb7/Backup/
tar cpjvf /mnt/hdb7/Backup/backup_home.$3$2$6.tar.bz2 /home/toto >> /home/toto/tmp/resultatBackup.$3$2$6
#6 Sauvegarde d'un autre dossier >> ajout des infos au fichier log a la suites des données précédentes
# Syntaxe Idem ci-dessus en changeant le nom du dossier a sauvegarder et le nom du fichier tar.bz2 de destination
# Exemple Sauvegarde du dossier /home/script
tar cpjvf /mnt/hdb7/Backup/script.$3$2$6.tar.bz2 /home/script >> /home/toto/tmp/resultatBackup.$3$2$6
#7 Démontage
# Syntaxe umount /dev/PartitionAdemonter
# Exemple Démontage de la partition utilisée dans les exemples
umount /dev/hdb7
#8 Fin

fin du script

Commencez par modifier le script pour l'adapter à vos besoins en vous inspirant des commentaires et des exemples.

Pour le modifier, vous devez connaitre:

    1.L'appellation exact du périphérique qui accueillera les sauvegardes (ex: /dev/hda1)
    2.Le point de montage de ce périphérique doit être défini dans /etc/fstab
    3.Le chemin d'accès absolu du (des) répertoire(s) à sauver (ex: /home/toto )
    4.Le chemin d'accès absolu du répertoire devant recevoir le fichier log de la sauvegarde (ex: /home/toto/tmp)
    5.Le dossier destiné à recevoir les fichiers de sauvegarde doit être créer sur le périphérique de sauvegarde AVANT la première exécution du script (ex: /mnt/hb7/sauvegarde/ ).

Une fois votre fichier adapté et enregistré, il faut le rendre exécutable

Admettons que votre fichier soit nommé ainsi: /home/toto/sauvegarde En root dans une console: chmod +x /home/toto/sauvegarde

Placez une copie de votre script dans un endroit où l'exécution des programmes est autorisée; dans le PATH (Classiquement /usr/bin ou /usr/sbin ou /usr/local/bin et son pendant)

En root dans une console: cp /home/toto/sauvegarde /usr/sbin/sauvegarde

Vous pouvez également le placer dans un dossier destiné à recevoir vos propres exécutables et script. (par ex: /home/script) moyennant quoi ce dossier devra être déclaré dans le PATH (/etc/profile)

Testez votre script

En root dans une console: /usr/sbin/sauvegarde

Si tout se passe bien vous devriez revenir au # après quelques messages sans gravité tel que: tar: Removing leading `/' from member names ou tar: /home/toto/tmp/resultatBackup.8avr2005: le fichier a été modifié durant sa lecture.

Vérifiez le résultat

Rendez vous dans le dossier de destination des sauvegardes, vous devriez y trouver un fichier NomDeFichier.date.tar.bz2 pour chacun des dossiers que vous avez sauvegardé. Ouvrez les (avec Ark par exemple) et constatez que vos fichiers sont dedans. Placez vous ensuite dans le dossier recevant le fichier log (dans notre exemple /home/toto/tmp). Ouvrez le fichier NomDeFichier.date et vous verrez une ligne générée pour chacun des fichiers sauvegardé.

Automatisez l'opération

Créez une tache cron qui exécutera votre script a des intervalles fixés par vous sans que vous n'ayez plus à vous en préoccuper. (1 fois par jour semble un choix logique).

Utilisez cron de la manière suivante:

Dans une console: crontab -l affiche les taches programmées (pour l'user si vous êtes en user pour root si vous êtes en root),

crontab -e édite la configuration (pour l'user si vous êtes en user pour root si vous êtes en root),

La syntaxe de cron est la suivante , pour définir la tache:

syntaxe: ce_que_c'est [valeur_possibles]
minute[0-59] heure[0-23] jour_du_mois[1-31] mois[1-12] jour_de_la_semaine[0-6] tache[executable]
Une étoile * indique toutes les occurrences, soit tous les jours, tous les mois, toutes les heures ...
Le 0 dans jour_de_la_semaine[0-6] correspond à dimanche

exemple avec crontab -l on obtient :

# Dossiers où chercher les programmes.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/scripts
# Redéfinit le shell par défaut.
SHELL=/bin/sh
#exemple de tache, sauvegarde quotidienne
20 19 * * * /home/scripts/sauvegarde

A 19h20, tous les jours du mois, tous les mois, tous les jours de la semaine, exécuter /home/scripts/sauvegarde

Astuce Vous pouvez si vous le désirez (et si vous avez de la place) ne pas supprimer les sauvegardes anciennes A l'étape 4 (Suppression du fichier de sauvegarde de la veille) Supprimez ceci rm -f /mnt/hdb7/Backup/*.bz2 Mais créez le fichier de log touch /home/toto/tmp/resultatBackup.$3$2$6 Pensez quand même dans ce cas à faire le ménage dans les vieilles sauvegardes de temps en temps pour éviter l'engorgement. Personnellement je conserve 1 semaine de recul dans mes sauvegardes.
N'oubliez pas de graver vos sauvegardes une fois par semaine

Commentaires

faute de frappe

Message posté par sana le 2006-05-10 à 23:22:30

revoir :
Une fois votre fois votre fichier adapté et enregistré, il faut le rendre éxécutable

Impossible de restaurer !!!

Message posté par pedro le 2006-06-10 à 13:02:08

Bonjour,
J'ai bien aimé ce petit script. Manque de pot j'ai eu un disque qui m'a laché. Et je n'arrive pas à extraire les fichiers des archives !! Il me dit opération effectué avec succès, mais les repertoires sont vides... J'ai essayé avec plusieurs logiciels d'archive, même en ligne de commande, ca fait toujours la même chose. Je pensait à une histoire de permissions mais même en root je n'y arrive pas. Merci de votre aide.

evolution 0.1

Message posté par Nom le 2006-08-12 à 02:05:34

je travaille sur linux [boot-;:!:!:;:!ù**$$^$¤¤]
je vous tiendrai au courant je travaille sur une verson suze installer avec ds l'orde croissant [gentoo 2000.0, hakin9 (2006) et kubuntoo mais ces dernier son pré config pré-crypter mais pas installer.
[,;:!ù*^$²²²°]

Ajouter un commentaire

Titre :

Par :
Courriel* :
Site web :

Commentaire :

* Le courriel ne sera pas affiché !

Google

sur :
le Web
Purée de Linux

Ce site devrait être valide XHTML 1.0 | © Purée de Linux