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

  1. #1
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    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 régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    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!!!
    Amine

  3. #3
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    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 régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    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!
    Amine

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    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]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  6. #6
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    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 régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

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

  8. #8
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    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
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    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 régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    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."
    Amine

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    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.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  12. #12
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    Par défaut
    Le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     backup -start
    Starting RSYNC...
    grep: |: Aucun fichier ou répertoire de ce type
    grep: ~/rsync/backup.conf: Aucun fichier ou répertoire de ce type
    RSYNC finished.
    On en est pas loin je le sens.

  13. #13
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    Par défaut
    2Eurocents, tu supposes bien pour les chemins. Pour que cela soit plus pratique, je les ai mis à la fin du fichier, y'a rien après.

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par insupien
    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."
    Ce code ne peut pas fonctionner :
    • grep ne sait pas quel fichier traiter et bloque.
    • ~/rsync/backup.conf n'est pas une commande (ni un script) et ne peut recevoir la sortie d'une autre commande sur son entrée.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Attention, j'ai corrigé une erreur de syntaxe dans ma version du script avec awk
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par 2Eurocents
    Ce code ne peut pas fonctionner :
    • grep ne sait pas quel fichier traiter et bloque.
    • ~/rsync/backup.conf n'est pas une commande (ni un script) et ne peut recevoir la sortie d'une autre commande sur son entrée.

    erreur de frappe

    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."
    au fait c des "` `" non des " ' ' "
    Amine

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par insupien
    au fait c des "` `" non des " ' ' "
    Comme je l'ai écrit plus haut, il est préférable d'utiliser la syntaxe en $( ) plutôt que les ` `.

    En plus, $( ) est conforme POSIX.


    P.S.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  18. #18
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    Par défaut
    2Eurocents>ton script corrigé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # backup -start
    Starting RSYNC...
    /root/rsync/start: line 23: syntax error: unexpected end of file
    En ligne 22 y'a ca: echo "RSYNC finished." et après cette ligne il n'y a rien.

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /root/rsync/start: line 23: syntax error: unexpected end of file
    Cela signifie qu'il manque une quote, une parenthèse ou une accolade fermante quelquepart dans les lignes qui précèdent.

    As-tu copié/collé ou as tu recopié à la main ?
    A moins que je n'aie fait cet oubli, mais je ne le vois pas ...

    Peux tu nous reposter (copier/coller) la partie critique de ton script ?
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  20. #20
    Nouveau membre du Club
    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
    Points : 28
    Points
    28
    Par défaut
    C'etait bien un copier/collé que j'avais fais.

    J'ai tout bien vérifié.

    Maintenant j'ai plus de message d'erreur mais rien ne se passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    backup -start
    Starting RSYNC...
    RSYNC finished.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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