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

Linux Discussion :

Associer la variable i avec plus chemins


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut Associer la variable i avec plus chemins
    Bonjour,

    Je fais un script 'start' qui va appeler la commande rsync avec ses options (options se trouvant dans le fichier de conf).
    Il faut que la commande s"execute autant de fois qu'il y a de chemins à sauvegarder (chemins qui se trouvent à la fin de mon fichier de conf).

    Je pensais à le faire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "Starting RSYNC..."
    for i in 'cat ~/rsync/backup.conf'; do
     $rsync $OPTIONS $dest
    ;done
    echo "RSYNC finished."
    Les chemins dans le fichier de conf, sont écrits ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Dossiers source
    /home/paco/backup
    /home/paco/rsync
    /home/paco/centos
    /home/paco/test
    Comment associer ma variable 'i' avec chaqu'un des chemins?


    Merci bien.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    il a l air de koi ton fichier de conf?

    si tu es sur que juste les chemins qui commence par "/" et que y en a un par ligne

    tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo "Starting RSYNC..."
    for i in 'grep "^/*" | ~/rsync/backup.conf'; do
     $rsync $OPTIONS $dest
    ;done
    echo "RSYNC finished."
    si j ai bien compris, tu n utilise pas la valeur de ta variable i c comme un compteur au fait!!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut
    Voici mon fichier de conf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    ############################
    #Fichier de configuration  #
    ############################
     
     
    [main]
    # envoi de mail
    export emailadm1=
     
    # dossier de sauvegarde
    export dest="/home/paco/archive"
     
    export INCREMENTDIR="$(date +%Y-%a-%d-%b)"
    export HEURE="$(date +%T)"
     
    # fichiers a exclure
    EXCLUDES=exclude.rsync
     
    # options de rsync
    export OPTIONS="-v --archive --compress --force --backup --backup-dir=$dest/'hostname'-$INCREMENTDIR"
     
    # Executable
    export rsync="/usr/bin/rsync"
     
    # Dossiers source
    /home/paco/backup
    /home/paco/rsync
    /home/paco/centos
    /home/paco/test

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    ok bah tu fé comme g dis

    tu fais un grep sur les lignes qui commence par "/"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "^/*" | cat fichier.conf
    et t a ttes les lignes que tu vx!

  5. #5
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "Starting RSYNC..."
    for dest in $(cat ~/rsync/backup.conf); do
      $rsync $OPTIONS $dest
    done
    echo "RSYNC finished."
    Ceci risque d'être plus efficace

    Autour du "cat", tu as utilisé des quotes simples ordinaires, mais il te fallait des backquotes (`) dans ce cas. La syntaxe $( ) est équivalente, en plus moderne, plus lisible et plus efficace (tolère les imbrications).

    De plus, ton indice de boucle prend les valeurs successives du cat, il faut l'utiliser pour le rsync, donc soit un rsync $i, soit il faut utiliser dest comme indice

    Bon courage.

    [Edit]
    Vu l'allure de ton fichier de conf, un simple cat ne sera pas suffisant, dans les $( )
    [/Edit]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut
    2Eurocents, ta solution me donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Starting RSYNC...
    /root/rsync/start: line 16: ############################: command not found
    /root/rsync/start: line 16: #Fichier: command not found
    /root/rsync/start: line 16: de: command not found
    /root/rsync/start: line 16: configuration: command not found
    /root/rsync/start: line 16: #: command not found
    /root/rsync/start: line 16: ############################: command not found
    /root/rsync/start: line 16: [main]: command not found
    /root/rsync/start: line 16: #: command not found
    /root/rsync/start: line 16: envoi: command not found
    /root/rsync/start: line 16: de: command not found
    /root/rsync/start: line 16: mail: command not found
    declare -x COLORTERM="gnome-terminal"
    declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-eAJYIE06pS"
    declare -x DESKTOP_SESSION="default"
    declare -x DESKTOP_STARTUP_ID=""
    declare -x DISPLAY=":0.0"
    declare -x GDMSESSION="default"
    declare -x GNOME_DESKTOP_SESSION_ID="Default"
    declare -x GNOME_KEYRING_SOCKET="/tmp/keyring-53r7Dj/socket"
    declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/paco/.gtkrc-1.2-gnome2"
    declare -x G_BROKEN_FILENAMES="1"
    declare -x HISTSIZE=""
    declare -x HOME=""
    declare -x HOSTNAME=""
    declare -x INPUTRC="/etc/inputrc"
    declare -x LANG="fr_FR.UTF-8"
    declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
    et ce n'est qu'une petite partie.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    essaye la mienne

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut
    La tienne me fait un cat de tout mon fichier conf et reste comme qui dirait "bloqué".
    J'essais vos solutions dans tous les sens, cad avec des {,[,(,",' mais rien n'y fait.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut
    Et en essayant de coupler vos 2 méthodes?

    Faire un genre comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "Starting RSYNC..."
    for i in $(grep "^/*" | cat ~/rsync/backup.conf); do
      $rsync $OPTIONS $i $dest
    done
    echo "RSYNC finished."

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "Starting RSYNC..."
    for i in 'grep "^/*" | ~/rsync/backup.conf'; do
     $rsync $OPTIONS $i
    ;done
    echo "RSYNC finished."

  11. #11
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par paco69
    2Eurocents, ta solution me donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Starting RSYNC...
     
    ... pas bon
    ... pas bon
    Ce n'est pas surprenant si on relis ce que j'ai édité dans mon message :

    Citation Envoyé par 2Eurocents
    [Edit]
    Vu l'allure de ton fichier de conf, un simple cat ne sera pas suffisant, dans les $( )
    [/Edit]
    Maintenant, avec un fichier de conf comme le tien, je ferai plutôt un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "Starting RSYNC..."
    for dest in $(awk '{ if (sortie==1) { print $0 }} /^#Dossiers source/ { sortie=1 }' ~/rsync/backup.conf); do
      $rsync $OPTIONS $dest
    done
    echo "RSYNC finished."
    Cela suppose qu'il n'y a rien à la suite des "Dossiers source", dans le fichier, mais se prête aussi à un aménagement ultérieur.

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

Discussions similaires

  1. Tableau croisé avec plus de 2 variables
    Par Oreo_ dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 18/07/2014, 17h03
  2. Associé une variable avec Visual Basic
    Par dada49 dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/03/2010, 07h06
  3. objMessage.AddAttachment avec pour chemin, une variable
    Par jipechibi dans le forum VBScript
    Réponses: 3
    Dernier message: 07/10/2008, 10h24
  4. Probleme du Voyageur de Commerce, mais plus compliquée, avec des chemins interdit
    Par Midou45 dans le forum Statistiques, Data Mining et Data Science
    Réponses: 6
    Dernier message: 03/01/2008, 13h14
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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