IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Appel d'un fichier dans un script shell


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 7
    Points
    7
    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 :
    #!/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......

  2. #2
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour,

    Je peux te proposer un script dont voici le contenu:
    #!/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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ## Saisissez le nom utilisateur ? Robert
    ps: cet utilisateur n'existe pas donc, la réponse sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ## L'utilisateur portant le nom robert est introuvable
    Nous pouvons faire un test avec l'utilisateur olivier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ## Saisissez le nom utilisateur ? olivier
    Après avoir validé, tu patientes quelques secondes et tu obtiens le message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ## Le dossier /home/olivier est archivé
    Un petit ls et tu obtiens ceci:
    Dernier test on saisit toujours l'utilisateur olivier comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ## Saisissez le nom utilisateur ? olivier
    Après quelques secondes tu obtiens le message:
    ## 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

  3. #3
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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"

  4. #4
    Futur Membre du Club
    Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    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....

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    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

  6. #6
    Futur Membre du Club
    Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Novembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Points : 7
    Points
    7
    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.......
    #!/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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel recursif dans un script shell
    Par schizophrenia dans le forum Linux
    Réponses: 5
    Dernier message: 17/03/2009, 21h06
  2. Erreur avec make appellé dans un script shell
    Par Neuromancien2 dans le forum C
    Réponses: 2
    Dernier message: 27/01/2008, 01h20
  3. comment faire appel d'une application java dans un script shell?
    Par moradbe dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/02/2007, 19h55
  4. Liste de fichier dans un script shell
    Par mirlidas dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/11/2006, 17h54
  5. Appel d'un programme C dans un script shell
    Par Spacy_green dans le forum Linux
    Réponses: 6
    Dernier message: 01/06/2006, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo