Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2006, 17h36   #1
Invité de passage
 
Responsable d'exploitation informatique
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Par défaut Appel d'un fichier dans un script shell

Bonjour à tous,

J'ai dans l'idée de faire une sauvegardes automatique des répertoires personnels sur un poste linux.

J'ai donc créer le script suivant :
Citation:
#!/bin/sh

# vérification si le paramètre $1 existe
if test -z "$1"
then
echo "usage: $0 {nom-utilisateur}"
exit 1
fi

DIR="/home/$1"
SAUV="/home/sauvegardes/$1.tar.gz"

#vérification du paramètre
if !(test -e $DIR)
then
echo "Utilisateur invalide: $1"
exit 2
fi

# Suppression d'une éventuelle sauvegarde
if test -e $SAUV
then
rm -fr $SAUV
fi

# création d'une nouvelle sauvegardes
tar -czf $SAUV $DIR
echo "le dossier $DIR archivé"
Déjà étant apprenti dans la programmation shell, si vous voyez une erreur, n'hésitez pas.

Le problème de ce programme est que je dois mettre le nom de l'utilisateur en argument (fastidieux s'il y a beaucoup d'utilisateurs).

De manière à automatiser, est-il possible de faire appel à un fichier texte contenant les utilisateurs que je veux sauvegarder pour lesquels le programme s'exécuterait.

Si vous pouviez m'aider? merci d'avance......
Herbauges est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 23h29   #2
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Bonjour,

Je peux te proposer un script dont voici le contenu:
Citation:
#!/bin/sh

## On spécifie le nom de l'utilisateur
echo -n "## Saisissez le nom de l'utilisateur ? "
read user

## Général
dir=/home/$user
backup=/home/$user.tar.gz

## On vérifie que l'utilisateur en question existe
if [ ! -d $user ]; then
echo "## L'utilisateur portant le nom $user est introuvable"
exit 1
fi

## Suppression et sauvegarde
if [ -f $backup ]; then
echo "## Une sauvegarde portant le nom $backup existe, elle va être supprimée"
rm -f $backup
echo "## Sauvegarde supprimée"
else
tar cvfz $backup $dir
echo "## Le dossier $dir est archivé"
fi
Mise en oeuvre. Nous allons appeler ce script backup.sh et nous allons le placer dans /usr/home/ . Pour l'exécuter, nous allons utiliser la commande sudo comme suit:
Ce qui donne ceci:
Code :
## Saisissez le nom utilisateur ? Robert
ps: cet utilisateur n'existe pas donc, la réponse sera:
Code :
## L'utilisateur portant le nom robert est introuvable
Nous pouvons faire un test avec l'utilisateur olivier comme suit:
Code :
## Saisissez le nom utilisateur ? olivier
Après avoir validé, tu patientes quelques secondes et tu obtiens le message:
Code :
## Le dossier /home/olivier est archivé
Un petit ls et tu obtiens ceci:
Dernier test on saisit toujours l'utilisateur olivier comme suit:
Code :
## Saisissez le nom utilisateur ? olivier
Après quelques secondes tu obtiens le message:
Citation:
## Une sauvegarde portant le nom /home/olivier.tar.gz existe, elle va être supprimer
## Sauvegarde supprimée
Effectivement, l'étape précédente à sauvegardé le home d'olivier donc on s'est retrouvé avec une archive tar.gz déjà présente donc supprimée.

Voilà, j'espère que cela te convient.

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 07h18   #3
Membre éclairé
 
Avatar de Lunixinclar
 
Inscription : juillet 2006
Messages : 384
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 384
Points : 342
Points : 342
Envoyer un message via MSN à Lunixinclar
Salut,
Code :
1
2
3
4
5
6
7
#!/bin/bash
jour=`date +%d%m%y`
while read ligne
 do nom=`echo $ligne`
 ARCHIVE="$nom-$jour".tar.gz
 echo $ARCHIVE
done < "liste.txt"
Lunixinclar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 10h13   #4
Invité de passage
 
Responsable d'exploitation informatique
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Bonjour et merci à tous les deux,

Je vais essayer de faire une synthèse de ces deux réponses pour créer mes sauvegardes automatiques.

Je vous tiens au courant si tout fonctionne....
Herbauges est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 11h51   #5
Rédacteur
 
Inscription : juillet 2004
Messages : 2 573
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juillet 2004
Messages : 2 573
Points : 1 973
Points : 1 973
Citation:
Envoyé par Lunixinclar
#!/bin/bash
Il faut faire attention au shebang utilisé (je comets souvent l'erreur) mais Bash n'est pas installé par défaut sur vos distributions. En revanche, sh lui est présent sur tous les systèmes.

++
__________________
.Olivier
Olivier Regnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2006, 12h03   #6
Invité de passage
 
Responsable d'exploitation informatique
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 1
Points : 1
Par défaut Ca marche

Merci à vous deux !

Grâce à vous, je me suis concocté un petit programme maison pour mes sauvegardes automatiques.

Ca fonctionne mais si vous avec des remarques sur ce que j'ai fait, n'hésitez pas.......
Citation:
#!/bin/sh

log=log_sauvegardes.txt
jour=`date +%d/%m/%y_%H:%M:%S`

##Supression des anciens logs de sauvegarde
if [ -f $log ]; then
rm -f $log
fi

#Boucle prenant les champs de sauvegardes.txt
while read ligne
do nom=`echo $ligne`

## Général
dir=/home/$nom
backup=/home/sauvegardes/$nom.tar.gz

## On vérifie que le répertoire en question existe
if [ ! -d $dir ]; then
echo "------------------------------------------------------" >> $log
echo "! Le répertoire portant le nom $dir est introuvable !" >> $log
echo "----------------------------------------------------------" >> $log
exit 1
fi

## Suppression et sauvegarde
if [ -f $backup ]; then
rm -f $backup
echo "Ancienne sauvegarde $backup supprimée" >> $log
fi

## création de la sauvegardes
echo $jour >> $log
tar cvfz $backup $dir >> $log
echo "Le dossier $dir est archivé" >> $log
echo "-" >> $log
echo "-" >> $log

done < "sauvegardes.txt"

echo "-------------" >> $log
echo "" >> $log
echo "Fin de la sauvegardes" >> $log
echo $jour >> $log
NB: j'ai créé un fichier sauvegardes.txt contenant les différents répertoires que je souhaite sauvegarder.
Herbauges est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web